C语言习题级答案3.docx

上传人:b****9 文档编号:26043164 上传时间:2023-06-17 格式:DOCX 页数:24 大小:36.07KB
下载 相关 举报
C语言习题级答案3.docx_第1页
第1页 / 共24页
C语言习题级答案3.docx_第2页
第2页 / 共24页
C语言习题级答案3.docx_第3页
第3页 / 共24页
C语言习题级答案3.docx_第4页
第4页 / 共24页
C语言习题级答案3.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言习题级答案3.docx

《C语言习题级答案3.docx》由会员分享,可在线阅读,更多相关《C语言习题级答案3.docx(24页珍藏版)》请在冰豆网上搜索。

C语言习题级答案3.docx

C语言习题级答案3

测试题3

1.C语言中不合法的字符常量是C

A、’\65’

B、’\xff’

C、’\028’

D、’&’

2.具有相同类型的指针变量p与数组a,不能进行的操作是(C)。

A、p=&a[0];

B、p=a;

C、p=&a;

D、*p=a[0];

3.若有x=22,y=26,z=0;,则执行下面语句后,z的输出结果是(B)

z=x>y?

x:

y

A、72

B、26

C、48

D、22

4.对于建立函数的目的,正确的说法是D

A、提高程序的执行效率

B、减少程序的篇幅

C、减少程序文件所占的内存

D、提高程序的可读性

5.有定义:

char*p1,*p2;则下列表达式中正确合理的是C

A、p1/=5

B、p1+=5

C、p1=&p2

D、p1*=p2

6.以下程序的运行结果是(B)。

main()

{

inti=1,sum=0;

while(i<10)sum=sum+1;i++;

printf("i=%d,sum=%d",i,sum);

}

A、i=10,sum=9

B、运行出现错误

C、i=2,sum=1

7.若变量已正确定义且k的值是4,计算表达式(j=4,k--)后,j和k的值为(C)

A、j=4,k=4

B、j=3,k=3

C、j=4,k=3

D、j=3,k=4

8.给出以下定义:

charx[]="abcdefg";

chary[]={'a','b','c','d','e','f','g'};

则正确的叙述为(A)

A、数组x的长度大于数组y的长度

B、数组x和数组y等价

C、数组x和数组y的长度相同

D、数组x的长度小于数组y的长度

9.在下述程序中,判断i>j共执行了多少次C

#include

main()

{

inti=0,j=10,k=2,s=0;

for(;;)

{

i+=k;

if(i>j)

{

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

break;

}

s+=i;

}

}

A、4

B、8

C、6

D、7

10.下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是(D)。

A、8

B、17

C、6

D、23

11.下面判断正确的是(D)。

A、char*a="china";等价于char*a;*a="china";

B、charstr[10]={"china"};等价于charstr[10];str[]={"china"};

C、charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";

D、char*s="china";等价于char*s;s="china";

12.设b的值为二进制数,b=00000010;表达式(b>>2)/(b>>1)的值是(A)。

A、0

B、2

C、8

D、4

13.以下叙述正确的是(A)。

A、用do-while语句构成的循环,在while后的表达式为零时结束循环

B、do-while语句构成的循环只能用break语句退出.

C、do-while语句构成的循环不能用其它语句构成的循环来代替.

D、用do-while语句构成的循环,在while后的表达式为非零时结束循环.

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

A、如果形参与实参类型不一致,以实参类型为准

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

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

D、如果函数值的类型与返回值类型不一致,以函数值类型为准

15.已定义两个字符数组a,b,则以下正确的输入格式B

A、scanf("%s%s",&a,&b);

B、scanf("%s%s",a,b);

C、gets("a"),gets("b");

D、get(a,b);

16.宏定义#definePI3.14中的宏名PI代替C

A、不确定类型的数

B、一个单精度实数

C、一个字符串

D、一个双精度实数

17.以下叙述中正确的是(A)。

A、C程序中注释部分可以出现在程序中任意合适的地方

B、分号是C语句之间的分隔符,不是语句的一部分

C、花括号“{“和”}”只能作为函数体的定界符

D、构成C程序的基本单位是函数,所有函数名都可以由用户命名

18.若有说明:

inta[3][4];则数组a中各元素(A)。

A、不能得到确定的初值

B、可在程序的编译或运行阶段得到初值0

C、可在程序的运行阶段得到初值0

D、可在程序的编译阶段得到初值0

19.下面四个选项中,均是不合法的用户标识符的选项是(D)。

A、_123tempint

B、AP_0do

C、floatla0_A

D、b-agotoint

20.以下不能对二维数组a进行正确初始化的语句是(B)。

A、inta[][3]={{1,2},{0}};

B、inta[2][3]={{1,2},{3,4},{5,6}};

C、inta[2][3]={0};

D、inta[][3]={1,2,3,4,5,6};

