您的位置:

c语言程序设计基础自测训练,c语言自测题

本文目录一览:

《C语言程序设计》练习题

一、选择题

1、C语言规定,在一个源程序中,main()函数的位置(C )。

A) 必须在最开始 B)必须在最后

C) 可以任意 D) 必须在系统调用的库函数后面

这题你死记就行,你看看这个

任何一个C++程序都必须定义一个main函数,它的返回类型总是int类型。这个函数由操作系统来调用,在main函

数执行完以后,程序也就终止了。 main也可以使用return向操作系统返回一个值,使用操作系统的命令可以检测

main的返回值。一般约定在main返回0时,表示程序运行过程中没有出现错误,其它非零值表示程序出现异常情况。

若没有为main指定返回值,这样返回值是任意的。

2、若x和y都是int 型变量,x=100,y=200,且有以下程序段,printf(“%d”,(x,y));则其输出结果是( A)。

A) 200 B) 100 C) 100 200 D) 输出不确定值

(x,y)这是个逗号表达式,表达式的值为最后一个逗号后面表达式的值,因为前面有一个%d,所以输出 的是y的

3、合法的C语法字符常量是(C )。

A) “A” B) 65 C) ‘\t’ D) A

字符都是由两个单引号括起来的,死记, a)为字符串

4、表达式“3!=4”的值是(A )。

A) 1 B) 0 C) T D) F

!=是c语言的逻辑运算符,3!=4为真,多以得1, 3=4为假,值为0

5、 int a=1,b=2,c=3,d=4,执行下列程序后x的值为( C)。

if(ab) x=1;else if (cd) x=2;else x=3;

A) 1 B) 2 C) 3 D) 4

如果ab,12为假,不执行x=1,执行else if(cd),判断:34为假,不执行x=2,执行=3,完

6、以下程序的输出结果是(D)。

Int x=10,y=3,z;printf(“%d\n”,z=(x%y,x/y));

A)1 B) 0 C) 4 D) 3

逗号表达式,x%y,10%3,商3余1,模取余数1,x/y,10/3,商3余1,除法取商3,逗号表达式,表达式的值为最后一

个逗号后面表达式的值

7、为表示x≥y≥z,应使用C语言表达式(A )。

A) (x=y)(y=z) B) (x=y) AND (y=z)

C) (x=y=z) D) (x=y) (y=z)

关系运算符,x=y与y=z必须是同时成立的,因此要用逻辑运算符,与的意思

8、合法的数组定义是( a )。

A) int a[ ]=”string”; B) int a[5]={0,1,2,3,4,5};

C) char a=”string”; D) char a[ ]={“01234”};

a不指定数组长度定义,正确

b数组长度为5,就是里面有5个数组元素,多了一个数组元素

c定义a不是数组而是一个变量,素组应该是a[]

d是错的,字符串是这样定义的:char a[ ]={'0','1','2','3','4','\0'};

[4]中数字是数组长度,说明里面有几个元素

9、设x和y均为int型变量,则语句“x+=y;y=x-y;x-=y;”的功能是(D)。

A) 把x和y按从小到大排列 B)把x和y按从大到小排列

C)无确定结果 D)交换x和y中的值

x+=y等同于x=x+y,把x加y的值赋给x,x现在存的是x与y的和

y=x-y把x减y的值赋给y,x现在存的是x与y的和 (x+y)-y=x,把x的值给y,y存x的值

x-=y等同于x=x-y,把x减y的值赋给x,(x+y)-y=x,现在的后面的y存的是x的值,做完后x里存的值是y,完成交换

10、若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是(C)。

A) 1 B)2 C) 2.0 D) 1.0

逗号表达式,先让x=1在算y=x+3/2,得2,因为是double类型,所以有小数点

11、下列条件语句中,功能与其他语句不同的是 (D)

A) if(a) printf("%d\n",x); else printf("%d\n",y);

B) if(a==0) printf("%d\n",y); else printf("%d\n",x);

C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);

D) if(a==0) printf("%d\n",x); else printf("%d\n",y);

a 如果a为真输出x,如果a为假输出y

b 如果a==0,也就是为假,输出y,a为真输出x,同a

c 如果a!=0为真,输出x,a为假输出y同上

d 如果a为假输出x,如果a为真输出y,与以上的都不同

12、以下能正确定义二维数组的是 (C)

A) int a[][3]; B) int a[][3]=2{2*3};

