C试题
一、选择题:
1、以下对一维整型数组a的正确说明是
A int a(10);
B int n=10,a[n];
C int n;
D #define SIZ
E 10
scanf(“%d”,&n);int a[SIZE];
int [a];
2、若有说明:int a[10];则对a数组元素的正确引用是
A a[10]
B a[3.5]
C a (5)
D a [10-10]
3、在c语言中文,一维数组的定义方式为:类型说明符数组名
A[常量表达式] B[整型表达式]C[整型常量]或[整型表达式]D[整型常量]
4、以下能对二维数组a进行正确初始化的语句是
A int a[2][]={{1,0,1},{5,2,3}};
B int a[][3]={{1,2,3},{4,5,6}};
C int a[2][4]={{1,2,3},{4,5},{6}}
D int a[][3]={{1,0,1},{},{1,1}};
5、若有说明:int a[3][4]={0};则下面正确的叙述是
A只有元素a[0][0]可得到初值0
B 此说明语句不正确
C 数组a中文各元素都可得到初值,但其值不一定为0
D 数组a 中每个元素均可得到初值0
6、以下各组选项中,均能正确定义二维实型数组a的选项是
A float a[3][4];
B float a(3,4);
float a[] [4]; float a[3][4];
float a[3][]={{1},{0}} float a[][]={{0},{0}};
C float a[3][4];
D float a[3][4];
static float a[][4]={{0},{0}}; float a [3][];
auto float a [][4]={{0},{0},{0}}; float a[][4]
10、下面程序中文有错误的行是(每行程序前面的数字表示行号)
1 main()
2 {
3 int a[3]={1};
4 int i;
5 scanf(“%d”,&a);
6 for (i=1;i<3;i++) a[0]=a[0]+a[i];
7 printf(“a[0]=%d\n”,a[0]);
8 }
A 3
B    6
C 7
D    5
11、若二维数组a有m列,则计算机任一元素a[i][j]在数组中文位置的公式为(假设a[0][0]位于数组的第一个位置上。)scanf输入整型数组
A i*m+j
B j*m+i
C i*m+j-1
D i*m+j+1
12、以下不正确的定义语句是
A double x[5]={2.0 ,4.0,6.0,8.0,10.0};
B int y[5]={0,1,3,5,7,9};
C char cl[]={…1‟,‟2‟,‟3‟,‟4‟,‟5‟};
D char c2[5]=”ABCDE”;
13、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是]
A 2
B 3
C    4
D 无确定值
14、下面程序的运行结果是
main()
{int a[6][6],i,j;
for (i=1;i<6;i++)
for(j=1;j<6;j++)
a[i][j]=(i/j)*(j/i);
for(i=1;i<6;i++)
{for (j=1;j<6;j++)
printf (“%2d”,a[i][j])
printf(“\n”);}
}
A 11111
B 00001
C 10000
D 10001
11111 00010 01000 01010
11111 00100 00100 00100
11111 01000 00010 01010
11111 10000 00001 10001
15、下面程序段的运行结果是
char c[5]={…a‟,‟b‟,‟\0‟,‟c‟,‟\0‟};
printf (“%s”,c);}
A …a‟‟b‟
B ab
C ab    c
D ab c
16、有两个字符数组a、b,则以下正确的输入语句是
A gets (a,b);
B scanf (“%s%s”,a,b);
C scanf (“%s%s”,&a,&b);
D get (“a”),gets (“b”);
17、有下面的程序段
char a[3],b[] =”china”;
a=b;
printf(“%s”,a);
则。
A运行后将输出china B运行后将输出ch    C 运行后将输出chi    D 编译出错
18、判断字符串a和b是否相等,应当使用
A if (a= =b)
B if (a=b)
C if (strcpy(a,b) ) Dif(strcmp(a,b))
19、下述对c语言字符数组的描述中错误的是
A字符数组可以存放字符串
B 字符数组的字符串可以整体输入、输出
C 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D 不可以用关系运算符对字符数组中文的字符串进行比较
20、当运行以下程序时,从键盘输入:aa bb <CR>
cc dd<CR>
<CR>代表回车则下面程序的运行结果是
#include<stdio.h>
main()
{ char al[5],a2[5],a3[5],a4[5];
scanf(“%s%s”,a1,a2);
gets (a3); gets (a4);
puts(a1); puts(a2);
puts(a3); puts(a4);
}
A aa
B aa
C aa
D aa bb
bb bb bb cc
Cc cc dd dd cc dd dd ee
21、当运行以下程序时,从键盘输入:ab<CR>
c<CR>
def<CR>
(<CR>表示回车),则下面程序的运行结果是
#include<stdio.h>
#define N 6
main()
{ char c[N];
int i=0;
for( ; i<N;c[i]=getchar(),i++);
for(i=0;i<N;i++) putchar(c[i]);
}
A abcdef
B    a
C    b
D ab
b    c    c
c    d    d
d
e
f
22、下面程序的运行结果是
#include<stdio.h>
#include<string.h>
main()
{char a[80]=”AB”,b[80]=”LMNP”;
int i=0;
strcat(a,b);
while (a[i++]!=‟\0‟) b[i]=a[i];
puts(b);
}
A L
B    B ABLMNP
C AB
D LBLMNP
23、下面程序的运行结果是
#include <stdio.h>
main()
{char str[]=”SSSWLIA”,c;
int k;
for(k=2;(c=str[k])!=‟\0‟;k++)
{switch(c)
{case ‟I‟:++k;break;
case …L‟:continue;
default:putchar(c); continue;
}
putchar(…*‟);
}
}
A SSW*
B SW*
C SW*A
D SW
二、填空题
24、若有以下输入(代表空格,<CR>代表回车换行符),则下面程序的运行结果是
1    4
2
3    3
4    1    2    3    3    2    2    2    3    3    1    1    1    4    1    1    1 -1<CR>
#define M 50
main()
{int a[M],c[5],I,n=0,x;
printf(Enter 0 or 1 or 2 or 3 or 4, to end with -1\n”);
scanf(“%d”,&x);
while(x!=-1)
{if(x>=0&&x<=4)
{a[n]=x;n++;}
scanf(“%d”,&x);
}
for(I=i=0;i<5;i++) c[i]=0;
for(i=0;i<n;i++) c[a[i]]++;
printf(The result is:\n”);
for (i=1;i<=4;i++)printf(“%d:%d\n”,i,c[i]”);
printf(“\n”);
}
25、下面程序的运行结果是
main()
{int i,f[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<10;i++)
{if(i%4= =0)printf(“\n”);
printf(“%3d”,f[i]);}
26、下面程序的运行结果是
main()
{int a[10]={1,2,2,3,4,3,4,5,1,5};
int n=0,i,j,d,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”);
27、下面程序的功能是给一维数组a输入任意6个整数,假设为:748915
然后建立一个具有以下内容的方阵并打印。请填空。
574891
157489
915748
891574
489157
748915
main()
{int a[6],i,j,k,m;
for (i=0;i<6;i++)
sca nf(“%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(“%d”,a[m]);
printf(“\n”);}
}
28、下面程序的运行结果是
main()
{int i=1,n=3,j,k=3;
int a[5]{1,4,5};
while (i<=n&&k>a[i])I++;
for(j=n-1;j>=i;j――)
a[a+1]=a[j];
a[i]=k;
for(i=0;i<=n;i++)
printf(“%3d”,a[i]);
}
29、下面程序的功能是检查一个二维数组是否对称(即:对所有I和j都有a[i][j]=a[j][i])。请填空。

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