21.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的

值是(B)。

A、9

B、-12

C、6

D、-3

22.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述

中错误的是(B)。

A、有穷性

B、有零个或多个输出

C、可行性

D、有零个或多个输入

23.下列语句中,不正确的是(C)。

A、staticchara[2]={'1'};

B、staticchara[2]={1,2};

C、staticchara[2]={'1','2','3'};

D、staticinta[2]={'1','2'};

24.若有下列定义,则对a数组元素地址的正确引用是(D)。

inta[5],*p=a;

A、*(p+5)

B、*&a[5]

C、*p+2

D、*(a+2)

25.若有定义:

char*p1,*p2,*p3,*p4,ch;

则不能正确赋值的程序语句为(D)。

A、p4=&ch;*p4=getchar();

B、p2=(char*)malloc

(1);scanf("%c",p2);

C、p1=&ch;scanf("%c",p1);

D、*p3=getchar();

26.以下选项中合法的实型常数是(A)。

A、.2E0

B、E-3

C、5E2.0

D、1.3E

27.若要说明一个类型名STP,使得定义语句STPs等价于char*s,

以下选项中正确的是(A)。

A、typedefchar*STP;

B、typedef*charSTP;

C、typedefstp*char;

D、typedefSTPchar*s;

28.sizeof(float)是(B)。

A、一种函数调用

B、一个整型表达式

C、一个不合法的表达式

D、一个双精度型表达式

29.下面程序的输出结果是

main(C)

{

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

printf("%d\n",*(p+2));

}

A、2

B、4

C、3

D、1

30.以下四个程序中,不能对两个整型值进行交换的是D

A、

B、

C、

D、

 

判断

1.C语言规定,必须用main作为主函数名T

2.如果想使一个数组中全部元素的值为0,可以写成F

inta[10]={0*10};

3.若i=3,则printf("%d",-i++);输出的值为-4F

4.在C语言中,此定义和语句是合法的:

T

enumaa{a=5,b,c}bb;bb=(enumaa)5;

5.用fopen("file","r+");打开的文件"file"可以进行修改。

T

6.循环结构中的continue语句是使整个循环终止执行F

7.在C语言中,对于数组的定义chara[8]="computer"是错误的.T

8.C语言本身不提供输入输出语句,输入和输出操作是由函数来T

实现的。

9.共同体变量所占的内存长度等于最长的成员的长度。

T

10.#define和printf都不是C语句。

T

 

程序设计

1./*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:

给定n个数据,求最大值出现的位置(如果最大值出

现多次,求出第一次出现的位置即可)。

------------------------------------------------*/

#include

intstation(ints[],intn)

{

/**********Begin**********/

 

/**********End**********/

}

main()

{

inta[100],n,i,t;

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

t=station(a,n);

printf("themax_valuepositionis:

%d\n",t);

TestFunc();

}

TestFunc()

{

FILE*IN,*OUT;

intn;

inti[10];

into;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("ReadFileError");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("WriteFileError");

}

for(n=0;n<10;n++)

{

fscanf(IN,"%d",&i[n]);

}

o=station(i,10);

fprintf(OUT,"%d\n",o);

fclose(IN);

fclose(OUT);

}

答案

inti,k;

k=0;

for(i=1;i<=n;i++)

if(s[i]>s[k])k=i;

return(k+1);

2./*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:

求n阶方阵主、副对角线上的元素之积。

------------------------------------------------*/

#defineN4

#include"stdlib.h"

#include

voidbky();

floatmul(intarr[][N])

{

/**********Begin**********/

 

/**********End**********/

}

main()