C) int a[][3]={0}; D) int a[2][3]={{1},{2},{3,4}};

a 没有给数组赋初值

b {}里不能有*

c 正确,记住第一个[]中可以为空,第二个[]不能为空,死记

d a[2][3] 的意思是有两个一维数组,每个一维数组里有3个元素,{{1},{2},{3,4}}; 她的意思是三个数组,{}中的每一个{}代表一个数组,里边的数为数组元素

13、用C语言编写的代码程序 (B)

A)可立即执行 B)是一个源程序

C)经过编译即可执行 D)经过编译解释才能执行

死记

《C语言程序设计》第10章在线测试

1、单选题: D C A A D

2、多选题:

ABD ACD ACD AD BC

3、判断题:

错误 正确 错误 正确 错误

《C语言程序设计》第17章在线测试

1、D 因为#define C(x) ((x)*(x))宏中需要使用完备的括弧才不会有引用错误

2、D 认真区分char a[]和char *p的区别,a是数组的首地址,也是指针,但是p仅仅是指向一个字符串的首地址的指针,虽然也是指针,但是你并不知道p指针具体在什么代码段的什么位置,从而p+=2的位置你也无法确定。

3、C extern本来就是外部的意思嘛

4、A 仅仅在主函数中有效,这是对的。

5、B 局部变量优先,给你举个例子:

int a=1;

int main()

{

int a=2;

couta;

return 0;

}

就是类似这样的例子,你在main函数外定义了一个全局变量a,在main内部又定义了一个变量名也是a的局部变量,那么你在main中用cout输出的时候就是输出了局部变量a的值,要输出全局变量a的值时则要使用::a,实际上是局部变量将全局变量屏蔽了,可以看做局部变量的优先于全局变量

/**********************************************************************************/

第二题1、ABC

2、ABD

3、CD

4、AB

5 、AD

/**********************************************************************************/

第三题

正确

错误,可改为int *p=x

错误,不是指向结构体的指针,不可以用-

正确,因为数组名那可是一个指针,是数组的首地址

正确 当然可以递归了,网上多的是那种递归的小程序

如果有什么不清楚,咱们可以后续交流哦@—@

C语言程序设计(201803)测试求大佬帮忙!

选D

选C;"my name"算上空格一共7个字符,加上结尾的'\0'为8个字符,所以如果m前没有空格,那么答案为C

选C;p指向a[3]=4的地址,即p及其之后地址中的数值为{4,5,6,7,8,9,10},所以其中第5个数为p[4]=8

选C

选D;A错误,字符串应为char型;B错误,数组长度不够;C错误,没有vhst类型;D正确,可看作字符数组,{}内的数值可转为相应的ASCII字符

选C;字符数组即字符串不能直接通过"="赋值,要使用strcpy函数

选C;函数实参可以是常量、变量或表达式,该题中逗号表达式(exp2,exp3)返回exp3,(exp4,exp5,exp6)返回exp6,因此一共3个实参

选C;A错误,函数调用时不用指明其参数类型;B错误,fun函数没有返回值,不能赋给k;C正确;D错误,函数调用时不用指明其返回类型

选A;n++表示先返回n的值,再对n进行自增操作,即先令k=n,再执行n=n+1

选C;if-else不是循环结构

选D;aa表示数组首地址,即aa[0],而不是aa[1]

选B

选B;a[2]=3,a[2]+1=4,所以a[a[2]+1]=a[4]=5

选C;A错误,除非函数定义在调用语句之后的位置,才需要提前声明;B错误,函数返回值不一定要显示给出,没有返回值类型的默认为整型;C正确;D错误,在类的定义中,当构造函数和析构函数不需要完成操作时可用空函数来表示,但它们又是有意义的

选B;scanf需指明读入变量的地址,字符串名称c就表示字符串的地址,也即字符数组首元素的地址,不用再加取地址符

选A

选D;同第6题

码字不易,望采纳~

C语言程序设计 试题

...

我就看了选择 你确定你写的都是正确答案吗

感觉错了好多

1.B

2.? 不知道

3.C

4.D

5.C

6.D

7.B

8.A

9.A

10.D

貌似前10题就对了2个

。。。

自求多福吧

C语言程序设计2015A卷-

一、判断题(每小题1分,共15分)

1.标准C中,只有数值型数据才能进行4则混合运算。

2.标准C中,_a是合法的自定义标识符。

3.有定义:float f;表达式f+=(int)3.6%2”不符合C语言语法。

