【例7-1】调查电视节目受欢迎程度。
/* 投票情况统计 */ #include<stdio.h> int main(void) { int count[9]; int i,response; for(i=1;i<=8;i++) count[i]=0; for(i=1;i<=1000;i++){ printf("input your response:"); scanf("%d",&response); if(response<1||response>8) printf("this is a bad response:%dd",response); else count[response]++; } printf("result: "); for(i=1;i<=8;i++) printf("%4d%4d ",i,count[i]); return 0; }
【例7-2】利用数组计算裴波那契数列的前10个数,即1,1,2,3,5,...,55,并按每行打印5个数的格式输出。
/* 输入裴波那契数列 */ #include<stdio.h> int main(void) { int i; int fib[10]={1,1}; for(i=2;i<10;i++) fib[i]=fib[i-1]+fib[i-2]; for(i=0;i<10;i++){ printf("%6d",fib[i]); if((i+1)%5==0) printf(" "); } return 0; }
【例7-3】顺序查找法。
/* 在数组中查找一个给定的数 */ #include<stdio.h> int main(void) { int i,flag,x; int a[5]; printf("Enter 5 integers:"); for(i=0;i<5;i++) scanf("%d",&a[i]); printf("Enter x:"); scanf("%d",&x); flag=0; for(i=0;i<5;i++) if(a[i]==x){ printf("Index is %d ",i); flag=1; break; } if(flag==0) printf("Not Found "); return 0; }
【例7-4】输入一个正整数n(1<n<=10),再输入n个整数,将他们存入数组a中。
/* 找出数组的最小值和它所对应的下标 */ #include<stdio.h> int main(void) { int i,index,n; int a[10]; printf("Enter n:"); scanf("%d",&n); printf("Enter %d integers:",n); for(i=0;i<0;i++) scanf("%d",&a[i]); index=0; for(i=1;i<n;i++) if(a[i]<a[index]) index=i; printf("min is %d ",a[index],index); return 0; }
【例7-5】选择排序法。
/* 选择法排序 */ #include<stdio.h> int main(void) { int i,index,k,n,temp; int a[10]; printf("Enter n:"); scanf("%d",&n); printf("Enter%d integers:",n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(k=0;k<n-1;k++) index=k; for(i=k+1;i<n;i++){ index=k; if(a[i]<a[index]) index=i; temp=a[index]; a[index]=a[k]; a[k]=temp; } printf("After sorted:"); for(i=0;i<n;i++) printf("%d",a[i]); printf(" "); return 0; }
【例7-6】二分查找法。
/* 二分查找法 */ #include<stdio.h> int main(void) { int a[10]={1,2,3,4,5,6,7,8,9,10}; int low,high,mid,n=10,x; printf("Enter x:"); scanf("%d",&x); low=0;high=n-1; while(low<=high) { mid=(low+high)/2; if(x==a[mid]) break; else if(x<a[mid]) high=mid-1; else low=mid+1; } if(low<=high) printf("Index is%d ",mid); else printf("Not Found "); return 0; }
【例7-7】将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及他的行下标和列下标,并输出该矩阵。
/* 找出矩阵中的最大值的行下标和列下标 */ #include<stdio.h> int main(void) { int col,i,j,row; int a[3][2]; printf("Enter 6 integers: "); for(i=0;i<3;i++){ for(j=0;j<2;j++) printf("%4d",a[i][j]); printf(" "); } row=col=0; for(i=0;i<3;i++) for(j=0;j<2;j++) if(a[i][j]>a[row][col]){ row=i; col=j; } printf("max=a[%d][%d]=%d ",row,col,a[row][col]); return 0; }
【例7-8】定义一个3*2的二维数组a数组元素的值由式给出,按矩阵的形式输出a。
/*按数组的形式输出二维数组*/ #include<stdio.h> int main(void) { int i,j; int a[3][2]; for(i=0;i<3;i++) for(j=0;j<2;j++) a[i][j]=i+j; for(i=0;i<3;i++){ for(j=0;j<2;j++) printf("%4d",a[i][j]); printf(" "); } return 0; }
【例7-9】输入一个整数n(1<n<=6),根据下式生成一个n*n的方阵,将该方阵转置(行列互换)后输出。
/* 方阵转置 */ #include<stdio.h> int main(void) { int i,j,n,temp; int a[6][6]; printf("Enter n;"); scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=i*n+j+1; for(i=0;i<n;i++) for(j=0;j<n;j++) if(i<=j){ temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } for(i=0;i<n;i++){ for(j=0;j<n;j++) printf("%4d",a[i][j]); printf(" "); } return 0; }
【例7-10】定义函数.....
【例7-11】回文.....
/* 判断字符串是否是回文 */ #include<stdio.h> int main(void) { int i,n,m; char s[10]; printf("Enter a string:"); i=0; while((s[i]=getchar())!=' ') i++; s[i]='