C语言程序设计作业模拟答案,《C语言程序设计》模拟题及答案

《C语言程序设计》模拟题及答案

一.单项选择题

1.有char c=’1’,下面说法中正确的是( )。

A.语句putchar(c+2);的输出结果为51

B.语句putchar(“%d”,c+2);的输出结果为3

C.语句putchar(“%c”,c+2);的输出结果为51

D.语句putchar(“%c”,c+2);的输出结果为3

2.设c1,c2均是char型变量,则下面不正确的函数调用为( )。

A.scanf(”c1=�2=%c”,&c1,&c2);

B.getchar();

C.putchar(c2);

D.putchar(c1,c2);

3.为了表示关系x>=y>=z,下面C语言表达式中正确的是( )。

A.(x>=y)&&(y>=z)

B.(x>=y)and(y>=z)

C.(x>=y>=z)

D.(x>=y)&(y>=z)

4.设x,y,z,t为int型变量,则执行以下语句后,t的值为( )。

x=y=z=1;

t=++x||++y&&++z;

A.不定值

B.2

C.1

D.0

5.对if语句中表达式的类型,下面正确的说法是( )。

A.必须是关系表达式

B.必须是关系表达式或逻辑表达式

C.可以是任意表达式

D.必须是关系表达式或算术表达式

6.对for(表达式1;;表达式3)可以理解为( )。

A.for(表达式1;0;表达式3)

B.for(表达式1;表达式1;表达式3)

C.for(表达式1;1;表达式3)

D.for(表达式1;表达式3;表达式3)

7.执行语句for(i=1;i++<4;);之后,变量i的值为( )。

A.3

B.4

C.5

D.不确定

8.若二维数组a有m列,则在a[i][j]前的元素个数为( )。

A.j*m+i

B.i*m+j

C.i*m+j-i

D.i*m+j+1

9.下面说法中正确的是( )。

A.在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

B.在C语言中,数组元素的个数可以不确定,允许随即变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数

10.不能把字符串:“good!”赋给数组b的语句是( )。

A.char b[10]={’g’,’o’,’o’,’d’,’!’};

B.char b[10];b=“good!”;

C.char b[10];strcpy(b, “good!”) ;

D.char b[10]=“good!”;

11.执行下面程序段,给x,y赋值时,不能作为数据分隔符的是( )。

int x,y;

scanf(”%d%d”,&x&y);

A.回车

B.Tab键

C.回车

D.逗号

12.已知ch是字符型变量,下面不正确的赋值语句为( )。

A.ch=’a+b’;

B.ch=’\0’;

C.ch=’7’+’9’;

D.ch=5+9;

13.下面程序段的输出结果是( )。

char c1=’6’,c2=’0’;

printf(”%c,%c,%d,%d\n”,c1,c2,c1-c2,c1+c2);

A.因输出格式不合法,输出出错信息

B.6,0,6,102

C.6,0,7,6

D.6,0,5,7

14.在C语言的循环语句for, while,do while中,用于直接中断最内层循环的语句是( )。

A.switch

B.continue

C.break

D.if

15.下面的循环结构中,不是无限循环的是( )。

A.for( i=1;;i++)

printf(“%d”,i--);

B.i=1;while(i--)

{printf(”%d”,i++);}

C.i=1;do{printf(”%d”,i); i++;} while(--i);

D.for(i=0;i;i++)

printf(”%d”,i);

16.下面程序段的运行结果是( )。

char c[]=”\t\b\\\0will\n”;

printf(“%d“,strlen(c));

A.14

B.3

C.9

D.字符串中有非法字符,输出值不确定

17.下面说法中正确的是:在C语言程序中( )。

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和调用均不可以嵌套

D.函数的定义和 调用均可以嵌套

18.若用数据名作为函数调用的实参,传递给形参的是( )。

A.数据的首地址

B.数组第一个元素的值

C.数组中全部元素的值

D.数组元素的个数

19.以下叙述中不正确的是( )。

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个结函数内的符合语句中定义的变量在本函数范围内有效

20.一个变量的指针是指( )。

A.该变量的值

B.该变量的地址

C.该变量的变量名

D.该变量的标志

21.若有定义:int a[10],*p=a;,则p+5表示( )。

A.元素a[5]的地址

B.元素a[5]的值

C.元素a[6]的地址

D.元素a[6]的值

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

A.必须在最开始

B.必须在系统调用的库函数的后面

C.可以任意

D.必须在最后

23. 一个C语言程序是由( )。

A.一个主程序或若干个子程序组成

B.函数组成

C.若干过程组成

D.若干个子程序组成

24. 下面哪项是构成C语言的基本单位( )。

A.函数

B.过程

C.子程序

D.子例程

25. 以下正确的说法是( )。

A.定义函数时,形参的类型说明可以放在函数体内

B.return后边的值不能为表达式

C.如果函数值的类型和返回值类型不一致,以函数值类型为准

D.如果形参与实参的类型不一致,以函数值类型为准

26.对于基类型相同的两个指针变量之间,不能进行的运算是( )。

A.<

B.=

C.+

