C程序设计试题及题解_第1页
C程序设计试题及题解_第2页
C程序设计试题及题解_第3页
C程序设计试题及题解_第4页
C程序设计试题及题解_第5页
已阅读5页,还剩76页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计试题及题解

c程序设计试题及题解

1选择题

1.1c语言概述

1.C程序中main函数的位置(C)

A.必须在最开始B.必须在系统库函数后面

C.可以在自定义函数后面D.必须在最后

2.下面关于C语言用户标识符的描述,正确的是(D)

A.不能区分大小写B.用户标识符不能描述常量

C.类型名也是用户标识D.用户标识符可以作为变量名

3.关于C语言的叙述中,不正确的是(D)

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

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

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

D.注释说明只能位于一条语句的后面

4.若有说明语句:charC='\95';则变量C包含(D)个字符

A.1B.2C.3D.语法错误

5.结构化程序设计不包括(A)

A.最优化B.自顶而下,逐步细化

C.模拟化设计D.结构化编码

6.结构化程序设计的三种基本语句是(C)

A.函数结构、分支结构、判断结构B.函数结构、嵌套结构、平行结构

C.顺序结构、分支结构、循环结构D.分支结构、循环结构、嵌套结构

7.关于C语言数据类型的叙述中,正确的是(C)

A,枚举类型是基本类型B.数组不是构造类型

C.变量必须先定义后使用D.不允许使用空类型

8.关于C语言的源程序的叙述中,错误的是(C)

A.C语言的源程序由函数构成B.main函数可写在自定义函数后

C.必须包含有输入语句D.一行可书写多个语句

9.下面叙述中,(A)不是结构化程序设计中的三种基本结构之一

A.数据结构B.选择结构C.循环结构D.顺序结构

10.char型变量存放的是(A)

A.ASCII码值B.字符本身C.十进制代码值D.十六进制代码值

11.inta;charcl,c2;scanf("%d,%c,%c",&a,&cl,&c2);

若要求a、cl、c2的值分别为10、A和B,正确的数据输入是(B)

A.10ABB.10,A,BC.10ABD.10AB

12.以下叙述不正确的是(D)

A.C程序的执行总是从main函数开始1

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

C.C语言程序的基本组成单位是函数

D.在编译C程序源程序时,可发现注释中的拼写

