A.3 B.6 C.10 D.20
4、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是__ C _。 A. &aa[0]+1 B.&aa[1] C.&aa[0]++ D.aa+1 5、程序的输出结果是__ B__。 main()
{int i, k, a[10], p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf(\ }
A)20 B)21 C)22 D)23
10、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下: main() { int n,k;
?float score ,sum,ave; ?sum=0.0;
?for(n=1;n<=10;n++) ?{ for(k=1;k<=4;k++)
?? { scanf(“%f”,&score); sum+=score;} ?ave=sum/4.0;
?printf(“NO%d:%f\\n”,n,ave); ?? } }
上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是A
A) sum=0.0; B) sum+=score;
C) ave=sun/4.0; D) printf(“NO%d:%f\\n”,n,ave);
二、填空题(7分)
1、有定义int a[10]; ,写出语句片段:输出a数组中的10个整数。 __for(j=0; j<10; j++) printf( (\
2、定义 int a[5]={1,9,9, 2,11}; 则语句printf(“%d”,a[2]-a[4])的值是____-2________。 3、在C语言中,数组名是一个不可变的地址_________量,代表__第1个数组元素地址___________,不能对它进行赋值运算。
4、C语言程序在执行过程中,不检查数组下标是否越界。
5、设有数组a的定义为: int a[ ]={1, 2, 3, 4}; 若语句a[3]= --a[0]?a[1]++:a[2]++; 执行后,数组a的各元素依次为___0 2 4 3______。 6、以下程序的输出结果是 12345678 。 #include
{ long n; int a[10],i; scanf(\ for (i=0;n>0;i++) { a[i] = n; n /= 10; } for (i--;i>=0;i--) printf(\ }
输入:12345678
三、程序调试题(10分)
1、 程序的功能是判断一个输入的正整数是否是回文数,如:123321是回文数,12321也是
回文数。
【程序3-1】
main() {
int a[20],i,j;long d; printf(\
scanf(\
for(i=0;d;d/=10,i++) a[i]=d/10;
for(j=0;j
continue;
if(j>=i/2) printf(\回文\\n\}??
#include
int a[20],i,j;long d; printf(\
scanf(\
for(i=0;d;d/=10,i++) a[i]=d;
for(j=0;j=i/2)
}
printf(\回文\\n\
2、给定程序功能是:给一维数组a输入任意4个整数,并按下例的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。 4 1 2 3 3 4 1 2 2 3 4 1 1 2 3 4
【程序3-2】
#include
int a[M]; int i,j,k,m;
printf(\
for(i=0; i
for(j=M-1;j>0;j--) a[j]=a[j+1]; a[0]=k; }
for(m=0; m #include int a[M]; int i,j,k,m; printf(\ for(i=0; i for(j=M-1;j>0;j--) a[j]=a[j-1]; a[0]=k; for(m=0; m } } 四、程序填空题(30分) 1、输入n个无序的数放入数组a中,将相同的数删得只剩一个,输出删除后的数列。 【程序4-1】 #define N 30 main() { int a[N], i, j, k, n; n=N; for(i=0; i for (___________; j< n; j++ ) if (a[i]= = a[j] ) { for(k = j; k _____________ ; /*删除*/ ____________; /* 删除后,将数组元素的总数减1*/ } for ( i=0; i #define N 30 #include { int a[N], i, j, k, n; n=N; for(i=0; i { for(k = j; k a[k]=a[k+1]; /*删除*/ n--; /* 删除后,将数组元素的总数减1*/ } for ( i=0; i 五、编程题(36分) 1.数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。 #include \main() { int a[10]={121,433,134,645,1156,1465,7764,9988,11981,99990},i,j,b[9]; for(j=0,i=1;i<10;i++) b[j++]=a[i]/a[i-1]; for(j=0;j<9;j++) printf(\ } printf(\ 2.输入4个学生的4门课的成绩,计算出每位学生的平均分,然后按平均成绩由高到低的 顺序输出4门课的排序前的成绩表和排序后成绩表。(成绩表包括每位学生的4门课成绩,平均分)。 #define N 4 #include \main() { int no[10],s1[10],s2[10],s3[10],s4[10],i,j,k1,k2,k3,k4,k5;float av[10],temp; for(i=0;i scanf(\ av[i]=(s1[i]+s2[i]+s3[i]+s4[i])/4.0; } printf(\未排序成绩\\nstudent no s1 s2 s3 s4 aver\\n\ for(i=0;i printf(\ } for(i=0;i printf(\ } }