D.–

27.变量的指针,其含义是指该变量的( )。

A.值

B.地址

C.名

D.一个标志

28.下面程序运行的结果是( )。

void

ss(char *s,char t)

{

while(*s)

{

if(*s= =t)

*s=t-‘a’+’A’;

s++;

}

}

void main()

{

char str1[100]=”abcddfefdbd”,c=’d’;

ss(str1,c);

printf(“%s\n”,str1);

}

A.ABCDDFEFDBD

B.abcDDfefDbD

C.abcAAfefAbA

D.Abcddfefdbd

29.下列说法中正确的是( )。

A.结构体变量可以作为一个整体进行其值得输入和输出

B.结构体成员项不可以是结构体

C.结构体成员项可以是结构体或其他任何C语言的数据类型

D.结构体变量和结构体是相同的概念

30.下面说法中不正确的是( )。

A.一个C源程序可有一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成是函数

D.在C程序中,注释语句只能位于一条语句的后面

31.若执行下面的程序段,则下面描述中正确的是( )。

int k=5;

while(k=1)

k--;

A.while循环执行四次

B.循环体执行一次

C.循环体一次也不执行

D.死循环

32.下面关于for循环的正确描述是( )。

A.for循环只能用于循环次数已经确定的情况

B.for循环中是先执行循环体语句,后判断表达式

C.在for循环中,不能用break语句跳出循环

D.for循环的循环体可以包含多条语句,但必须用花括号括起来

33.不正确的定义语句是( )。

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 c1[]={’1’,’2’,’3’,’4’,’5’};

D.char c2[]={’\x10’,’\x0a’,’\x08’};

34.下面是对s的初始化,其中不正确的是( )。

A.char s[5]={“abc”};

B.char s[5]={‘a’,’b’,’c’};

C.char s[5]=””;

D.char s[5]=”abced”;

35.下面程序段的运行结果是( )。

char

c[5]={‘a’,’b’,’\0’,’c’,’\0’};

printf(“%s”,c);

A.‘a’’b’

B.ab

C.ab c

D.abc

36.以下说法中正确的是( )。

A.C语言程序总是从第一个定义的函数开始执行

B.在C语言程序中,要调用的函数必须在main函数中定义

C.C语言程序总是从main函数开始执行

D.C语言程序中的main函数必须放在程序的开始部分

37.下列常量中,合法的C常量是( )。

A.“x-y”

B.‘105’

C.‘Be’

D.07ff

38.下面程序的输出结果是( )。

void main

{

int i=011,j=11;

printf(“%d,%d\n”,++i,j--);

}

A.10,11

B.12,10

C.11,11

D.10,9

39.下面程序的执行结果为( )。

void main()

{int x=20,y;

y=++x; y+=x;

printf(”%d,”y);

y=x--; y+=x;

printf(”%d,”y);

}

A.42,41

B.42,42

C.40,41

D.42,40

40.下面程序的输出结果是( )。

void main()

{ int i=010,j=10;

printf(“%d,%d”,i++,++j);

}

A.10,11

B.11,11

C.8,11

D.8,10

41.能正确表示a和b同时为正或同时为负的表达式是( )。

A.(a>=0||b>=0)&&(a<0||b<0)

B.(a>=0||b>=0)&&(a<0&&b<0)

C.(a+b>0)&&(a+|b<0)

D.a*b>0

42.以下关于运算符优先顺序的描述中正确的是( )。

A.关系运算符

B.逻辑运算符

C.赋值运算符

D.算术运算符

43.下面程序的运行结果是( )。

void main()

{

int a,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

printf(“%d,%d”,a,b);

}

A.6,1

B.2,1

C.6,0

D.2,0

44.若有条件表达式(exp)?a++:b--,则以下表达式中完全等价于表达式(exp)的是( )。

A.(exp= =0)

B.(exp!=0)

C.(exp= =1)

D.(exp!=1)

45.程序段如下,则正确的执行结果是( )。

int k=0;

while(k++<=2);

printf(“%d\n”,k);

A.2

B.3

C.4

D.无结果

46.下面说法中正确的是( )。

A.在C语言函数中,必须有形参

B.在C语言函数中,形参必须是变量名

C.在C语言函数中,可以有也可以没有形参

D.在C语言函数中,数组名不能做形参

47.下面说法正确的是,在C语言中( )。

A.实参和与其对应的形参各占用独立的存储单元

B.实参和与其对应的形参共占用一个存储单元

C.只有当实参和与其对应的形参同名时才共占用存储单元

D.形参是虚拟的,不占用存储单元

48.下面不正确的说法是:C语言规定( )。

A.实参可以是常量、变量或表达式

B.形参可以是常量、变量或表达式

C.实参传递给形参时,要求实参必须有确定的值

D.形参应与其对应的实参类型可以不一致

49.C语言允许函数值类型缺省定义,此时函数值隐含的类型是( )。

A.float型

B.int型

C.long型

D.double型

50.若有以下定义:char s[10]=“include“,*p=s;,则不能代表字符‘u’的表达式为( )。

A.s[4]

B.s+4

