《C程序设计》期末复习练习题及参考答案2.docx

上传人:b****8 文档编号:30614185 上传时间:2023-08-18 格式:DOCX 页数:18 大小:22.36KB
下载 相关 举报
《C程序设计》期末复习练习题及参考答案2.docx_第1页
第1页 / 共18页
《C程序设计》期末复习练习题及参考答案2.docx_第2页
第2页 / 共18页
《C程序设计》期末复习练习题及参考答案2.docx_第3页
第3页 / 共18页
《C程序设计》期末复习练习题及参考答案2.docx_第4页
第4页 / 共18页
《C程序设计》期末复习练习题及参考答案2.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

《C程序设计》期末复习练习题及参考答案2.docx

《《C程序设计》期末复习练习题及参考答案2.docx》由会员分享,可在线阅读,更多相关《《C程序设计》期末复习练习题及参考答案2.docx(18页珍藏版)》请在冰豆网上搜索。

《C程序设计》期末复习练习题及参考答案2.docx

《C程序设计》期末复习练习题及参考答案2

《C程序设计》期末复习练习题及参考答案

(2)

一、单项选择题

1.判断字符串s1与字符串s2相等,应当使用:

A)if(s1=s2)

B)if(strcmp(s1,s2))

√C)if(!

strcmp(s1,s2))

D)if(strcmp(s1,s2)=0)

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

A.j*n+i√B.i*n+jC.i*n+j-1D.i*n+j+1

3.以下程序执行后的输出结果是()。

#include

#include

main()

{printf("%d\n",strlen("IBM\n012\t\"\\\0"));}

√A)10B)11C)16D)12

4.有如下程序片段:

inti=0;

while(i++<=2);

printf("%d",i);

则正确的执行结果是:

A)2B)3√C)4D)程序陷入死循环

5.下面哪个定义是合法的。

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};

6.一个C语言的语句必须使用的结束符号是()。

A),B)。

√C);D):

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

A)C程序中的注释只能出现在程序的开始位置和语句的后面。

B)C程序书写格式严格,要求一行内只能写一个语句。

√C)C程序书写格式自由,一个语句可以写在多行上。

D)用C语言编写的程序只能放在一个源程序文件中。

8.以下选项中不能作为合法常量的是()。

A)1.234e04B)1.234e+4√C)1.234e0.4D)1.234e0

9.以下选项中合法的用户标识符是()。

A)intB)#max√C)_3intD)A.max

10.设x和y均是int型变量,则执行下列语句后的输出为()。

x=15;y=5;printf("%d\n",x%=(y%2));

√A)0B)1C)6D)12

11.设x,y和z都是int型变量,且x=3,y=4,z=5,则下列表达式中,值为0的表达式是()。

A)x&&y√B)!

(x

z||1)C)x<=yD)x||++y&&y-z

12.以下程序运行结果是()。

#include

intfun(inti,intj)

{i++,j++;

returni+j;

}

intmain()

{inta=1,b=2,c=3;

c+=fun(a,b)+a;

printf("%d,%d,%d\n",a,b,c);

return0;

}

√A)1,2,9B)2,3,10C)1,2,10D)2,3,9

13.有以下程序,程序执行后的输出结果是()。

#include

intmain()

{inta[]={2,4,6,8,10},y=0,x,*p;

p=&a[1];

for(x=1;x<3;x++)

y+=p[x];

printf("%d\n",y);

return0;

}

A)10B)11√C)14D)15

14.有以下程序,以下叙述正确的是()。

#include

#include

intmain()

{charp[]={'a','b','c'},q[10]={'a','b','c'};

printf("%d%d\n",strlen(p),strlen(q));

return0;

}

A)在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3。

√B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3。

C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3。

D)由于p和q数组中都没有字符串结束符,故长度都不确定。

15.下列可用于C语言用户标识符的一组是()。

A)void,define,WORD√B)a3_3,_123,Car

C)For,-abc,IFCaseD)2a,DO,sizeof

16.以下选项中不属于字符常量的是

A)′C′√B)′′C′′C)′\xCC′D)′\072′

17.(15)以下定义语句中正确的是()。

A)inta=b=0;√B)charA=65+1,b=′b′;

C)floata=1,*b=&a,*c=&b;D)doublea=00;b=1.1;

18.当变量c的值不为2、4、6时,值也为"真"的表达式是()。

A)(c==2)||(c==4)||(c==6)√B)(c>=2&&c<=6)||(c!

=3)||(c!

=5)

C)(c>=2&&c<=6)&&!

(c%2)D)(c>=2&&c<=6)&&(c%2!

=1)

