C语言程序设计等级考试习题汇编1.docx
- 文档编号:23136190
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:35
- 大小:29.94KB
C语言程序设计等级考试习题汇编1.docx
《C语言程序设计等级考试习题汇编1.docx》由会员分享,可在线阅读,更多相关《C语言程序设计等级考试习题汇编1.docx(35页珍藏版)》请在冰豆网上搜索。
C语言程序设计等级考试习题汇编1
C语言程序设计等级考试习题汇编
分章节练习题汇编
数组
一、判断题
1.数组a[5]表示a数组有5个元素,下标从1到5。
F
2.数组的大小不依赖于程序运行过程中变量的值。
T
3.在C中,变量和数组都必须先定义,然后使用。
T
4.intnew[8]={0,0,0,0,0,0,0,0}等价于intnew[8]={0*8}。
F
5.inta[3][2]={{1,1,1},{2,2,2},{3,3,3}}等价于inta[3][2]={{1},{2},{3}}。
F
6.用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。
T
7.数组的名称其实是数组在内存中的首地址。
T
8.如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数组元素会被自动初始化为最后一个给定元素的值。
F
9.当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改。
T
10.C语言不检查数组的下标是否越界。
T
二、单项填空题
1.若数组名作实参而指针变量作形参,函数调用实参传给形参的是(D)
A.数组的长度B.数组第一个元素的值
C.数组所有元素的值D.数组第一个元素的地址
2.已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是(C)
A.数组a和b的长度相同B.a数组长度小于b数组长度
C.a数组长度大于b数组长度D.上述说法都不对
3.以下能正确定义一维数组的选项是(B)
A.inta[5]={0,1,2,3,4,5}B.chara[]={0,1,2,3,4,5}
C.chara={'A','B','C'}D.inta[5]="0123"
4.有以下语句:
intb;charc[10];,则正确的输入语句是(B)
A.scanf("%d%s",&b,&c)B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c)D.scanf("%d%s",b,&c);
5.已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是(C)
A.数组a和b的长度相同B.a数组长度小于b数组长度
C.a数组长度大于b数组长度D.上述说法都不对
6.以下语句或语句组中,能正确进行字符串赋值的是(C)
A.char*sp;*sp="right!
";B.chars[10];s="right!
";
C.chars[10];*s="right!
";D.char*sp="right!
";
7.有以下程序
main()
{chars[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
程序运行后的输出结果是(A)
A.15B.16C.12D.59
8.有以下程序
main()
{intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf("%4c",'');
for(j=_____;j<4;j++)printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角
1234
678
1112
16
则在程序下划线处应填入的是(B)
A.i-1B.iC.i+1D.4-i
9.下面程序(C)(每行程序前面的数字表示行号)
1main()
2{
3floata[10]={0,0};
4intI;
5for(i=0;i<3;i++)scanf(“%d”,&a[i]);
6for(i=1;i<10;i++)a[0]=a[0]+a{i};
7printf(“%f\n”,a[0]);
8}
A.没有错误B.第3行有错误观点C.第5行有错误D.第7行有错误
10.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为(D)..(假设a[0][0]位于数组的第一个位置上)。
A.i*m+jB.j*m+IC.i*m+j-1D.i*m+j+1
11.若有以下程序段:
······
inta[]={4,0,2,3,1},I,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
a[j+1]=t;
······
则此程序的功能是(B)
A.对数组a进行插入排序(升序)B.对数组a进行插入排序(降序)
C.对数组a进行选择排序(升序)D.对数组a进行选择排序(降序)
三、程序填空题
题1
CBBAD
以下是使用数组来处理并打印斐波那契数列的前二十项的程序。
打印时,每行打印10个数字。
斐波那契数列的格式为:
当n=0时,f[0]=0,当n=1时,f[1]=1,当n>1时,f[n]=f[n-1]+f[n-2]。
【程序】
#include,stdio.h.
main()
{int___
(1)____;
intline=0,j;
fbnq[0]=0;
fbnq[1]=1;
for(j=___
(2)____;j<20;j++)
___(3)____;
for(j=0.j<20;j++);
{print(%d,”fbqn[j]);
___(4)____;
if(line==10)
|{___(5)____
printf(“\n”);
}
}
return
(1);
}
1.A.FbnqB.Fbnq[1to20]C.Fbnq[20]D.Fbnq
2.A.1B.2C.0D.-1
3.A.fbnq[j]=fbnq[j-1]+fbnq[j]B.fbnq[j]=fbnq[j-1]+fbnq[j-2]
C.fbnq[j]=fbnq[0]+fbnq[1]D.fbnq[j+1]=fbnq[j-1]+fbnq[j]
4.A.line++B.line--C.line=line-1D.line=0
5.A.line++B.line--C.line=line-1D.line=0
题2.
有已排序好的字符串a,下面的程序是将字符串s中的每个字符升序的规律插入到a中,请选择填空。
【程序】
#include
main()
{chara[20]=”cehiknqtw”;
chars[]=“fbla”;
inti,k,j;
BB
for(k=0;s[k]>!
=’\0’);k++)
{j=0;
while(k=0;s[k]>=a[j]&&a[j]!
=’\0’)j++;
for(____
(1)____)____
(2)____;
a[j]=s[k];
}
puts(a);
}
1.A.i=strlen(a)+k:
;i>=j;i--B.i=strlen(a);i>=j;i--
C.i=j;i<=strlen(a)+k;i++D.i=j;i<=strlen9a);i++
2.A.a[i]=a[i+1]B.a[i+1]=a[i]C.a[i]=a[i-1]D.a[i-1]=a[i]
ADA
题3
下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中,请选择填空。
【程序】
#include
main()
{chara[]=”acegikm”;
charb[]=”bdfhjlnpq”;
charc[80],*p
inti=0,j=0,k=0;
while(a[i]!
=’\0’&&b[j]!
=’\0’)
{if(a[i]
(1)____}
else{____
(2)____}
k++;
}
c[k]=’\0’;
if(____(3)____)p=b+j;
elsep=a+i;
strcat(c,p);
puts(c);
}
1.A.c[k]=a[i];i++B.c[k]=a[j];i++C.c[k]=a[i];j++D.c[k]=a[j];j++
2.A.c[k]=a[i];i++B.c[k]=a[j];i++C.c[k]=a[i];j++D.c[k]=a[j];j++
3.A.a[i]==’\0’B.a[i]!
=’\0’C.a[i-1]==’\0’D.a[i-1]!
=’\0’
题4
下面程序以每行4个数据的形式输出a数组,请选择填空。
【程序】
#defineN20
BAC
main()
{inta[N],I;
for(i=0;i (1)____) {if(____ (2)____)____(3)____ printf(“%d”,a[i]); } printf(“\n”); } 1.A.a[i]B.&a[i]C.aD.a[N] 2.A.i%4==0B.i%4! =0C.i/4==0D.i/4! =0 3.A.printf(“\r”)B.printf(“\w”)C.printf(“\n”)D.printf(“\b”) CBC 题5 下面程序将二维数组a的行和列元素互换后存另一个二维数组b中,请选择填空。 【程序】 Main() {inta[2][3]={(1,2,3),(4,5,6)}; intb[3][2],I,j; printf(“arraya: \n”); for(i=0;i<=1;i++) {for(j=0;____ (1)____;j++) {printf(“%5d”,a[i][j]); ____ (2)____; } printf(“\n”); } printf(“arrayb: \n”); for(i=0;____(3)____;i++) {for(j=0;j<=1;j++) printf(“%5d”,b[i][j]); printf(“\n”) } } 1.A.j<1B.j<=1C.j<=2D.j<2 2.A.b[j][i]=a[j][i]B.b[j][i]=a[i][j]C.b[i][j]=a[j][i]D.b[i][j]=a[i][j] 3.A.j<1B.j<=1C.j<=2D.j<2 题6 下面程序可求出矩阵a的两条对角线的元素之和,请选择填空。 【程序】 Main() {inta[3][3]={1,3,6,7,9,11,14,15,17,},sum1=0,sum2=0,i,j; for(i=0;i<3;i++) for(j=0;j<=3;j++) if(i==j)sum1=sum1+a[i][j]; for(i=0;i<3;i++) for(____ (1)____;____ (2)____;j--) if((i+j)==2)sum2=sum2+a[i][j]; print(“sum1=%d,sum2=%d\n”,sum1,sum2); } 1.A.j=0B.j=1C.j=2D.j=3 CA 2.A.j>=0B.j>=1C.j>=2D.j>=3 题7 以下程序可求出所有的水仙花数。 (提示: 所谓水仙花数是指一个三位正数,其各位数字的立方和等于该正整数)请选择填空。 【程序】 Main() {intx,y,z,a[8],m,i=0; BBA printf(“thespecialnumbersare(inthearrangeof1000): \n”); for(____ (1)____;m++) {x=m/100; y=____ (2)____; z=m%10; if(x*100+y*10+z=x*x*x+y*y*y+z*z*z){____(3)____;i++;} } for(x=0;x printf(“%6d”,a[x]); } 1.A.m=100;m<999B.m=100;m<1000 C.m=1;m<1000D.m=1;m<999 2.A.m/10B.m/10-x*10C.m%10–x*10D.m%10 3.A.a[i]=mB.a[i]=xyzC.a[i+1]=mD.a[i+1]=xyz ACB 题8 下面程序的功能是生成并打印某数列的前20项,该项数列第1,2项分别为0和1,以后每个奇数编号的项是前两项的和,偶数编号的项是前两项差的绝对值。 生成的20个数存在一维数组x中,并按每行4项的形式输出,请选择填空。 【程序】 Main() {intx[21],I,j; x[1]=0;x[2]=1; i=3; do{ x[i]=____ (1)____; x[i+1]=____ (2)____; i=____(3)____; }while(i<=20); for(i=;i<=20;i++) {printf(“%5d”,x[i]); if(i%4==0) printf{“\n”}; } } 1.A.x[i-1]+x[i-2]B.x[i+1]+x[i+2]C.x[i]+x[i-1]D.x[i]+x[i+1] 2.A.x(i-1)-x(i)B.x(i)-x(i-1) C.fabs((double)(x(i)-x(i-1))D.fabs((double)(x(i-1)-x(i-2)) 3.A.i+1B.i+2C.i+3D.i-1 BA 题9 下面程序的功能是检查一个二维数组是否对称,请选择填空。 【程序】 Main() {inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4,}; inti,j,found=0; for(j=0;j<4;j++) for(____ (1)____;i<4;i++) if(a[i][j]! =a[j][i]){____ (2)____;break;} if(found)printf(“No”); elseprintf(“Yes”); } 1.A.i=jB.i=j+1C.i=0D.i=1 2.A.found=1B.found=0C.found=trueD.found=false DBA 题10 a是一个3×3的矩阵,输入a的元素,如果a是下三角矩阵,输出“YES”,否则,输出“NO”。 (下三角矩阵,即对角线以上的元素都为0,主对角线为从矩阵的左上角至右下角的连线。 ) 【程序】 #include voidmain() {intflag,i,k; inta[3][3]; for(i=0;i<3;i++) for(k=0;k<3;k++); scanf("%d”,&a[i][k]); (1); for(i=0;i<3&&flag;i++) for(k=i+1;k<3&&flag;k++) if((2))(3); if(flag)printf("YES\n"); elseprintf("NO\n"); } 1.A.flag=0B.flag==0C.flag==1D.flag=1 2.A.a[k][i]! =0B.a[i][k]==0C.a[i][k]! =0D.a[k][i]=0 3.A.flag=0B.flag==0C.flag==1D.flag=1 CD 题11 输入一个字符串,将其中的大写字母转换为小写字母后输出。 【程序】 #include voidmain() {charstr[80]; intk; gets(str); for(k=0;str[k]! =’0’;k++); if(1)2; puts(str); } 1.A、’A’<=str[k]<=’Z’B、str[k]>’A’&&str[k]<’Z’ C、str[k]>=’A’&&str[k]<=’Z’D、str[k]>=’A’‖str[k]<=’Z’ 2.A、str[k]=str[k]-32B、str[k]=str[k]-‘a’+’A’ C、tolower(str[k])D、str[k]=str[k]-‘A’+’a’ 四、程序阅读题 1. 45 有以下程序 main() { intp[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7)if(p[i]%2)j+=p[i]; printf("%d\n",j); } 请写出程序运行后的输出结果 2. 72 有以下程序 main() { chara[7]="a0\0a0\0";inti,j; i=sizeof(a);j=strlen(a); printf("%d%d\n",i,j); } 请写出程序运行后的输出结果 3.有以下程序 voidf(int*x,int*y) { intt; t=*x;*x=*y;*y=t; } main() { inta[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p {f(p,q);p++;q--;} for(i=0;i<8;i++)printf("%d,",a[i]); ) 写出程序运行后的输出结果 4. 345 8,7,6,5,4,3,2,1, 有以下程序 main() { inta[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++)p[i]=i; for(i=0;i<3;i++)printf("%d",a[1][i]); } 写出程序运行后的输出结果 5. 10 20 00 有以下程序 main() { inta[3][2]={0},(*ptr)[2],i,j; for(i=0;i<2;i++) {ptr=a+i;scanf("%d",ptr);ptr++;} for(i=0;i<3;i++) {for(j=0;j<2;j++)printf("%2d",a[i][j]); printf("\n"); } } 若运行时输入: 123<回车>,写出输出结果 6. abcbcc 写出以下程序运行后的输出结果 #include main() {charch[]="abc",x[3][4];inti; for(i=0;i<3;i++)strcpy(x[i],ch); for(i=0;i<3;i++)printf("%s",&x[i][i]); printf("\n"); } 7. 6385 有如下程序 main() {charch[2][5]={“6937”,”8254”},*p[2]; inti,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>’\0’;j+=2) s=10*s+p[i][j]-‘0’; printf(“%d\n”,s); } 写出该程序的输出结果 8.有如下程序段,写出输出的结果 charstr[6]; str[0]=”a”; acegik for(intj=0;j<6;j++) for(intk=j+1;k<6;k++) str[k]=str[j]+2; printf(“%.6s”,str); 五、程序设计题 1.请用户输入一个含有12个浮点数的一维数组,请分别计算出数组中所有的正数的和以及所有的负数的和。 #include main() {floatdata[12];/*存放浮点数的一维数组。 */ floatresult1=0.0,result2=0.0//将要用于分别存放正数和,负数和 printf(“pleaseinuput12floatnumbers: \n”); for(intI=0;I<12;I++) scanf(“f”,&data[I]); for(I=0;I<12;I++) {if(data[I]>0.0) result1+=data[I]; else result2+=data[I]); } printf(“thesumofallthepositivenumberis%.3f\n”,result1); printf(“thensumofallthenegitivenumbersis%.3f\n”,result2); return (1); } 2.编写一个程序,输出一个杨辉三角形。 #include defineM10 voidmain() { intI,j,k,n; inta[M][M]; printf(“输入n: ”); scanf(“%d”,&n]); if(n { for(i=0;i<=n+2;i++) for(j=0;j<=n+2;j++) a[i][j]=0; a[0][1]=1; for(i=1;i<=n+1;i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j] for(i=1;i<=n+1;i++) { for(k=0;k<20-3*I;k++) printf(“”); for(j=1;j<=i;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 等级 考试 习题 汇编