1.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。
A.j*n+i√
B.i*n+j
C.i*n+j-1
D.i*n+j+1
2.#include
#include
main()
{
printf("%d\n",strlen("IBM\n012\t\"\\\0"));
}
则程序运行后的输出结果是。
√A)10B)11C)16D)12
3.有如下程序片段:
inti=0;
while(i++<=2);
printf("%d",i);
则正确的执行结果是:
A)2B)3√C)4D)程序陷入死循环
4.下面哪个定义是合法的。
A)chara[8]="language";
B)inta[5]={0,1,2,3,4,5};
√C)char*a="string";
D)inta[2][]={0,1,2,3,4,5,6};
5.若有定义int(*p)[4],则标识符p是一个。
A)指向整型变量的指针变量
B)指向函数的指针变量
√C)指向有四个整型元素的一维数组的指针变量
D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
6.下列对字符串的定义中,错误的是:。
√A)charstr[7]="FORTRAN";
B)charstr[]="FORTRAN";
C)char*str="FORTRAN";
D)charstr[]={'F','O','R','T','R','A','N',0};
7.针对下面程序段,下面哪些说法是正确的?
#include
voidSwap(int*x,int*y);
main()
{
inta,b;
a=5;
b=9;
Swap(&a,&b);
printf("a=%d,b=%d",a,b);
}
voidSwap(int*x,int*y)
{
int*pTemp;
*pTemp=*x;
*x=*y;
*y=*pTemp;
}
A)程序运行结果为乱码;
B)程序运行后将导致程序崩溃;
C)程序编译时出错导致程序无法运行;
√D)程序执行了危险的操作;
8.要使下面程序的输出1,2,34,则从键盘输入的数据格式应为。
#include
main()
{
chara,b;
intc;
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
A)1234B)1,2,34
C)’1’,’2’,34√D)1234
9.对于一个正常运行和正常退出的C程序,以下叙述正确的是。
√A)程序是从main函数第一条可执行语句开始执行,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在最后一个函数中结束
D)从程序的第一个函数开始,在程序的最后一个函数中结束
10.对于以下程序片段,描述正确的是。
intx=-1;
do
{
x=x*x;
}while(!x);
A)是死循环
B)循环执行两次
√C)循环执行一次
D)有语法错误
11.一个指针数组的定义为。
A)int(*ptr)[5];√B)int*ptr[5];
C)int*(ptr[5]);D)intptr[5];
一、单项选择题:(10分,每题2分,评分标准:正确得2分,错误扣2分)12.以下不能对二维数组a进行正确初始化的语句是
A)inta[2][3]={0};
B)inta[][3]={{1,2},{0}};
√C)inta[2][3]={{1,2},{3,4},{5,6}};
D)inta[][3]={1,2,3,4,5,6};
13.有以下程序片断
floatfun(intx,inty)
{
return(x+y);
}
main(){
inta=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序运行后的输出结果是:
A)编译出错√B)9
C)21 D)9.0
14.若有以下调用语句,则不正确的fun函数的函数原型是
main()
{…
inta[50],n;
…
fun(n,&a[9]);
…
}
A)voidfun(intm,intx[]);
B)voidfun(ints,inth[41]);
C)voidfun(intp,int*s);
√D)voidfun(intn,inta);
15.下面程序片段的执行结果是:
#defineMAX10
inta[MAX],i;
main()
{
printf("\n");
sub1();
sub3(a);
sub2();
sub3(a);
}
sub2()
{
inta[MAX],i,max=5;
for(i=0;i } sub1() { for(i=0;i } sub3(inta[]) { inti; for(i=0;i printf("\n"); } A)024681012141618 012341012141618 B)01234 024681012141618 C)0123456789 01234 √D)024681012141618 024681012141618 16.下列程序执行后的输出结果是 #include main() { inta[3][3],*p,i; p=&a[0][0]; for(i=1;i<9;i++) { p[i]=i+1; } printf("%d\n",a[1][2]); } A)3 √B)6 C)9 D)随机数 1.一个C语言程序是从___开始执行的。 A.程序中第一个函数B.名为main的函数 C.包含文件(头文件)的第一个函数D.程序中的第一个语句 2.设a和b均为int型变量,则执行以下语句后的输出为___。 inta=20;intb=3;printf("%d\n",a+=(b%=2)); A.20B.21 C.0D.23 3.设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是___。 A.'a'&&'b'B.a&&b||cC.a&&b&&cD.a||b&&c 4.下列叙述中正确的是___。 A.break语句只能用于switch语句 B在switch语句中必须使用default C.break语句必须与switch语句中的case配对使用 D.在switch语句中不一定使用break语句 5.以下程序的执行结果是___。 main(){intn=9; while(n>6){n--;printf("%d",n);}} 该程序的输出结果是 A.987B.876 C.8765D.9876 6.对于下面的for循环语句,可以断定它执行___次循环。 for(x=0,y=0;(y!=67)&&(x<5);x++)printf("----"); A.无限B.不定C.5次D.4次 7.若有定义(说明)inta[10];,则对数组a的元素正确引用的是___。 A.a[10]B.a[3.5]C.a(5)D.a[10-10] 8.执行下面程序段后,变量k的值是___。 intk=3,s[2]; s[0]=k;k=s[1]*10; A.不定值B.33 C.30D.10 9.以下对一维整型数组a初始化的语句中正确的是___。 A.inta[10]=(0,0,0,0,0);B.inta[10]=(); C.intx=2,a[10]={10*x};D.inta[10]={0}; 10.以下对二维数组a的正确定义(说明)的是___。 A.inta[3][];B.floata(3,4);C.doublea[1][4];D.floata(3)(4); 11.以下不能对二维数组a进行正确初始化的语句是___。 A.inta[2][3]={0};B.inta[][3]={{1,2},{0}}; C.inta[2][3]={{1,2},{3,4},{5,6}};D.inta[][3]={1,2,3,4,5,6}; 12.若调用一个函数,且此函数中没有return语句,则正确的说法是___。 A.该函数没有返回值B.该函数返回若干个系统默认值 C.能返回一个用户所希望的函数值D.返回一个不确定的值 13.以下正确的描述是___。 A.函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套 14.若用数组名作为函数调用的实参,传递给形参的是___。 A.数组的首地址B.数组中第一个元素的值 C.数组中的全部元素的值D.数组元素的个数 15.调用函数的实参与被调用函数的形参应有如下关系___。 A.只要求实参与形参个数相等B.只要求实参与形参顺序相同 C.只要求实参与形参数据类型相同D.上述三点均需具备 16.凡在函数中未指定存储类别的变量,其隐含的存储类别是___。 A.自动B.静态C.外部D.寄存器 17.若已定义a为int型变量,则___是对指针变量p的正确说明和初始化。 A.intp=&a;B.int*p=a;C.int*p=*a;D.int*p=&a; 18.下面是一个初始化指针的语句:int*px=&a;,其中指针变量的名字应该___。 A.*pxB.aC.pxD.&a 19.对下语句int*px[10];,下面正确的说法是___。 A.px是一个指针,指向一个数组,数组的元素是整数型。 B.px是一个数组,其数组的每一个元素是指向整数的指针。 C.A.和B均错,但它是C语言的正确语句。 D.C语言不允许这样的语句。 20.结构体成员的数据类型___。 A.相同B.可以不同也可以相同 C.长度一样D.是结构体变量 1 A、2 B、4 C、1 D、5 2.C语言中,正确的字符串表示是; A、“123” B、‘123’ C、‘AB’ D、‘\101’ 3.若a是int型变量,b是float型变量,以下输入语句合法的是; A、scanf(“%f%f”,&a,&b) B、scanf(“%c%d”,&a,&b) C、scanf(“%d%f”,&a,&b) D、scanf(“%d%f”,a,b) 4.C语言中,char类型和long类型数据在内存中分别占个字节; A、2,4 B、1,4 C、1,2 D、2,2 5.intr=0xab;其中0xab表示是数; A、十进制; B、错误数据; C、十六进制; D、八进制 6.如果x=25,执行if(x)x=5;语句时,该x为; A、“真” B、“假” C、25 D、5 7.如果j=a[1]=3;执行a[3]=++a[1];a[3]+=a[3]+j;a[3]的值是; A、8 B、10 C、9 D、11 8.设inta,b,c;且a=10;b=4;a/=b;则表达式(a%b?B、a)之值是; A、4 B、-4; C、2; D、-2 9.设intx,a,b,c;计算表达式x=(a=4,b=16,c=32)后,x的值是; A、4 B、16 C、32 D、52 10.For(;x=3;);代表的意义是; A、死循环 B、不循环 C、循环3次 D、语法错误 11.对于表达式53/2&&!0和!(15>3||5<6-8)的逻辑值,分别是; A、0,1 B、1,0 C、0,0; D、1,1 12.在C语言中,下面运算符优先级最高的是 A、++ B、/ C、+ D、= 13.设charw;intx;floaty;表达式有由于y=(w*x-15)中的y值的数据类型为A、charB、intC、floatD、double 14.在C语言中,intx=4;执行x=5>2&&x<2语句,其x的值为________ A、1 B、0 C、5 D、2 15.charc=‘a’;intn=2; switch(c+2) {case‘a’:n=n+1; case‘b’:n=n*2; case‘c’:n=n-2; case‘d’:n=n+3;break; default:n=n/2; } n的正确结果值是________ A、2 B、3 C、4 D、5