4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。

6.以下运算符排列顺序满足按照优先级从高到低的排列:‘’、‘!’、‘==’、‘-’。

7.语句for(;;);是非法的。

8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。

9.while和do-while的主要区别是后者至少无条件执行一次。

10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。

11.当函数没有返回值类型时,表示函数类型为void。

12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。

13.一个函数中只允许有一条return语句。

14.在C语言中,如果没有说明变量的存储类型是auto类型的。

15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。

二、填空题(每空1分,共15分)

1. 若a=4;b=5,c=6;则表达式c==(b=-a); 中c的值是 (1) 。

2. 计算表达式的值:

4&&-4的值: (2) ;

设int a=3,b=4,c=5,则表达式a||b+cb==c的值: (3) ;

设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4) ;

设a=12,则表达式a*=a/5的值: (5) ;

3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}

则循环语句执行完后,z值为 (6) 。

4. 变量的指针就是指该变量的 (7) 。

5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则标识符p是 (9) ;

6. 已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1));

的输出结果分别为: (10) 、 (11) 、 (12) 。

7. 已有定义: int x=65; 若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。

8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。

三、简答题(每题4分,共12分)

1、简述选择语句if和else语句对与switch语句的区别。

2、简述在循环语句中,break和continue的区别。

3、若int a[5],*p=a;简述*p++和(*p)++的区别。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

七、编程题(8分)

编译程序,其功能是比较字符串的大小( 不允许 用系统提供的字符串比较函数strcmp)。要求是:

(1) 通过主函数调用一个函数strcompare来实现。

(2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。

(3) 并输出两个字符串中相同部分的子串。

《C语言程序设计基础》试卷参考答案

一、判断题(每小题1分,共15分)

1~5 ; 6~10 ; 11~15

二、填空题(每空1分,共15分)

(1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6

(7)地址 (8) 行指针,指向有四个元素的一维数组

(9)指针数组名,该数组有四个元素,每个元素都是指针

(10)Russia (11)i (12)h (13) %c (14) %d (15)7

三、简答题(每题4分,共12分)

1、if总是判断其后面的表达式的值是否为非零值,如是非零值则执行其后面的语句或由{}括起来的复合语句,否则执行else后面的语句。而switch语句则根据其后面表达式的可数值来判断,执行switch语句体内与其中的一个case:常量值相等语句后面的语句。执行break语句后,跳出switch语句体。

2、break是终止整个循环过程;continue是终止本次循环。

3、*p++首先取a[0]的值,然后p指向a[1];(*p)++使得a[0]的值自增1,但p保持不变。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4 分,共16分)

1、 (1)缺#include ; (2)scanf(“%f”,a); 改为 scanf(“%f”,a);

2、 (1)缺sum=0; (2)for(i=1; i=3; i++) 改为for(i=0;i3;i++)

3、 (1)p1=p2 改为 *p1=*p2 (2)swap(a, *p) 改为swap(a, p)

4、 (1)在if(m0)语句后添加else if(m==0) a=1; (2) 添加 return(a);

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

1、 (1)x=0; (2)if(n==x) (3)s++;或s=s+1;

2、 (4)num[i] (5)max num[i]? (6)num[i]!=0

3、 (7)n-i-1 (8)a[j]a[j+1] (9)a[j+1]=temp

4、 (10)count=0; (11)n%10 (12)n0或n!=0或n

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

1、 #*#*#*

2、 main i=1 j=2 k=2

sub i=1 j=2 k=1 x=2

sub i=1 j=2 k=1 x=3

七、编程题(8分)

#include

main()

{

int i,j, flag=0;

char str1[90],str2[90];

gets(str1);

gets(str2);

i=0;

do{

flag=strcompare(str1[i],str2[i]);

i++;

}while(str1[i]!=’’ str2[i]!=’’ flag=0);

if(flag0)printf(“%s小于%s ”,str1,str2);

else if(flag==0) printf(“%s 等于%s ”,str1,str2);

else printf(“%s大于%s ”,str1,str2);

printf(“两个字符串中相同的字串为:”);

j=0;

i--; 后3句可用str1[i]=’’; printf(“%s”,str1);代替//用str2也可以。

while(ji){printf(“%c”,str1[i]);j++;} span="" /i){printf(“%c”,str1[i]);j++;}

}

int strcompare(char c1,char c2)

{

int v;

v=c1-c2;

return v;

}