心得:第一题是使用一维数组编程中的例题。
1.第一步在未排序的n个数(a[0]~a[n-1])中找到最小数,将它与a[0]交换。
2.第二步在剩下未排序的n-1个数(a[1]~a[n-1])中找到最小数,将它与a[1]交换。
...........
3.第n-1步在剩下未排序的两个数(a[n-2]~a[n-1])中找到最小数,将它与a[n-2]交换。
第二题与例题7-6相似。
第三题是使用二维数组编程中关于矩阵上三角的问题。下标规律为 i<=j
/* 1.选择法排序。输入一个正整数n (1<n<10),再输入n个正整数,将它们从大到小排序后输出。 试编写相应的程序。*/ #include<stdio.h> int main (void) { int i,index,k,n,t; int a[10]; printf("enter n:"); scanf("%d",&n); printf("enter %d integer;",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++) if(a[i]<a[index]) index=i; t=a[index]; a[index]=a[k]; a[k]=t; } printf("after sorted:"); for(i=0;i<n;i++) printf("%4d",a[i]); printf(" "); return 0; }
/*求一批整数中出现最多的数字*/ #include<stdio.h> int main(void) { int n,i,max=0,temp,time[10]={0}; printf("Enter n:"); scanf("%d",&n); printf("Enter %d integers:",n); for(i=0;i<n;i++){ scanf("%d",&temp); while(temp!=0){ time[temp%10]++; temp/=10; } } for(i=0;i<10;i++){ if(max<time[i]) max=time[i]; } printf("出现最多次数%d次的数字是:",max); for(i=0;i<10;i++) if(time[i]==max) printf("%d ",i); printf(" "); return 0; }
/* 3.判断上三角矩阵。输入一个正整数n(1<n<6)和n阶方阵a中的元素, 如果a是上三角矩阵,输出"YES",否者输出“NO”。上三角矩阵 指主对角线以下的元素都为零的矩阵。主对角线为从矩阵的左上角至右下角的连线。 试编写相应程序。*/ #include<stdio.h> int main(void) { int a[6][6],flag,i,j,n; printf("enter n:"); scanf("%d",&n); printf("enter array: "); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); flag=1; for(i=0;i<n;i++) for(j=0;j<i;j++) if(a[i][j]!=0) flag=0; if(flag) printf("YES "); else printf("NO "); return 0; }