13.inta,b;scanf(//%d,%d",&a,&b);

若要求a、b的值分别为10和20,正确的数据输入是(B)

A.1020B.10,20C.a=10,b=20D.10;20

14.在C语言源程序中,以下叙述正确的是(C)

A.main函数必须位于文件的开头

B.每行只能写一条语句

C.程序中的每一语句可以写成几行

D.每个语句的最后必须有点号

15.对于C语言源程序,以下叙述错误的是(C)

A.可以有空语句

B.函数之间是平等的,在一个函数内部不能定义其它函数

C.程序调试时如果没有提示错误,就能得到正确结果

D.注释可以出现在在语句的前面

16.下面叙述中,(A)不是结构化程序设计三种基本结构的共同特点

A.先判断后执行B.单入口,单出口

C.程序中没有执行不到的语句D.无死循环

17.intx=1234,y=123,z=12;则printf("%4d+%3d+%2d”,x,y,z);运行后的输出结果

为(D)

A.123412312B.12341234123412341231231231212

C.1234+1234+1234D.1234+123+12

1.2数据类型、运算符和表达式

1.intx=2;y=3:floati;则以下符合C语言语法的表达式是(B)

A.x=x*3=2B.x=(y=l)C.i=float(x)D.i%(-3)

2.inta=5,b=2,c=l;则表达式a-b〈c|b==c的值是(A)

A.0B.1C.2D.-1

3.floatx=3.5;intz=8;则表达式x+z%3/4的值是(B)

A.3.75B.3.5C.3D.4

4.inta=l,b=2,c=3;语句++a|++b&&++a运行后b的值为(D)

A.1B.0C.2D.3

5.对于整型变量x,下述语句(B)与x=x%2=0?1:0;不等价

A.if(x%2!=0)x=0;elsex=l;B.if(x%2)x=l;elsex=0;

C.if(x%2==0)x=l;elsex=0;D.if(x%2==l)x=0;elsex=l;

6.下面语句正确的是(B、C)

A.int*p;*p=20;

B.char*s=〃abcdef”;puts(s);

C.charstr口二〃abcdf〃;puts(str);

D.charstr[]={'a','b','c'};printf(〃版〃,str);

7.inta=2;则正确的赋值表达式是(A)

A.a-=(a*3)B.double(-a)C.a*D.a*4=3

8.intm=5,n=3;则表达式(m+1,n+1,(—m)+(n—))的值是(B)2

A.6B.7C.8D.9

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

A.<B.=C.+D.-

10.inta;则语句a=(3*4)+2%3;运行后a的值为(B)

A.12B.14C.11D.17

11.下面叙述中,错误的是(A)

A.其算术运算对象不包含函数

B.%的运算对象只能为整型量

C.算术运算的结合方向是“自左向右”

D.++和一运算符的结合方向是“自右向左”

12.已知inta=,R';则正确的表达式是(A)

A.a%10B.a=int(3e2)C.2*a=a++D.a=a+a=a+3

13.已知doublea=5.2;则正确的赋值表达式是(A)

A.a+=a-=(a=4)*(a=3)B.a=a*3=2

C.a%3D.a=double(-3)

14.以下语句中x的值一定被重新赋值的是(B)

A.if(x==y)x+=y;

B.if(x>y&&x!=y);x+=y;

C.if(x!=y)scanf("%d",&x)elsescanf("%d",&y);

D.if(x<y){x++;y++;}

15.设有double型变量a、b、c、e均有值,对代数式(3ae)/(bc),不正确的表达式是

(C)

A.a/b/c*e*3B.3*a*e/b/cC.3*a*c/b*cD.a*e/c/b*3

16.以下运算符中优先级最高的是(D)

A.>B.|IC.&&D.+

17.inta,b;doublex;则以下不符合C语言的表达式是(A)

A.x%(-3)B.a+=-2C.a=b=2D.x=a+b

18.inta[3][3];则表达式&a[2表l]-a的值为(B)

A.7B.8C.6D.9

19.以下(D)是正确的变量名

A.a.beeB.-PllC.intD.P_ll

20.若有定义inta=l,b=2,c=3,d=4,x=5,y=6;则表达式(x=a〉b)&&(y=c>b)的值

为(A)

A.0B.1C.5D.6

21.以下(D)是正确变量名

A.5fB.ifC.f.5D._f5

22.intx=3,y=4,z=5;则值为0的表达式是(D)

A・'x'&&y,B.x<=y

C.x||y=z&&y-zD.!((x<y)&&!z|11)

23.intx,a;则语句x=(a=3,a+1);运行后x、a的值依次为(C)

A.3、3B・4、4C.4、3D,3、4

24.inta,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是(B)

A.7B.8C.9D.10

25.inta=2,b=3;floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y

的值是(A)

A.3.5B.3.0C.2.5D.2.0

26.以下(B)是错误的整型常量3

A.-OxcdfB.018C.OxeD.Oil

27.语句a=(3/4)+3%2;运行后a的值为(B)

A.0B.1C.2D.3

28.inta=5;使b不为2的表达式是(C)

A.b=(++a)/3B.b=6-(—a)C.b=a%2D.b=a/2

30.下面叙述正确的是(B)

A.2/3与2.0/3.0等价B.(int)2.0/3与2/3等价

C.++5与6等价D.'A'与〃A〃等价

31.getchar()函数的功能是从终端输入(D)

A.一个整型量值B.一个实型变量值C.多个字符D.一个字符

32.inti=7tj=8;则表达式的值为(A)

A.1B.变量i的值C.0D.变量j的值

33.inti,j;则表达式(i=2,j=5,i++,i+j++)的值是(B)

A.7B.8C.9D.10

34.若希望当a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为

假”,

则不能满足要求的表达式是(C)

A.a%2==lB.!(a%2=0)C.!(a%2)D.a%2

35.下面叙述正确的是(A)

A.强制类型转换运算的优先级高于算术运算

B.若a和b是整型变量,(a+b)++是合法的

C.是合法的

D."A"+"B"是合法的

36.以下程序段运行后变量a的值为(D)

intx=6,y=5,a;a=(-x==y++)?x:y+1;

A.0B.1C.6D.5

37.下面程序段的运行结果是(D)

inta=5,b=6;printf("%d”,a/b);

A.5B.6C.7D.0

38.以下程序的运行结果是(D)

voidmainO{inta=65;charc='A';printf("%x,%d”,a,c);}

A.65,aB.41,aC.65,65D.41,65

1.3选择结构程序设计

1.嵌套else总是与(B)配对

A.第1个ifB.之前最近且尚未配对

C.缩进位置相同的ifD.之前最近的if

2.以下语句中,无内嵌的if语句是(D)

A.if(x==y)x+=y;

B.if(x>y&&x!=y)x+=y;

C.if(x!=y)scanf("%d",&x);elsescanf("%d",&y);

D.if(x<y){x++;y++;}

3.以下程序运行结果是(D)

main()4

{intn=5;

if(n++=6)printf("%d\n”,n);

elseprintf++n);

)

A.4B.5C.6D.7

4.以下程序段运行后x的值为(B)

inta[]={1,2,3],b[]={4,2,5};int*p,*q,i,x;

P=a;q=b;

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

if(*(p+i)==*(q+i))x=*(p+i)*2;

A.2B.4C.6D.不确定

5.inta=l,b=2,c=3;则执行以下程序后a、b、c的值分别为(D)

if(a<b){c=a,a=b,b=c;}

A.a—1b—2c—3B.a=2b—3c—1

C.a=2b=3c=3D.a=lb=lc=l

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

main()

{intn=,e';

switch(n--)

{default:puts("error");

case'a':

case'b':puts(〃good〃);break;

case'c':puts(〃pass〃);

case'd':puts("warn");

)

}

A.errorB.goodC.errorgoodD.warn

1.4循环控制

1.对于intx,与while(!x)等价的是(B)

A.while(x!=0)B.while(x=0)C.while(x!=l)D.while("x)

2.以下程序运行后,循环体运行的次数为(B)

inti=10,x;

for(;i<10;i++)x=x+i;

A.10B.0C.1D.无限

3.intx,下述语句(B)不会出现死循环

A.for(;;x+=l);B.for(;(x=getchar())!=’\n';);

C.while(1){x++;}D.for(x=10;;x-);

4.while循环和do-while循环的主要区别是(B)

A.do-while循环体内可以使用break语句,while循环体内不能用break语句

B.do-while的循环至少无条件执行一次,while的循环体不是

C.do-while循环体内可使用continue语句,while循环体内不能用continue语句

D.while的循环体至少无条件执行一次,do-while的循环体不是5

5.intx,y;for(x=0,y=0;(y!=123)&&(x<4);x++)y++;中的y++;被执行(A)次

A.4B.0C.123D.3

6.以下程序段运行后变量n的值为(D)

inti=l,n=l;

for(;i<3;i++){continue;n=n+i;}

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

inta[3][3]={1,0,2,1,0,2,1,0,1),i,j,s=0;

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

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

s=s+a[i][j];

8.以下程序运行结果(C)

main()

(

intsum=0,item=0;

while(item<5)

(

item++;sum+=item;

if(sum>=6)break;

printf(〃%d\n〃,sum);

A.10B.15C.6D.7

9.下面程序运行结果是(A)

inti=0,a[]={1,2,3,4,5};

do{a[i]+=10;}while(a[++i]>2);

for(i=0;i<5;i++)printf(,z%d”,a[i]);

A.112345B.12345C.1112131415D.1112345

10.若inti=0,x=0;inta[3][3]={1,2,3,4,5,6,7,8,9};则以下程序运行

后x的值为(C)for(;i<3;i++)x+=a[i][为i];

A.0B.12C.15D.18

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

main()

{intsum=0,item=0;

while(item<5)

(

item++;sum+=item;

if(sum==5)break;

)

printf(级d\n〃,sum);

A.10B.15C.5D.6

12.下面程序段的运行结果是(D)

inti=0,a[]={3,4,5,4,3);

do{a[i]++;}while(a[++i]<5);6

for(i=0;i<5;i++)printfa[i]);

A.45654B.34543

13.下面程序段的运行结果是(C)

inti=0,a[]={7,5,7,3,8,3};

do{a[i]+=2;}while(a[++i]>5);

for(i=0;i<6;i++)printf(z,%d〃,a[i]);

A.9795105B.9593103C.45554D.45543C.957383D.7573

83

1.5数组

1.inta[][3]={1,2,3,4,5,6,7,8};则数组a的行数(B)

A.2B.3C.4D.无法确定

2.以下数组定义中,正确的是(B、D)

A.inta[2][3]={1,2,3,4,5,6,7};

B.inta[]□={{1,2,3},{4,5,6},[7,8,9});

C.inta[2][]={1,2,3,4,5,6};

D.inta[][4]={6};

3.inta=6,b=2;char-C2='b';则表达式a+b%5+C2-Cl的值是(C)

A.7B.8C.9D.表达式错误

4.charstrl[6]=〃abcdm〃,*ps,*str2="abcdef”;正确的是(B)

A.stycpy(strl,str2);B.表达式strcmp(strl,str2)的值>0

C.strl=str2;D.表达式strlen(strl)的值为6

5.以下能对一维数组a进行正确初始化的语句是(D)

A.inta[5]=(0,0,0,0,0);B.inta[5]=[0];

C.inta[5]={1,2,3,4,5,6,7};D.inta□={0};

6.以下(A)是错误的字符串常量

A.'abc'B.〃12T2〃C.〃0〃D・〃〃

7.charstr[8]={"Fujian"};则分配给数组str的存储空间是(C)字节

A.6B.7C.8D.9

8.下列数组定义中,正确的是(A)

A.inta[10];B.intn=10,a[n];

C.intN=10;inta[N];D.intn;scanf("%d〃,&n);inta[n];

9.inta[2][3];则对数组元素的非法引用是(D)

A.a[0][l/2]B.C.a[4-4][0]D.a[0][3]

10.inta=2;则a=strcmp(〃miss","miss")运行后a的值为(B)

A.1B.0C.-1D.2

11.以下程序结束后屏幕输出(B)

charstr口二〃ab\\cd〃;printfstrlen(str));

A.4B.5C.6D.7

12.int则对a数组元素引用不正确的是(A)

A.a[10]B.a[3+5]C.a[10-10]D.a[5]

13.设有以下变量定义:

charstrl口二〃string”,str2[8],*str3,*str4=〃string”;

则(A)是正确的7

A.strcpy(strl,〃china〃);B.str2=〃china”;

C.strcpy(*str3,“china");D.strcpy(str4[0],“china");

14.以下能对一维数组a进行正确初始化的语句是(D)

A.inta[5]=(0,0,0,0,0);B.inta[s]=[0];

C.inta[5]={1,2,3,4,5,6,7};D.inta[]={0};

15.inta[][3]={1,2,3,4,5,6,7,8,9};则表达式sizeof(a)/sizeof(a[0])

的值为(A)

A.3B.4C.5D.9

16.下列数组定义中,正确的是(A)

A.inta[5]={0};B.inta[]={012};C.inta[5]=0;D.inta[];

18.inta[3][4]={{1,2},{0},{1,2,3}};则[1]的值为(A)

A.0B.{1,2}C.1D.3

19.inta[3]={0,1,2};则4[1]的值为(B)

A.0B.1C.2D.3

20.inta[5]={1,2,3,4,5};则语句a[l]=a[3]+a[2+2]-a[3T];运行后的值

为(A)

A.6B.5C.1D.2

21.charstr[6]={'a','b',''0','d','e','f'};则语句puts(str);的输出结果

是(D)

A.ab\B.abdefC.ab\0D.ab

22.chara[]=,,abcdef,\b口二〃xyz〃;以下程序运行后输出(B)

strcpy(a,b);printf(〃%c〃,a⑵);

A.cB.zC.\0D.d

23.以下程序段运行后屏幕输出为(A)

charstr[80];strcpy(str,"hello");printf("%d”,strlen(str));

A.5B.6C.7D.80

24.以下程序段运行后屏幕输出为(C)

chara[]="abc\0mis”;printf('%d”,strlen(a));

A.5B.8C.3D.4

1.6函数

1.C语言函数的描述中,正确的是(B)

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

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

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

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

2.用scanf()函数输入个字符给chara,不正确的函数调用是(B)

A.scanf("%d",&a);A.scanf("机f”,&a);

C.scanf&a);D.scanf("%u",&a);

3.putchar()函数的功能是向终端输出(B)

A.多个字符B.一个字符

C.一个实型变量值D.一个整型变量表达式

4.用scanf()函数输入一个整数给inta,正确的函数调用是(B)

A.scanfa);B.scanf&a);

C.scanf("A",&a);D.scanf&a);

5.C语言的函数体由(B)括起来8

A.()B.{}C.[]D./**/

6.如下fun函数的类型是(C)

fun(floatx){doubley;y=x*x;return(int)y;}

A.voidB.doubleC.intD.float

7.intfun(char*str)

{char*p=str;

if(p!='\0')p++;

return(p-str);

)

则以下语句执行后的输出结果是(A)

printf(,,%d\nz,,fun("student"));

A.7B.8C.9D.10

8.以下程序的屏幕输出为(B)

#include<stdio.h>

voidf(inti){inta=2;a=i++;printf(,z%d〃,a);}

main(){inta=l,c=3;f(c);a=c++;printf(,,%d",a);}

A.43B.33C.45D.35

9.intfun(){staticintk=0;return++k;}

以下程序段运行后屏幕输出为(D)

inti;

for(i=l;i<=5;i++)fun();

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

A.0B.1C.5D.6

10.以下程序运行的结果是(A)

intfun(intarray[4][4])

{intj;

for(j=0;j<4;j++)printf(〃%2d〃,array[2][j]);

)

main(){inta[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0};fun(a);

A.2005B.1004C.0120

11.以下程序运行后屏幕输出为(D)

^include<stdio.h>

inta=2,b=3;

intmax(inta,intb){returna>b?a:b;}

main(){inta=4;printf(/,%d〃,max(a,b));}

A.23B.2C.3D.4

12.以下程序运行后屏幕输出为(B)

#include<stdio.h>

intf(intx,inty){return(x+y);}

main(){inta=2,b=3;printf(,z%d+%d=%d\n,z,a,b,f(a,b));}

A.0B.2+3=5C.2+3=0

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

^include<stdio.h>

intglobal=100;

9}D.0450D.3+2=5fun(){intglobal=5;return++global;}

voidmain(){printf("%d\n〃,fun());}

A.100B.101C.5D.6

1.7预处理命令

1.若有定义:definePI3,则表达式PI*2*2的值为(A)

A.12B.4C.3D.不确定

2.设有如下定义typedefint*INTEGER;INTEGERp,*q;则正确的表述是(C)

A.p是int型变量

B.q是基类型为int的指针变量

C.p是基类型为int的指针变量

D.程序中可用INTEGER代替int类型名。

3.以下叙述中,正确的是(A)

A.宏展开不占用运行时间,只占用编译时间

B.预编译处理命令行必须以分号结束

C.一个源程序只能有一个预编译处理命令行

D.使用带参数的宏定义时,应该说明每个参数的数据类型

4.以下叙述中,不正确的是(C)

A.宏展开不占用运行时间,只占用编译时间

B.宏名无类型

C.宏名必须用大写字母表示

D.预处理命令行都必须以#号开始

5.以下叙述中,正确的是(B)

A.«definePRICE=30定义了30等价的符号常量PRICE

B.预编译处理命令行都必须以#开头

C.宏名只能是含大写字母和数字字符

D.在程序的一行上可以书写几个有效的宏定义

6.下面程序的输出结果是(C)

ttinclude<stdio.h>

#defineONE1

SdefineTWOONE+1

ftdefineTHREETWO+1

voidmain(){printfTHREE-ONE);}

A.产生错误B.1C.2D.3

7.以下程序执行时,输入12345〈回车)输出为(A)

#include<stdio.h>

#defineN5

voidmain()

(

inta[N];int*p=a;

while(p<a+N)scanf("%d”,p++);

while(p>a)printf(/z%d",*(一p));

}10

A.54321B.12345C.23451D.43215

8.ttdefineMOD(x,y)x%y

则执行以下程序段后,z的值是(D)

intz,a=15,b=100;z=MOD(b,a);

A.100B.15C.11D.10

9.下面程序的输出结果是(A)

#include<stdio.h>

ftdefineSQR(x)(x*x)

voidmainO{inta,b=3;a=SQR(b+2);printf(z/\n%d/z,a);}

A.11B.25C.值不定D.产生错误

1.8指针

1.若函数fun的函数头为

intfun(inti,intj)

且函数指针变量P定义如下:

int(*p)(inti,intj);

则要使指针p指向函数fun的赋值语句是(B)

A.p=*funB.p=fun;C.p=fun(i,j)D.p=&fun

2.设有以下语句,则(D)是对a数组元素的不正确引用,其中0Wi<10。

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

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

3.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;当执行p++;后

卜列叙述错误的是(A)

A.p向高地址移了一个字节B.p与a+1等价

C.语句printfp);输出20D.p指向数组元素a[l]

4.以下程序段运行后*(++p)的值为(C)

chara[6]="work";char*p;p=a;

A.'w'B.存放'w'的地址C.'。'D.存放的'。'地址

5.以下程序运行后*(p+3)的值为(A)

chara[]="good";char*p;p=a;

A.'d'B.'\0'C.存放'd'的地址D.'O'

6.以下程序运行后x的值为(D)

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

int*p,*q,i,x;

p=&a[0];q=&a[8];

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

if(*(p+i)==*(q-i))x=*(p+i)*2;

A.2B.4C.6D.不确定

7.以下程序运行段运行后x的值为(D)

inta[]={1,2,3,4,5,6,7,8},i,x=l,*p=&a[2];

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

A.不确定B.24C.120D.60

8.下面程序的输出结果是(A)11

#include<stdio.h>

voidmain()

{inti;char*s="abc〃;

for(i=0;i<3;i++)printf("%s\n〃,s+i);

)

abccabca

A.beB.beC.cD.ab

cabcbeabc

9.执行以下程序段的输出结果是(B)

inta=10,*p=&a;printf(〃笈1〃,++*p);

A.10B.11C.变量a的地址D.变量a的地址加1

1.9结构体与共用体

1.structstudent{intnum;charname[10];floatscore;}wang,zhang;

变量wang所占的内存字节是(B)

A.14B.16C.18D.9

2.structstudent{intnum;charname[10];floatscore;}wang,zhang;

则不正确的叙述是(C)

A.struct是结构体类型的关键字

B.zhang是结构体变量名

C.wang是结构体类型名

D.num、name、score都是结构体类型student的成员名

3.structteacher{intnum;charname[10];charsex;intage;floatscore;}

teacherl;

则变量teacherl所占用的内存字节是(C)

A.5B.14C.19D.20

4.charch;intj,k;enumday{sum,mon,tue,wed,thu,fri,sat};int

a[sat];

判定下列语句是否符合语法规则,结果是(C)

chara;/*语句1*/

j+k=j;/*语句2*/

if(a[mon]>0)j++;/*语句3*/

A.语句2错误,其它正确B.语句1正确,其它错误

C.语句3正确,其它错误D.语句都错误

5.以下C语言共用体类型数据的描述中,不正确的是(D)

A.共用体变量占的内存大小等于所需内存最大的成员所占的内存

B.共用体类型可以出现在结构体类型定义中

C.在定义共用体变量的同时允许对另一个成员的值进行初始化

D.同一共用体中各成员的首地址不相同

6.若有以下类型说明,叙述正确的是(A)

typedefsturct{intnum;char*name;intscore;}STU,*PSTU;

A.STU是变量名

B.PSTU是变量名

C.PSTU是指向结构体类型STU的指针类型名12

D.类型说明语句有错误

7.unionu_type{inti;doublex;floatf;};

structstr_type{charstr[100];unionutypeu⑵;};

则语句printf("%d”,sizeof(structstr_type));的输出结果是(B)

A.100B.116C.120D.200

8.下列对结构体类型变量定义不正确的是(C)

A.structteacher{intnum;intage;}teacherl;

B.struct{intnum;intage;}teacherl,teacher2;

C.struct(intnum;intage;}teacher,

D.structteacher{intnum;intage;};

9.structnode{intdate;structnode*next;}

voidfun(structnode*head)

{structnode*p=head;

while(p){structnode*q=p->next;free(p);p=q;}

则该函数的功能是(A)

A.删除整个单向链表B.删除单向链表中的一个结点

C.显示单向链表中的所有数据D.创建单向链表

10.对枚举类型进行定义,不正确的是(A)

A.enumb(1,2,3};B.enuma{A,B,C);

C.enumc{A=3,E,F};D.enumd{x=0,y=5,z=9};

11.下面程序的输出结果为(B)

#include<stdio.h>

voidmainO

{enumWeekday{sum=7,mon=l,tue,thu,fri,sat}day=sat;printf(〃%d\n〃,

day);)

A.7B.6C.5D.4

12.以下程序的运行结果(D)

#include<stdio.h>

unionutype{inti;floatf}U[2];

voidmain(){printf("sizeof(u):%d\n〃,sizeof(u));}

A.2B.4C.6D.8

13.structlink{intdata;structlink*next;}*head,*p;

并已建立如下图示所示的链表结构:

-------►datanull

则能保留链表其它结点,而删除p所指向结点的程序段是(A

head.datanext--------►datanext

)

A.head->next=p->next;free(p);

B.head->next=p;p->next=head->next;free(p);

C.free(p);head->next=p;p->next=head->next;

D.free(p);head->next=p->next;

14.structnode{intdata;structnode*next;};

voidfun(structnode*head)

{13

structnode*p=head;

while(p){printfp->data);p=p->next;break;}

则函数fun()的功能是(C)

A.删除单向链表B.显示单向链表中的所有数据

C.显示单向链表中的第一个数据D.创建单向链表

15.函数fun的功能是(B),其中head指向链表着结点整个链表结构如下图:

structnode{intdata;

structnode*next;

dataInext

intfun(structnode*head)

intn=0;structnode*t=head;

while(t!=NULL){n++;t=t->next;}

returnn;

A.删除链表head中的所有结点B.计算链表head中的结点个数

C.插入一个元素到链表head中D.创建一个链表head

16.structlink{intdate;structlink*next;}*head,*p;

并已建立如下图所示的链表结构:

指针P”则能够把P所指结点插入到链表中成为链表第2个结点的程序段是(C)

A.p->next=head->next;head->next=p;

B.head->next=p;p->nextzzhead->next;

C.p.next=head.next;head.next=p;

D.(*head).next=p;(*p).next=(*head).next;

1.10位运算

1.在对于无符号数的位运算中,操作数右移一位相当于(A)

A.操作数除于2B.操作数乘以2C.操作数除于4

2.inta=20,b=28,C;则执行语句C=(a&b)>>2;后C的值为(A)

A.5B.7C.80D.112

3.intx=3,y=4;则表达式!xl|y的值为(A)

A.1B.0C.3D.4D.操作数乘以414

1.11文件

1.以下叙述正确的是(D)

A.C语言中的文件是流式文件,因此只能顺序存取数据

B.打开一个已存在的文件进行写操作后,该文件中的全部数据必定被覆盖

C.对文件进行写操作后,须先关闭该文件后再打开,才能读到第1个数据

D.对文件写操作后,须将它关闭,否则可能丢失数据

2.标准函数fgets(s,n,f)的功能是(D)

A.从f指向的文件中读取长度为n的字符串存入指针s所指的内存

B.从f指向的文件中读取长度不超过n-1的字符串存入指针s所指的内存

C.从f指向的文件中读取几个字符存入指针s所指的内在

D.从f指向的文件中读取长度为n-1的字符串存入指针s所指的内存

3.以下程序运行后,屏幕显示writeok!

下列说法正确的是(D)

#include<stdio.h>

main()

(

FILE*fp=fopen("data,txt","wt");

if(fp!=NULL)

{fprintf(fp,Z/Filewritesuccessed!\n,z);fclose(fp);puts("write

ok!〃);})

A.当前工作目录下存在data,txt文件,其中内容是writeok!

B.fclose(fp);语句的功能是打开文件

C.当前工作目录下一定不存在data.txt文件

D.当前工作目录下一定存在data,txt文件

4.以下程序的功能是(B)

#include<stdio.h>

main()

(

FILE*fp;longintn;

fp=fopen(〃wj.txt〃,〃rb〃);fseek(fp,0,SEEK_END);

n=ftell(fp);fclose(fp);printf("%ld〃,n);

}

A.计算文件wj.txt的起始地址

B.计算文件wj.txt的终止地址

C.计算文件wj.txt内容的字节数

D.将文件指针定位到文件末尾

5.以下程序执行文件名是file.exe

main(intargc,char*argv[])

{inti;

for(i=l;i<argc;i++)printf(〃%s%c〃,argv[i],(i<argc-l?":''n'));

)

在DOS命令输入fileMyCLanguageandProgramming〈回车〉,其输出结果是(B)

15A.CLanguageandProgramming

B.MyCLanguageandProgramming

C.MyCLanguageand

D.fileMyCLanguageandProgramming

6.对下面程序正确的描述是(B)

#include<stdio.h>

voidmain()

{FILE*in,*out;

if((in=fopen("infile.txt",〃r〃))==NULL){puts(^cannotopeninfile.");

exit(O);)

if((out二fopen(〃outfile.txt〃,〃w〃))=NULL){puts(^cannotopenoutfile.〃);

exit(0);}while(!feof(in))fputc(fget(in),out);

fclose(in);fclose(out);

)

A.程序实现在屏幕上显示磁盘文件infile,txt的内容

B.程序实现将两个磁盘文件infile.txt和outfile.txt的内容合二为一

C.程序实现将磁盘文件intfile.txt复制到磁盘文件outfile.txt

D.程序实现将两个磁盘文件合并在屏幕上输出

7.以下程序的可执行文件名为tt.exe,若程序运行后屏幕显示:weare,则在DOS提

示符

下输入的行名是(C)

voidmain(intargc,char*argv[])

{inti;

for(i=l;i<argc;i++)printf(z,%s,z,argv[i]);

A.ttB.ttweC.ttweareD.ttwearehappy!

2改错题

1.统计输入字符串中大小写字母的个数。如:

输入abcdEFGHIJK123

输出4

答案:

#include<stdio.h>

ttinclude<string.h>

mainO

(

charstrl[128];

/**/inti;len,sum=0;/**//*inti,len,sum=0;*/

gets(strl);len=strlen(strl);

for(i=O;i<len;i++)

(

/**/if(strl[i]>='a'||strl[i]<='z')/**//*if(strl[i]>='a'&&

strl[i]<='z')*/sum++;

)

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

)

2.将从键盘依次输入的M个整数逆序输出。如:

输入1246568325357629

输出2976352583656412

答案:

^include<stdio.h>

#include<math.h>

#defineM8

main()

{inta[M],i;

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

scanf(,z%dz,,/**/a[i]/**/);/*&a[i]*/

/**/for(i=M-l;i<=0;i—)/**//*for(i=MT;i>=0;i-)*/

printf(〃%d〃,a[i]);

}

3.计算大于10的最小n个能被3整除的正整数之和。

根据函数fun的参数n,计算大于10的最小n个能被3整除的正整数之和。如:

fun(8)=lllll0.3961215182133

答案:

ftinclude<string.h>

Sinclude<conio.h>

#include<math.h>

^include<stdio.h>

^defineM50

doublefun(intn)

{doubley=0.0;

inti,j=0;

for(i=l;;i++)

/**/if((i<10)&&(i%3=0))/**//*if((i>10)&&(i%3=0))*/

/**/y+=l/i;/**//*y+=l.0/i;*/

j++;

)

if(j==n)break;

)

returny;

}

voidmain(){printf(,zfun(8)=%8.31f\n”,fun(8));}

4.从键盘上输入2个整数及1个运算符进行运算。如:

17

输入1+2

输出1+2=3

答案:

#include<stdio.h>

^include<conio.h>

voidmain()

{intm,n,result,flag=0;

/**/charch,/**//*charch;*/

scanf(〃%d%c%d〃,&m,&ch,&n);

/**/switchch/**//*switch(ch)*/

{case'+':result=m+n;break;

caseresult=m-n;break;

case':result=m*n;break;

caseresult=m%n;break;

case':result=m/n;break;

default:{puts("Error!〃);flag=l;}

)

if(!flag)printf(z,%d%c%d=%d\nz,,m,ch,n,result);

)

5.输出201〜300之间的所有素数,统计总个数。

答案:

ttinclude<stdio.h>

#include<math.h>

voidmain(){intnum;num=fun();printf(〃\nThetotalofprimeis%d〃,num);

intfun()

(

intm,i,k,n=0;

for(m=201;m<=300;m+=2)

{k=sqrt(m+1);

for(i=2;i<=k;i++)

/**/if(m/i==0)/**//*if(m%i==0)*/

break;

/**/if(i==k)/**//*if(i>k)*/

{printf(,z%-4d”,m);

n++;;

if(n%10==0)putsC,z);

)

)

returnn;

)

6.统计输入字符串中大写类英文字母的个数。如:

输入abcDEFGH12318}

输出5

答案:

#include<stdio.h>

#include<string.h>

main()

(

/**/charstrl/**/;/*charstr1[255]*/inti,len,sum=0;

scanf(〃%s〃,strl);

len=strlen(strl);

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

(

if(strl[i]>='A'&&strl[i]<='Z')

/**/sum-;/**//*sum++;*/

printf(〃%d\n〃,sum);

7.从键盘依次输入M个整数,输出其中所有的偶数。如:

输入2362384526

输出623826

答案:

^include<stdio.h>

#include<math.h>

/**/#includeM5/**//*#defineM5*/mainO

(

inta[M],i;

for(i=0;i<M;i++)scant'(,z%d,z,&a[i]);

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

/**/if(a[i]/2==0)/**//*if(a[i]%2=0)*/printf(,z%d〃,a[i]);

)

8.输出如下三角形:

*

***

答案:

ttinclude<stdio.h>

voidmain()19

/**/inti;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论