C语言习题(第一章~第四章:数组)
一、填空(20题)
1、设int a=7, b=6, c=5;则表达式(a+b)>(c*c)&&b==c||c>b的值为。
2、若int k=10,循环语句while(k=0) k=k-1; 执行次。
3、字符串"ab\n\\012\\\""的长度是____ ____。
4、在C语言中,二维数组元素在内存中的存放顺序是________。
5、若有定义:double x[3][5]; 则x数组中行下标的下限为________,列下标的上限为________。
6、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:_____ ___。
7、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}}; 则初始化后,a[1][2]得到的初值是________,a[2][1]得到的初值是_________。
8、下面程序以每行4个数据的形式输出a数组,请填空。
#define N 20
void main()
{int a[N],i;
for(i=0;i<N;i++) scanf("%d",________);
for(i=0;i<N;i++)
{if(________) _________
printf("%3d",a[i]); }
printf("\n"); }
9、下面程序的运行结果是________。
void main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{ for(j=0;j<=2;j++)
{ printf("%5d",a[i][j]);
b[j][i]=a[i][j]; }
printf("\n"); }
printf("array b:\n");
for(i=0;i<=2;i++)
{ for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n"); }
}
10、下面程序可求出矩阵a的两条对角线上的元素之和。请填空。
void main()
{ int a[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(___ _____;_____ ___; j--)
if((i+j)==2) sum2=sum2+a[i][j];
printf("sum1=%d,sum2=%d\n",sum1,sum2); }
11、下面程序的运行结果是________。
void main()
{ int a[10]={1,2,2,3,4,3,4,5,1,5};
int n=0,i,j,c,k;
for(i=0;i<10-n;i++)
{ c=a[i];
for(j=i+1;j<10-n;j++)
if(a[j]==c)
{ for(k=j;k<10-n;k++)
a[k]=a[k+1];
n++; }
}
for(i=0;i<(10-n);i++)
printf("%d",a[i]);
printf("\n"); }
12、下面程序的功能是给一维数组a输入任意6个整数,假设为:7 4 8 9 1 5 然后建立一个具有以下内容的方阵并打印。请填空。
void main()
{  int a[6],i,j,k,m;
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=5;i>=0;i--)
{ k=a[5];
for(_____ ___; j>=0; j--)
a[j+1]=a[j];
____ ____;
for(m=0;m<6;m++)
printf("%2d",a[m]);
printf("\n"); }
}
13、当从键盘输入18并回车后,下面程序的运行结果是________。
void main()
{ int x,y,i,a[8],j,u,v;
scanf("%d",&x);
y=x; i=0;
do{ u=y/2;
a[i]=y%2;
i++; y=u; }while(y>=1);
for(j=i-1; j>=0; j--)
printf("%d",a[j]); }
14、当运行以下程序时,从键盘输入:
则下面程序的运行结果是________。
#include<stdio.h>
#include<string.h>
void main()
{ int i;
char str[10],temp[10]="Control";
for(i=0;i<4;i++)
{ gets(str);
if(strcmp(temp,str)<0) strcpy(temp,str); }
puts(temp); }
15、下面程序段的运行结果是________。
char x[]="the teacher";
i=0;
while(x[++i]!='\0')
if(x[i-1]=='t') printf("%c",x[i]);
16、下面程序的功能是在三个字符串中出最小的。请填空。
#include<stdio.h>
#include<string.h>
void main()
{ char s[20],str[3][20];
int i;
for(i=0;i<3;i++) gets(str[i]);
strcpy(s,________);
if(strcmp(str[2],s)<0) strcpy(s,str[2]);
printf("%s\n",________); }
17、下面程序的功能是将字符数组a[6]={'a','b','c','d','e','f'}变为a[6]={'f','a','b','c','d','e'}。请填空。
#include<stdio.h>
void main()
{ char t,a[6]={'a','b','c','d','e','f'};
int i;
________;
for(i=5;i>0;i--)
________;
a[0]=t;
for(i=0;i<=5;i++) printf("%c",a[i]); }
18、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。
void main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
int k,s,i;
float ave;
for(k=s=i=0;i<10;i++)
{ if(a[i]%2!=0) ________;
s+=________;
k++; }
if(k!=0) {ave=s/k; printf("%d,%f\n",k,ave);}
}
19、下面程序的运行结果是________。
#include<stdio.h>
void main()
{ int i=5;
char c[6]="abcd";
do{ c[i]=c[i-1];}while(--i>0);
puts(c); }
二、选择(30题)
1、在C语言提供的合法的关键字是()
(A)swicth (B) cher (C)Case (D)default
2、若变量已正确定义并赋值,下面符合C语言语法的表达式是( )
A) a:=b+1 B) a=b=c+2C) int 18.5%3 D) a=a+7=c+b
3、C语言中运算对象必须是整型的运算符是( )
(A) %= (B) / (C) = (D) 〈=
4、有如下程序,运行该程序的输出结果是( )
main( )
{ int y=3,x=3,z=1;
printf(“%d %d\n”,(++x,y++),z+2); }
(A) 3 4 (B) 4 2 (C) 4 3 (D) 3 3
5、有如下程序
main( )
{ float x=2.0, y;
if(x<0.0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf(“%f\n”,y); }
该程序的输出结果是( )
(A) 0.000000 (B) 0.250000 (C) 0.500000 (D) 1.000000
6、有如下程序
main( )
{ int i, sum;
for(i=1;i<=3;sum++) sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是( )
(A) 6 (B) 3 (C) 死循环(D) 0
7、若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是( )
(A) &t[3][2] (B) t[3] (C) t[1] (D) t[2]
8、在以下一组运算符中,优先级最高的运算符是( )
(A)<= (B)= (C)% (D)&&
9、与十六进制数200等值的十进制数为()
(A) 256 (B) 512 (C) 1024 (D) 2048
10、若变量已正确定义并赋值,下面符合C语言语法的表达式是( )
(A) a:=b+1 (B) a=b=c+2 (C) int 18.5%3 (D) a=a+7=c+b
一维数组的定义和初始化11、在C语言中,一维数组的定义方式为:类型说明符数组名( )
(A) [常量表达式] (B) [整型表达式]
(C) [整型常量]或[整型表达式] (D) [整型常量或整型常量表达式]
12、以下对一维整型数组a的正确说明是( )
(A) int a(10); (B) int n=10,a[n];
(C) int n; (D) #define SIZE 10
scnaf("%d",&n); int a[SIZE];
int a[n];
13、若有说明:int a[3][4]={0}; 则下面正确的叙述是( )
(A) 只有元素a[0][0]可得到初值0
(B) 此说明语句不正确
(C) 数组a中各元素都可得到初值,但其值不一定为0
(D) 数组a中每个元素均可得到初值0
14、下面程序( )(每行程序前面的数字表示行号)
1 void main()
2 { int a[3]={3*0};
3 int i;
4 for(i=0;i<3;i++) scanf("%d",&a[i]);
5 for(i=1;i<3;i++) a[0]=a[0]+a[i];

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。