19.下面说明不正确的是()。

A)chara[10]="china";B)chara[10],*p=a;p="china";

C)char*a;a="china";√D)chara[10],*p;p=a="china";

20.有定义语句:

chars[10];,若要从终端给s输入5个字符,错误的输入语句是()。

A)gets(&s[0]);B)scanf("%s",s+1);C)gets(s);√D)scanf("%s",s[1]);

21.有以下程序,程序执行后的输出结果是()。

#include

voidmain()

{unsignedshorta=65535;

shortb;

b=a;

printf("%d\n",b);

}

A)65535B)0√C)-1D)1

22.在C语言中,以下叙述不正确的是()。

√A)在C程序中,无论是整数还是实数,都能被准确无误的表示

B)在C程序中,变量名代表存储器中的一个位置

C)静态变量的生存期与整个程序的生存期相同

D)C语言中变量必须先定义后引用

23.以下叙述中错误的是()。

A)在程序中凡是以"#"开始的语句行都是预处理命令行

B)预处理命令行的最后不能以分号表示结束

C)#defineMAX是合法的宏定义命令行

√D)C程序对预处理命令行的处理是在程序执行的过程中进行的

24.设有以下说明语句

typedefstruct

{intn;

charch[8];

}PER;

则下面叙述中正确的是()。

A)PER是结构体变量名√B)PER是结构体类型名

C)typedefstruct是结构体类型D)struct是结构体类型名

25.以下叙述中错误的是()。

A)gets函数用于从终端读入字符串√B)getchar函数用于从磁盘文件读入字符

C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件

26.有以下程序

#include

main()

{charp[]={′a′,′b′,′c′},q[10]={′a′,′b′,′c′};

printf("%d%d\n",strlen(p),strlen(q));}

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

A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

√B)由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C)由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D)由于p和q数组中都没有字符串结束符,故长度都不能确定

27.设有:

inta=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后,n的值是()。

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

28.设有如下定义:

intx=10,y=3,z;

则语句

printf("%d\n",z=(x%y,x/y));

的输出结果是()。

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

29.下面的程序

#include

voidmain()

{

charch;

scanf("%3c",&ch);

printf("%c",ch);

}

如果从键盘上输入abc回车

则程序的运行结果是()。

√A)aB)bC)cD)程序语法出错

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

#include

voidmain()

{intx[]={1,2,3};

ints,i,*p=x;

s=1;

for(i=0;i<3;i++)s*=*(p+i);

printf("%d\n",s);

}

A)7√B)6C)3D)8

二、填空题

1、函数add要求计算两个整数之和,并通过形参返回该值,代码如下:

voidadd(intx,inty,int*sum){*sum=x+y;}

2、程序设计中,需要定义一个指针变量p,该变量可以指向一个长度为5的字符型数组,定义代码如下:

char(*p)[5];。

3、设整型变量n的值为2,执行语句“n+=n-=n*n”后,n的值是   -4   。

4、共用体和结构体的定义格式类似,不同点是     结构体的成员占有各自不同的空间,而共用体的各成员放到同一存储空间。

                       。

5、设变量max、a、b已经正确定义,若要求a和b的最大值,并赋值给max,代码为:

max=a>b?

a:

b;。

6、下列程序的输出结果是    7,1      。

intast(intx,inty,int*cp,int*dp)

{*cp=x+y; *dp=x-y; }

main()

{inta=4,b=3,c,d;

ast(a,b,&c,&d);

printf("%d,%d/n",c,d); }

7、有如下输入语句:

scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是        a=1,b=3,c=2                 。

8、一个共用体类型的变量,其所占内存的大小是:

由占据内存空间最大的成员决定。

9、设有定义:

intx=12,n=5;则表达式x%=(n%2)的值为      0       。

10、设有floatx;写出得到x小数部分的表达式x-(int)x。

(假设x为12.345,则表达式的结果为0.345)

 

三、程序运行结果分析题

1.

#include

main()

{inta=5,b=4,x,y;

x=2*a++;

printf("a=%d,x=%d\n",a,x);

y=--b*2 ;

printf("b=%d,y=%d\n",b,y);

}

则程序运行结果是:

a=6,x=10

b=3,y=6

2.

#include

voidfun1(intx)

{x=20;}

voidfun2(intb[4])

{intj;

for(j=0;j<4;j++){b[j]=j;}

}

main()

{intx=10;

inta[4]={1,2,3,4},k;

fun1(x);

printf("x=%d\n",x);

fun2(a);

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

{printf("%d\n",a[k]);}

}

运行结果是:

x=10

0

1

2

3

3.

#include

main()

