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