第六章 数组 习题答案
一、选择题 1 2 3 4 5 6 7 8 9 C D B D C D D B C 11 12 13 14 15 16 17 18 19 D B B C D D C D B 21 22 23 24 25 26 27 28 29 D D D D B D C C D 二、填空题 1、y<4 x+y==2 2、0 4 3、0 6
4、&a[i] i%4==0 printf(\5、i+j==3_ a[i][j] 6、12
7、a[i][j]+b[i][j] printf(“\\n”) 8、按行存放 9、( a[i]>a[j])
10、将串str2复制到串str1中后再将串str3连接到串str1之后 三、阅读题 1、如右图所示 2、AQM 3、AzyD 4、9198
5、如右图所示
1题答案 5题答案 6、92
7、1,2,5,7, 8、2
9、v1=5,v2=8,v3=6,v4=1 10、a*b*c*d* 四、编程题
1、以十个数排序为例,进行由小到大排 (1)选择法排序 #include
{int i,j,n=10,p,a[10];int temp;
for(i=0;i for(i=0;i { p=i; /*假定第i趟中最小数的位置是i*/ 10 C 20 D 30 C for(j=i+1;j if(a[j] if(i!=p) {temp=a[i];a[i]=a[p];a[p]=temp;} } printf(\排序后的一维数组:\\n\ for(i=0;i (2)比较法排序 #include {int i,j,n=10,p,a[10];int temp; for(i=0;i for(i=0;i if(a[i]>a[j]) {temp=a[i];a[i]=a[j];a[j]=temp;} printf(\排序后的一维数组:\\n\ for(i=0;i 2、以在十个数据(由小到大排列的十个数)中插入一个数为例 #include {int a[11],i,n=10,k; int point; printf(\请输入原始数据:\\n\ for(i=0;i for(i=0;i scanf(\ /*输入要插入的数据*/ for(i=0;i if(a[i]>k) {point=i; break;} if(i!=n) {for(i=n;i>point;i--) a[i]=a[i-1]; a[point]=k;} /*从后向前方式*/ else a[n]=k; printf(\插入后的数是:\\n\ for(i=0;i 3、#include {int i,j,upp,low,dig,spa,oth; char text[3][80]; upp=low=dig=spa=oth=0; for (i=0;i<3;i++) { printf(\ gets(text[i]); for (j=0;j<80 && text[i][j]!='\\0';j++) {if (text[i][j]>='A'&& text[i][j]<='Z') upp++; else if (text[i][j]>='a' && text[i][j]<='z') low++; else if (text[i][j]>='0' && text[i][j]<='9') dig++; else if (text[i][j]==' ') spa++; else oth++; } } printf(\ printf(\ printf(\ : %d\\n\ printf(\ : %d\\n\ printf(\ : %d\\n\ return 0; } 5、以5个数逆序存放为例,将n值修改,则可实现n个数逆序存放 #include #define n 5 //n为符号常量,值为5 void main( ) {int i,a[n],t; for(i=0;i for(i=0;i 6、杨辉三角 #include if(j==0||i==j)a[i][j]=1; else a[i][j]=a[i-1][j]+a[i-1][j-1];