{intx,y;

scanf("%2d%*4s%2d",&x,&y);

printf("%d",y-x);

}

程序运行时输入:

123456789↙

则程序运行结果是:

66

4.

#include

structdate

{intyear;

intmonth;

intday;

};

voidfunc(structdatep)

{p.year=2000;

p.month=5;

p.day=22;

}

main()

{structdated;

d.year=1999;

d.month=4;

d.day=23;

printf("%d,%d,%d\n",d.year,d.month,d.day);

func(d);

printf("%d,%d,%d\n",d.year,d.month,d.day);

}

程序运行结果为:

1999,4,23

1999,4,23

5.

#include

voidFun(int*y)

{printf("*y=%d\n",*y);

*y+=20;

printf("*y=%d\n",*y);

}

main()

{intx=10;

printf("x=%d\n",x);

Fun(&x);

printf("x=%d\n",x);

}

程序运行结果是:

x=10

*y=10

*y=30

x=30

6.当运行以下程序时,运行结果是____4332____。

#include

intmain()

{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++)c[s[i]]++;

for(i=1;i<5;i++)printf("%d",c[i]);

printf("\n");

return0;

}

7.当运行以下程序时,运行结果是______________。

#include

#defineN10

floatfun(float*array,intn);

floatmax,min;

intmain()

{floatscore[N]={90,80,70.5,98,60.5,95,53,85,75,90};

printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,fun(score,N));

return0;

}

floatfun(float*array,intn)

{inti;

floatsum=array[0];

max=min=array[0];

for(i=1;i

{if(array[i]>max)max=array[i];

elseif(array[i]

sum=sum+array[i];

}

returnsum/n;

}

 

8.当运行以下程序时,从键盘输入如下内容并回车:

9556758885,则下面程序的运行结果是_____________________(输出共2行)。

#include

voidinput(float*a,intn)

{float*pData,*pEnd;

pData=a,pEnd=&a[n-1];

while(pData<=pEnd)scanf("%f",pData++);

}

floatsum(float*a,intn)

{floats=0;

float*pData,*pEnd;

pData=a,pEnd=&a[n-1];

while(pData<=pEnd)s+=*pData++;

returns;

}

intmink(float*a,intn)

{float*pData,*pEnd,*pKData;

pData=a,pEnd=&a[n-1],pKData=a;

while(++pData<=pEnd)

{if(*pData<*pKData)pKData=pData;}

returnpKData-a;

}

main()

{floata[5];

intk;

input(a,5);

printf("Sum=%6.2f\n",sum(a,5));

k=mink(a,5);

printf("Min:

a[%d]=%6.2f\n",k,a[k]);

}

Sum=399.00

Min:

a[1]=56.00

 

9.有以下程序

#include

main()

{FILE*fp;inta[10]={1,2,3},i,n;

fp=fopen("d1.dat","w");

for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);

fprintf(fp,"\n");

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d",&n);

fclose(fp);

printf("%d\n",n);

}

程序的运行结果是123。

 

四、程序填空题

阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

1.从键盘任意输入一个年号,判断它是否是闰年。

若是闰年,输出“Yes”,否则输出“No”。

已知符合下列条件之一者是闰年:

能被4整除,但不能被100整除。

能被400整除。

#include

main()

{

intyear,flag;

printf("Enteryear:

");

scanf("%d",&year);

if(year%4==0&&year%100!

=0||year%400==0)

{

flag=1;

}

else

{

flag=0;

}

if(flag)

{

printf("Yes\n");

}

else

{

printf("No\n");

}

}

2.编程判断m是否为素数。

#include

#include

intIsPrime(intm);

main()

{

intn,flag;

printf("Inputn:

");

scanf("%d",&n);

flag=IsPrime(n);

if(flag)

{

printf("它是素数\n");

}

else

{

printf("它不是素数\n");

}

}

intIsPrime(intm)

{

inti,k;

if(m<=1)

{

return0;

}

for(i=2;i<=sqrt(m);i++)

{

k=m%i;

if(k==0)

{

return0;

}

}

return1;

}

 

3.以下程序在数组a中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中,请补齐相应代码使程序能够正确运行。

#include

voidfind(int*a,intn,int*max,int*min)

{

inti;

*max=*min=0;

for(i=1;i

{

if(a[i]>a[*max])

____*max=i___;

elseif(a[i]

____*min=i_____;

}

}

intmain()

{inta[]={5,9,7,8,2,6,3};

intmax,min;

find(_____a,7,&max,&min______);

printf("max=a[%d],min=a[%d]\n",max,min);

return0;

}

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

当前位置:首页 > 自然科学 > 物理

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

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