C.*(p+4)

D.p+=4,*p;

51. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。

A.地址传递

B.单向值传递

C.由实参传给形参,再由形参传给实参

D.由用户指定传递方式

52. C语言规定,函数返回值的类型是由( )。

A.return语句中的表达式类型所决定

B.调用该函数时的主调函数类型所决定

C.调用该函数时系统临时决定

D.在定义该函数时所指定的函数类型所决定

53. 若有int *p,a[10];p=a;

,则下列写法不正确的是( )。

A.p=a+2

B.a++

C.*(a+1)

D.p++

54. 若用数组名作为函数调用的实参,传递给形参的是( )。

A.数组的首地址

B.数组第一个元素的值

C.数组中全部元素的值

D.数组元素的个数

55. 若使用以为数组名作函数实参,则下面说法中正确的是( )。

A.在被调函数中,与该实参相对应的形参必须是同类型的数组名或指针变量

B.实参数组类型与形参数组类型可以不匹配

C.在被调函数中,不需要考虑形参数组的大小

D.实参数组名与形参数组名必须一致

56. 设p1、p2是指向同一个字符串的指针变量,c为字符变量,则不能正确执行的赋值语句为

( )。

A.c=*p1+*p2;

B.p2=c;

C.p1=p2;

D.c=(*p1)*(*p2);

57. 若有一下结构体定义,则正确的引用和定义是( )。

struct example { int x; int y;} v1;

A.example.x=10

B.example v2; v2.x=10;

C.struct v2; v2.x=10;

D.struct example v2={10,5};

58. 说明一个结构体变量时,系统分配给它的内存是( )。

A.各成员所需内存量的总和

B.结构体中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构体中最后一成员所需内存量

59. 在C语言中,文件由下面拿个组成( )。

A.记录

B.数据行

C.数据块

D.字符(字节)序列

60. 下面程序段的运行结果是( )。

char c[]=”\t\b\\\0will\n”;

printf(“%d“,strlen(c));

A.14

B.3

C.9

D.字符串中有非法字符,输出值不确定

61.以下叙述中不正确的是( )。

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个结函数内的符合语句中定义的变量在本函数范围内有效

62.一个变量的指针是指( )。

A.该变量的值

B.该变量的地址

C.该变量的变量名

D.该变量的标志

二.读程序,写结果

1.

#include

void main()

{

int

a=2,b;

if(a<0)

b=0;

else if((a<5)&&(a!=2))

b=1;

else if (a<10)

b=5;

else b=10;

printf(“%d\n”,b);

}

输出:个

2.

#include

void main()

{

inti,j;

for(i=j=1;i<5;i++)

{ if(i%2= =0)

continue;

j++;

printf(“%d,%d\n”,i,j);

}

}

输出:

3.

#include

void main()

{ int i,j,k,c[20],a[20]={1,4,7,17,23,0};

int b[20]={2,6,9,10,15,24,45,72,81,92,0};

i=j=k=0;

while((a[i]!=0)&&(b[j]!=0)

{ if(a[i]

{ c[k]=a[i]; i++;}

else

{ c[k]=b[j]; j++;}

k++;

}

if(a[i]= =0)

while(b[j]!=0) c[k++]=b[j++];

if(b[j]= =0)

while(a[i]!=0) c[k++]=a[i++];

c[k]=0;

k=0;

while(c[k]!=0) printf(“%d,”,c[k++]);

}

输出:

4.

#include

int len(int m)

{ int k=1;

if(m<0) m=-m;

while(m/10!=0)

{ k=k+1;

m=m/10;

}

return k;

}

void main()

{ int a=1234;

printf(“%d\n”,len(a));

}

输出:

5.

#include

void main()

{

char c;

int

v0=0,v1=0,v2=0;

do

{

switch(c=getchar())

{

case ‘a’: case ’A’:

case ‘e’: case ’E’:

case ‘i’: case ’I’:

case ‘o’: case ’O’:

case ‘u’: case ’U’:v1+=1;

default: v0+=1;v2+=1;

}

}while(c!=’\n’);

Printf(“v0=%d, v1=%d,v2=%d\n”,v0,v1,v2);

}

输入:Adescription

输出:

三.编程题

1.程序编写

编程实现如下功能:

1) 从键盘输入10位同学的成绩

2) 统计并输出不及格同学的人数

3) 计算并输出全班的平均成绩

4) 输出最高分和最低分

5) 将全班同学的成绩按高到低的顺序排序,然后输出其名次和成绩

2.程序填空

下面程序的功能是找出二维数组a中每行的最大值,并按一一对应的顺序放入一维数组s中。即:第零行中对大值,放入s[0]中,第一行中最大值,放入s[1]中,……,然后输出每行的行号和最大值。请填空。

void main()

{

int a[4][4],s[4],i,j,k;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

scanf(”%d”,[1]);

for(i=0;i<4;i++)

{

s[i]=[2];

for(j=1;j<4;j++)

if(s[i]

[3]

}

for(i=0;i<4;i++)

printf(”Row=-

Max=]\n”,i,s[i]);

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值