{

inta[N][N],i,j;

for(i=0;i

for(j=0;j

a[i][j]=random(10);

for(i=0;i

{

for(j=0;j

printf("%4d",a[i][j]);

printf("\n");

}

printf("Thesumis%d\n",mul(a));

bky();

}

voidbky()

{

FILE*IN,*OUT;

intm,n;

inti[4][4];

floato;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("ReadFILEError");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("WriteFILEError");

}

for(m=0;m<100;m++)

for(n=0;n<100;n++)

{

fscanf(IN,"%d",&i[m][n]);

}

o=mul(i);

fprintf(OUT,"%f\n",o);

fclose(IN);

fclose(OUT);

}

答案【参考代码】

inti,j;

floatt=1;

for(i=0;i

for(j=0;j

if(i==j||i+j==N-1)

t=t*arr[i][j];

return(t);

改错

1【程序改错】

--------------------------------------------------------

功能:

编制统计营业员一天的营业额的程序,设程序采用一个循环

实现,每次循环输入一笔交易金额并累计营业额。

由于营

业员一天完成的交易次数是不确定的,为此以最后附加输

入一笔0或负数交易额作为交易金额已全部输入结束的标志。

有以下统计营业员一天营业额的算法:

统计营业员一天营业额

{

营业额清0;

输入第一笔交易额;

while(交易额>0.0)

{

累计营业额;

输入下一笔交易额;

}

输出营业额;

}

记一笔交易额为变量sale,营业额为sigma。

------------------------------------------------------*/

#include

voidmain()

{

/**********ERROR**********/

floatsale,sigma

sigma=0.0;

printf("Entersaledata.\n");

/**********ERROR**********/

scanf("%f",sale);

while(sale>0.0)

{

/**********ERROR**********/

sigma+==sale;

printf("Enternextsaledata(<=0tofinish).\n");

scanf("%f",&sale);

}

printf("Sigmaofsaleis%.2f\n",sigma);

}

答案【改错1】错误

【学生答案】

floatsale,sigma

【参考答案】

floatsale,sigma;

 

============================================================

【改错2】错误

【学生答案】

scanf("%f",sale);

【参考答案】

scanf("%f",&sale);

 

============================================================

【改错3】错误

【学生答案】

sigma+==sale;

【参考答案】

sigma+=sale;

sigma=sigma+sale;

2.【程序改错】

--------------------------------------------------------

功能:

m个人的成绩存放在score数组中,请编写函数fun,

它的功能是:

将高于和等于平均分的人数作为函数值返回,

将高于和等于平均分的分数放在above所指的数组中。

程序中共有4条错误语句,请改正错误。

--------------------------------------------------------

注意:

不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/

#include

intfun(floatscore[],intm,floatabove[])

{

/**********ERROR**********/

floatav=1;

inti,n=0;

for(i=0;i

av+=score[i];

/**********ERROR**********/

av\=m;

for(i=0;i

if(av<=score[i])above[n++]=score[i];

/**********ERROR**********/

returnabove;

}

main()

{inti,n;

floatscore[9]={10,20,30,40,50,60,70,80,90},above[9];

/**********ERROR**********/

n=intfun(score,9,above);

printf("\nAbovetheaveragescoreare:

");

for(i=0;i

}

答案【改错1】错误

【学生答案】

floatav=1;

【参考答案】

floatav=0;

============================================================

【改错2】错误

【学生答案】

av\=m;

【参考答案】

av=av/m;

av/=m;

============================================================

【改错3】错误

【学生答案】

returnabove;

【参考答案】

returnn;

return(n);

============================================================

【改错4】错误

【学生答案】

n=intfun(score,9,above);

【参考答案】

n=fun(score,9,above);

填空

1.【程序填空】

---------------------------------------------------------

功能:

是将两个字符串连接为一个字符串,不许使用库函数strcat。

-------------------------------------------------------*/

#include

#include"string.h"

JOIN(s1,s2)

chars1[80],s2[40];

{

inti,j;

/**********FILL**********/

_____

/**********FILL**********/

for(i=0;_____'\0';i++)

s1[i+j]=s2[i];

/**********FILL**********/

s1[i+j]=_____;

}

main()

{

charstr1[80],str2[40];

gets(str1);gets(str2);

puts(str1);puts(str2);

/**********FILL**********/

_____

puts(str1);

}

答案【空1】错误

【学生答案】

_____

【参考答案】

j=strlen(s1)

for(j=0;s1[j]!

='10';j++);

for(j=0;s1[j];j++);

============================================================

【空2】错误

【学生答案】

for(i=0;_____'\0';i++)

【参考答案】

s2[i]!

=

*(s2+i)!

=

*(i+s2)!

=

【空3】错误

【学生答案】

s1[i+j]=_____;

【参考答案】

'\0'

NULL

0

【空4】错误

【学生答案】

_____

【参考答案】

JOIN(str1,str2)

2.【程序填空】

---------------------------------------------------------

题目:

<<<题干内容>>>

给定程序的功能是调用fun函数建立班级通讯录。

通讯录中记录每位学生的编号、姓名和电话号码。

班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

------------------------------------------------------*/

#include

#include

#defineN5

typedefstruct

{intnum;

charname[10];

chartel[10];

}STYPE;

/**********FILL**********/

intfun(_____*std)

{

FILE*fp;

inti;

/**********FILL**********/

if((fp=fopen("myfile5.dat",_____))==NULL)

return(0);

printf("\nOutputdatatofile!

\n");

for(i=0;i

fwrite(&std[i],sizeof(STYPE),1,fp);

/**********FILL**********/

_____;

return

(1);

}

main()

{STYPEs[10]={{1,"aaaaa","111111"},{2,"bbbbb","222222"},{3,"ccccc","333333"},

{4,"ddddd","444444"},{5,"eeeee","555555"}};

intk;

k=fun(s);

if(k==1)

printf("Succeed!

");

else

printf("Fail!

");

答案

【空1】错误

【学生答案】

intfun(____

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1