c語言練習

來源:互聯網
上載者:User

1、指標練習:交換兩個指標變數的值

一級指標:*p,*q;

 int a=0,b=12;    int *p=&a,*q=&b;    printf("交換前:\n%d,%d,%d\n",p,*p,&p);    printf("%d,%d,%d\n",q,*q,&q);    swap(p, q);      printf("交換後:\n%d,%d,%d\n",p,*p,&p);    printf("%d,%d,%d\n",q,*q,&q);
void swap(int *x,int *y){ /*不用中間變數    用異或運算 同樣得到結果*/    *x ^= *y;         *y ^= *x;         *x ^= *y;     }

輸出結果:

交換前:

1606416820,0,1606416808

1606416816,12,1606416800

交換後:

1606416820,12,1606416808

1606416816,0,1606416800

交換兩個指標變數所指向的地址:

int a=0,b=12;    int *p=&a,*q=&b;    printf("交換前:\n%d,%d,%d\n",p,*p,&p);    printf("%d,%d,%d\n",q,*q,&q);    swap(&p, *q);      printf("交換後:\n%d,%d,%d\n",p,*p,&p);    printf("%d,%d,%d\n",q,*q,&q);void swap(int *x,int *y){ /*不用中間變數    用異或運算 同樣得到結果*/    *x ^= *y;         *y ^= *x;         *x ^= *y;     }

輸出結果:

交換前:

1606416820,0,1606416808

1606416816,12,1606416800

交換後:

1606416816,12,1606416808

1606416820,0,1606416800

用二級指標交換兩個一級指標變數所指向的地址:

int a=2;    int b=3;    int *p=&a;    int *q=&b;    int **pp=&p;//定義二級指標    int **qq=&q;//定義二級指標    printf("交換前:\n%d,%d,%d  \n",p,*p,&p);    printf("%d,%d,%d \n",q,*q,&q);    swap(pp,qq);    printf("交換後:\n%d,%d,%d   \n",p,*p,&p);    printf("%d,%d,%d \n",q,*q,&q);

void swap(int **x,int **y){    int * temp;    temp=*x;    *x=*y;    *y=temp;}

輸出結果:

交換前:

1606416812,2,1606416800  

1606416808,3,1606416792 

交換後:

1606416808,3,1606416800   

1606416812,2,1606416792 

2、列印出九九乘法表

void jiujiu(){    for(int i=1;i<10;i++){        for(int j=1;j<i+1;j++){                       printf("%d*%d=%d\t",j,i,i*j);                    }        printf("\n");    }}

輸出結果:

1*1=1

1*2=2
2*2=4

1*3=3
2*3=6 3*3=9

1*4=4
2*4=8 3*4=12
4*4=16

1*5=5
2*5=10 3*5=15
4*5=20 5*5=25

1*6=6
2*6=12 3*6=18
4*6=24 5*6=30
6*6=36

1*7=7
2*7=14 3*7=21
4*7=28 5*7=35
6*7=42 7*7=49

1*8=8
2*8=16 3*8=24
4*8=32 5*8=40
6*8=48 7*8=56
8*8=64

1*9=9
2*9=18 3*9=27
4*9=36 5*9=45
6*9=54 7*9=63
8*9=72 9*9=81

3、任意輸入兩個整數,用兩種方法輸出最大的那個,分別用條件陳述式和算術運算得出最大值;

//第一種方法:判斷語句void bijiao1(){    int a,b;    printf("請輸入兩個整數a,b:");    scanf("%d%d",&a,&b);    int max=a>b?a:b;    printf("最大值是:%d\n",max);}//第二種方法:算術運算void bijiao2(){    int a,b;    printf("請輸入兩個整數a,b:");    scanf("%d%d",&a,&b);    int max=((a+b)+abs(a-b))/2;//如果想得出最小,請寫:int min=((a+b)-abs(a-b))/2;    printf("最大值是:%d\n",max);}

輸出結果:

請輸入兩個整數a,b:1 2

最大值是:2

請輸入兩個整數a,b:3 4

最大值是:4

4、列印一個心形:

    printf("  * *   * *\n");    printf(" *    *    *\n");    printf(" *         * \n");    printf("  *       *\n");    printf("   *     *\n");    printf("    *   *\n");    printf("      *\n");

5、列印出楊輝三角形

#include <stdio.h>int main (int argc, const char * argv[]){    int a[10][10];    //把所有一位上的和末位上的賦成1    for(int i=0;i<10;i++){        a[i][0]=1;        a[i][i]=1;            }    //a[i][j]是它上面的左右兩 個    for(int i=2;i<10;i++){        for(int j=1;j<i;j++){            a[i][j]=a[i-1][j-1]+a[i-1][j];        }    }    //列印出楊輝三角形    for(int i=0;i<10;i++){        //輸出前面空格        for(int s=i;s<10;s++){            printf(" ");        }        for(int j=0;j<=i;j++){            printf("%d ",a[i][j]);        }        printf("\n");    }    return 0;}

輸出結果:

          1 

         1 1 

        1 2 1 

       1 3 3 1 

      1 4 6 4 1 

     1 5 10 10 5 1 

    1 6 15 20 15 6 1 

   1 7 21 35 35 21 7 1 

  1 8 28 56 70 56 28 8 1 

 1 9 36 84 126 126 84 36 9 1 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.