C语言习题集(试卷2008版)_第1页
C语言习题集(试卷2008版)_第2页
C语言习题集(试卷2008版)_第3页
C语言习题集(试卷2008版)_第4页
C语言习题集(试卷2008版)_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

《C语言程序设计》习题集编辑:陈美成院校:贵州航天职业技术学院系部:计算机科学系班级:姓名:2010版试题一(11)以下叙述中正确的是A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点(12)C语言中用于结构化程序设计的3种基本结构是

A)顺序结构、选择结构、循环结构

B)if,switch,breakC)for,while,do-while

D)if,for,continue(13)C语言中最简单的数据类型包括A)整型、实型、逻辑型

B)整型、实型、字符型C)整型、字符型、逻辑型

D)字符型、实型、逻辑型(14)若变量已正确定义并赋值,以下符合C语言语法的表达式是

A)a:=b+1

B)a=b=c+2

C)int18.5%3

D)a=a+7=c+b

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

A)void,define,WORD

B)a3_b3,_123,Car

C)For,-abc,IFCase

D)2a,DO,sizeof

(16)C语言中运算对象必须是整型的运算符是

A)%=

B)/

C)=

D)<=

(17)若变量a,i已正确定义,且i已正确赋值,合法的语句是

A)a==1

B)++i;

C)a=a++=5;

D)a=int(i);

(18)已知

intt=0;

while(t=1)

{...}

则以下叙述正确的是

A)循环控制表达式的值为0

B)循环控制表达式的值为1

C)循环控制表达式不合法

D)以上说法都不对

(19)若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是

A)10<回车>22<回车>33<回车>

B)10.0,22.0,33.0<回车>

C)10.0<回车>22.033.0<回车>

D)10

22<回车>33<回车>

(20)有如下程序:

main()

{

intx=1,a=0,b=0;

switch(x){

case0:b++;

case1:a++;

case2:a++;b++;

}

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

该程序的输出结果是

A)a=2,b=1

B)a=1,b=1

C)a=1,b=0

D)a=2,b=2

(21)有以下程序

main()

{inti=1,j=1,k=2;

if((j++||k++)&&i++)

printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是

A)1,1,2

B)2,2,1

C)2,2,2

D)2,2,3

(22)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

该程序的输出结果是

A)0.000000

B)0.250000

C)0.500000

D)1.000000

(23)有如下程序:

main()

{intn=9;

while(n>6){n--;printf("%d",n);}

}

该程序的输出结果是

A)987

B)876

C)8765

D)9876

(24)在下列选项中,没有构成死循环的是

A)inti=100;

while(1)

{i=i%100+1;

if(i>100)break;

}

B)for(;;);

C)intk=10000;

do{k++;}while(k>10000);

D)ints=36;

while(s)--s;

(25)设intx=1,y=1;表达式(!x||y--)的值是

A)0

B)1

C)2

D)-1

(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是

A)函数调用可以作为独立的语句存在

B)函数调用可以作为一个函数的实参

C)函数调用可以出现在表达式中

D)函数调用可以作为一个函数的形参

(27)有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序运行后的输出结果是

A)编译出错

B)9

C)21

D)9.0

(28)若有以下调用语句,则不正确的fun函数的首部是

main()

{…

inta[50],n;

fun(n,&a[9]);

}

A)voidfun(intm,intx[])

B)voidfun(ints,inth[41])

C)voidfun(intp,int*s)

D)voidfun(intn,inta)

(29)fseek函数的正确调用形式是

A)fseek(文件指针,起始点,位移量)

B)fseek(文件指针,位移量,起始点)

C)fseek(位移量,起始点,文件指针)

D)fseek(起始点,位移量,文件指针)

(30)若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是

A)EOF

B)-1

C)1

D)NULL

(31)若有说明语句:charc='\72';则变量c

A)包含1个字符

B)包含2个字符

C)包含3个字符

D)说明不合法,c的值不确定

(32)若有说明inta[3][4];则a数组元素的非法引用是

A)a[0][2*1]

B)a[1][3]

C)a[4-2][0]

D)a[0][4](33)设有以下说明语句

structstu

{inta;

floatb;

}stutype;

则下面的叙述不正确的是

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

B)structstu是用户定义的结构体类型

C)stutype是用户定义的结构体类型名

D)a和b都是结构体成员名

(34)在C语言中,引用数组元素时,其数组下标的数据类型允许是

A)整型常量

B)整型表达式

C)整型常量或整型表达式

D)任何类型的表达式

(35)若运行时给变量x输入12,则以下程序的运行结果是

main()

{intx,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

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

}

A)0

B)22

C)12

D)10

(36)以下说法正确的是

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

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

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

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

(37)表达式0x13^0x17的值是

A)0x04

B)0x13

C)0xE8

D)0x17

(38)有以下程序

#defineF(X,Y)(X)*(Y)

main()

{inta=3,b=4;

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

}

程序运行后的输出结果是

A)12

B)15

C)16

D)20

(39)下列程序执行后的输出结果是

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5];

a=0;b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

A)6

B)7

C)8

D)9

(40)若有下面的程序段:

chars[]="china";char*p;p=s;

则下列叙述正确的是

A)s和p完全相同

B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等

D)*p与s[0]相等

(41)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

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

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

程序运行后的输出结果是

A)1,2,3,4,5,6,7,8,9,10,

B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10,

D)1,2,10,9,8,7,6,5,4,3,

(42)以下程序的运行结果是

#include"stdio.h"

main()

{structdate

{intyear,month,day;}today;

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

}

A)6

B)8

C)10

D)12

(43)若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是

A)a,point,*&a

B)&*a,&a,*point

C)*&point,*point,&a

D)&a,&*point,point

(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是

A)地址传递

B)单向值传递

C)由实参传形参,再由形参传实参

D)传递方式由用户指定

(45)已定义以下函数

fun(char*p2,char*p1)

{

while((*p2=*p1)!='\0'){p1++;p2++;}

}

函数的功能是

A)将p1所指字符串复制到p2所指内存空间

B)将p1所指字符串的地址赋给指针p2

C)对p1和p2两个指针所指字符串进行比较

D)检查p1和p2两个指针所指字符串中是否有'\0'

(46)若执行下述程序时,若从键盘输入6和8时,结果为

main()

{inta,b,s;

scanf("%d%d",&a,&b);

s=a

if(a<b)

s=b;

s*=s;

printf("%d",s);

}

A)36

B)64

C)48

D)以上都不对

(47)fscanf函数的正确调用形式是

A)fscanf(fp,格式字符串,输出表列);

B)fscanf(格式字符串,输出表列,fp);

C)fscanf(格式字符串,文件指针,输出表列);

D)fscanf(文件指针,格式字符串,输入表列);

(48)下列关于C语言数据文件的叙述中正确的是

A)文件由ASCII码字符序列组成,C语言只能读写文本文件

B)文件由二进制数据序列组成,C语言只能读写二进制文件

C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

(49)有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-'a'+'A';

s++;

}

}

main()

{charstr1[100]="abcddfefdbd",c='d';

ss(str1,c);printf("%s\n",str1);

}

程序运行后的输出结果是

A)ABCDDEFEDBD

B)abcDDfefDbD

CabcAAfefAbA

D)Abcddfefdbd

(50)若以下定义:

structlink

{intdata;

structlink*next;

}a,b,c,*p,*q;

且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是:

A)a.next=c;c.next=b;

B)p.next=q;q.next=p.next;

C)p->next=&c;q->next=p->next;

D)(*p).next=q;(*q).next=&b;

二、填空题

(6)设y是int型,请写出y为奇数的关系表达式【6】。(7)设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【7】

(8)下列程序的输出结果是【8】。

maim

()

{charb[]="Helloyou";

b[5]=0;

printf("%s\n",b);}

(9)当调用函数时,实参是一个数组名,则向函数传递的是【9】。

(10)以下程序的输出结果是【10】。

inta=1234;

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

(11)用高级语言编写的程序称为【11】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。

(12)以下程序的输出结果是【12】。

main()

{inta=0;

a+=(a=8);

printf("%d\n",a);}(13)函数voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti=0;

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

{f=【13】*f;

w=f/(2*i+1);

s+=w;}

【14】=s;}

(14)函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。

例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。

#include<conio.h>

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【15】;

for(i=1;i<=n;i++)【16】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;}

main()

{clrscr();

printf("p=%f\n",fun(12,8));}

(15)该程序运行的结果是【17】。

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0||i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

(16)下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符1,则输出3,请填空。

#include<conio.h>

#include<stdio.h>

#defineM81

intfun(char*ss,charc)

{inti=0;

for(;【18】;ss++)

if(*ss==c)i++;

returni;}

main()

{chara[M],ch;

clrscr();

printf("\nPleaseenterastring:");gets(a);

printf("\nPleaseenterachar:");ch=getchar();

printf("\nThenumberofthecharis:%d\n",fun(a,ch));}

(17)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen(【19】))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);}

(18)设有如下宏定义

#defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通过宏调用实现变量a,b内容交换,请填空。

floata=5,b=16,c;

MYSWAP(【20】,a,b);

试题二一、选择题(11)下列叙述中正确的是

A)C语言编译时不检查语法

B)C语言的子程序有过程和函数两种

C)C语言的函数可以嵌套定义

D)C语言的函数可以嵌套调用

(12)在C语言中,退格符是

A)\nB)\tC)\fD)\b

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

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其他函数之前

D)所有被调用的函数一定要在调用之前进行定义

(14)在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。

A)1

0B)0

1C)非0

非0D)1

1

(15)在C语言中,运算对象必须是整型数的运算符是

A)%B)\C)%和\D)**

(16)字符型数据在机器中是用ASCII码表示的,字符“5”和“7”在机器中表示为

A)10100011和01110111B)01000101和01100011

C)00110101和00110111D)01100101和01100111

(17)若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后

a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是

A)***a=25,b=13,c=19B)***a=26,b=14,c=19

C)###a=25,b=13,c=19D)###a=26,b=14,c=19

(18)若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是

A)2.500000B)2.750000C)3.500000D)0.000000

(19)下列程序段的输出结果是:

inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("%2d,%2.1f,%2.1f",a,b,c);

A)无输出B)12,123.5,12345.5

C)1234,123.5,12345.5D)1234,123.4,1234.5

(20)若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#include<stdio.h>

main()

{charc;

intv0=1,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);}

A)v0=7,v1=4,v2=7B)v0=8,v1=4,v2=8

C)v0=11,v1=4,v2=11D)v0=13,v1=4,v2=12

(21)设有以下程序段

intx=0,s=0;

while(!x!=0)s+=++x;

printf("%d",s);

A)运行程序段后输出0B)运行程序段后输出1

C)程序段中的控制表达式是非法的D)程序段执行无限次

(22)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x>10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

该程序的输出结果是

A)0.000000B)0.250000C)0.500000D)1.000000

(23)执行下面的程序段后,变量k中的值为

intk=3,s[2];

s[0]=k;k=s[1]*10;

A)不定值B)33C)30D)10

(24)以下程序段的描述,正确的是

x=-1;

do

{x=x*x;}

while(!x);

A)是死循环B)循环执行两次C)循环执行一次D)有语法错误

(25)以下选项错误的是

A)main()

{intx,y,z;

x=0;y=x-1;

z=x+y;}

B)main()

{intx,y,z;

x=0,y=x+1;

z=x+y;}

C)main()

{intx;int

inty;

x=0,y=x+1;

z=x+y;}

D)main()

{intx,y,z;

x=0;y=x+1;

z=x+y,}

(26)有如下程序段

inta=14,b=15,x;

charc=′A′;

x=(a&&b)&&(c<′B′);

执行该程序段后,x的值为

A)tureB)falseC)0D)1

(27)下列程序执行后的输出结果是

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(i);}}

voidfunc2(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(i);}}

main()

{inti=0;func1(i);printf("\n");}

A)helloB)helC)hloD)hlm

(28)以下函数返回a所指数组中最大值所在的下标值

fun(int*a,intn)

{inti,j=0,p;

p=j;

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

if(a[i]>a[p])_________;

return(p);}

在下划线处应填入的内容是

A)i=pB)a[p]=a[i]C)p=jD)p=I

(29)下面说明不正确的是

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

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

(30)以下程序的输出结果是

#include<stdio.h>

voidprt(int

*x,int

*y,int

*z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);}

A)11,42,31

12,22,41

B)11,41,20

12,42,20

C)11,21,40

11,21,21

D)11,41,21

12,42,22

(31)若有函数内部说明:inta[3][4];则数组a中各元素

A)可在程序的运行阶段得到初值0

B)可在程序的编译阶段得到初值0

C)不能得到确定的初值

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

(34)定义如下变量和数组:

intk;

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

则下面语句的输出结果是

for(k=0;k<3;k++)printf("%d",a[k][k]);

A)753B)951C)963D)741

(35)下列程序执行后的输出结果是

main()

{chararr[2][4];

strcpy(arr,"you");strcpy(arr[1],"me");

arr[0][3]=′&′;

printf("%s\n",arr);}

A)you&meB)youC)meD)err

(36)有以下函数

charfun(char*p)

{returnp;}

该函数的返回值是

A)无确切的值B)形参p中存放的地址值

C)一个临时存储单元的地址D)形参p自身的地址值

(37)以下正确的说法是

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

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

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

D)如果形参与实参类型不一致,以实参类型为准

(38)有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

程序运行后的输出结果是

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

(39)设有如下定义:

strucksk

{inta;

floatb;

}data;

int*p;

若要使P指向data中的a域,正确的赋值语句是

A)p=&a;B)p=data.a;C)p=&data.a;D)*p=data.a;‘

(40)以下对结构体类型变量的定义中,不正确的是

A)typedefstructaa

{intn;

floatm;

}AA;

AAtdl;

B)#defineAAstructaa

AA{intn;

floatm;

}tdl;

C)struct

{intn;

floatm;

}aa;

structaatdl;

D)struct

{intn;

floatm;

}tdl;

(41)若说明int*p,n;则通过语句scanf能够正确读入数据的程序段是

A)p=&n;scanf("%d",&p);B)p=&n;scanf("%d",*p);

C)scanf("%d",n);D)p=&n;scanf("%d",p);

(42)在下述程序中,判断i>j共执行的次数是

main()

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

for(;;)

{i+=k;

if(i>j)

{printf("%d",s);

break;

}s+=i;

}

}

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

(43)以下4个选项中,不能看做一条语句的是

A);B)a=5,b=2.5,c=3.6;C)if(a<5);D)if(b!=5)x=2;y=6;

(44)在C语言中,变量的隐含存储类别是

A)autoB)staticC)externD)无存储类别

(45)若有以下程序

#include<stdio.h>

voidf(intn);

main()

{voidf(intn);

f(5);

}

voidf(intn)

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

则以下叙述中不正确的是

A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B)若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f

C)对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明

D)函数f无返回值,所以可用void将其类型定义为无返回值型

(46)若有下面的说明和定义

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

则sizeof(structtest)的值是

A)12B)16C)14D)9

(47)以下程序的输出是

structst

{intx;int*y;}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]};

main()

{p=aa;

printf("%d\n",++(p->x));

}

A)10B)11C)51D)60

(48)若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是

A)sizeof,&=,<<,^B)sizeof,<<,^,&=

C)^,<<,sizeof,&=D)<<,^,&=,sizeof

(49)函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是

A)文件开始B)文件末尾

C)文件当前位置D)以上都不对

(50)有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

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

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

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

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

}

程序运行后的输出结果是

A)2030B)2050C)3050D)3020二、填空题(6)以下程序的运行结果是【6】。

#defineMAX(a,b)(a>b?a:b)+1

main

()

{inti=6,j=8,k;

printf("%d\n",MAX(i,j));

}

(7)以下程序的功能是从健盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束。请填空。

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while(【7】)

{if(x>amax)

amax=x;

else

if【8】

amin=x;

elsescanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}(8)在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【9】。

(9)在计算机中,字符的比较是对它们的【10】进行比较。

(11)下列程序的输出结果是16.00,请填空。

main()

{inta=9,b=2;

floatx=【12】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

(12)设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【13】。要求形参名为b。

main()

{doubles[10][22];

intn;┆

fun(s);

}

(13)下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。

main()

{inti,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if【14】{y=0;break;}

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

}

(14)下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,【15】;charstr[]={"1234567"};

for(i=0,j=strlen(str)【16】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

}

(15)以下程序可把输入的十进制数以十六进制数的形式输出,请填空。

main()

{charb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");scanf("%ld",&n);

do{c[i]=【17】;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

for(--i;i>=0;--i)

{d=c[i];printf("%c",b【18】);}

printf("\n");

}

(16)若给fun函数的形参s传送字符串:“]]6354abcc”(其中]表示空格字符),则函数的返回值是【19】。

#include<ctype.h>

longfun(chars[])

{longn;intsign;

for(;isspace(*s);s++);

sign=(*s==′-′)?-1:1;

if(*s==′+′||*s==′-′)s++;

for(n=0;isdigit(*s);s++)n=10*n+(*s-′0′);

returnsign*n;

}

(17)设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【20】a。

试题三一、选择题(11)以下叙述中正确的是

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其他函数之前

D)C函数定义的格式是K&R格式

(12)结构化程序所规定的三种最基本控制结构是

A)输入、处理、输出B)树形、网形、环形

C)顺序、选择、循环D)主程序、子程序、函数

(13)一个C语言程序是由

A)一个主程序和若干子程序组成B)函数组成

C)若干过程组成D)若干子程序组成

(14)请选出可用作C语言用户标识符的是

A)void,define,WORDB)a3_b3,_123,IF

C)FOR,--abc,CaseD)2a,Do,Sizeof

(15)下列各数据类型不属于构造类型的是

A)枚举型B)共用型C)结构型D)数组型

(16)在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是

A)a=20000+20000;B)a=4000*10;

C)a=30000+10000;D)a=4000L*10L

(17)以下不正确的叙述是

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

(18)sizeof(float)是

A)一个双精度型表达式B)一个整型表达式

C)一种函数调用D)一个不合法的表达式

(19)若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为

A)4B)16C)32D)52

(20)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。

#include<stdio.h>

main()

{inti=0,j,k;

do{i++;k=316-13*i;}while(______);

j=k/11;

printf("316=13*%d+11*%d",i,j);

}

A)k/11B)k%11C)k/11==0D)k%11==0

(21)设有定义:intn=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是

A)p=1;B)*q=2;C)q=p;D)*p=5;

(22)下面程序的运行结果是

#include<stdio.h>

main()

{inty=10;

do{y--;}while(--y);

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

}

A)-1B)1C)8D)0

(23)下面程序的输出结果是

main()

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

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

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

(24)有如下程序

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

int*p=&a[3],b;b=p[5];

则b的值是

A)5B)6C)9D)8

(25)设有intx=11;则表达式(x++*1/3)的值是

A)3B)4C)11D)12

(26)请选出以下语句的输出结果

printf("%d\n",strlen("\t\"\065\xff\n"));

A)5B)14C)8D)输出项不合法,无正常输出

(27)下列程序的输出结果是

main()

{doubled=3.2;intx,y;

x=1.2;y=(x+3.8)/5.0;

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

}

A)3B)3.2C)0D)3.07

(28)下列程序的输出结果是

intb=2;

intfunc(int*a)

{b+=*a;return(b);}

main()

{inta=2,res=2;

res+=func(&a);

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

}

A)4B)6C)8D)10

(29)下面能正确进行字符串赋值操作的是

A)chars[5]={"ABCDE"};

B)chars[5]={′A′,′B′,′C′,′D′,′E′};

C)char*s;s="ABCDE";

D)char*s;chara;scanf("%s",&s);

(30)执行以下程序后,a,b的值分别为

main()

{inta,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

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

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

}

A)-1,5B)1,6C)0,7D)4,10

(31)设有数组定义:chararray[]="China";则数组array所占的空间为

A)4个字节B)5个字节C)6个字节D)7个字节

(32)若已定义:

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

其中0≤i≤9,则对a数组元素不正确的引用是

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

(33)以下不正确的定义语句是

A)doublex[5]={2.0,4.0,6.0,8.0,10.0};

B)inty[5]={0,1,3,5,7,9};

C)charc1[]={′1′,′2′,′3′,′4′,′5′};

D)charc2[]={′\x10′,′\xa′,′\x8′};

(34)若有以下程序

#include

<stdio.h>

inta[]={2,4,6,8};

main()

{inti;

int*p=a;

for(i=0;i<4;i++)a[i]=*p;

printf("%d\n",a[2]);

}

上面程序输出结果是

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

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

char*format="%s,a=%d,b=%d\n";

inta=11,b=10;

a+=b;

printf(format,"a+=b",a,b);

A)for,"a+=b",abB)format,"a+=b"

C)a+=b,a=21,b=10D)以上结果都不对

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

A)floatB)intC)longD)double

(37)以下程序有语法错误,有关错误原因的正确说法是

main()

{intG=5,k;

voidprt_char();

...

k=prt_char(G);

...

}

A)语句voidprt_char();有错,它是函数调用语句,不能用void说明

B)变量名不能使用大写字母

C)函数说明和函数调用语句之间有矛盾

D)函数名不能使用下划线

(38)以下叙述中不正确的是

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

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

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

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

(39)有以下程序:

#include<stdio.h>

unionpw

{inti;

charch[2];}a;

main()

{a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}

程序的输出结果是

A)13B)14C)208D)209

(40)在16位IBM-PC机上使用C语言,若有如下定义

structdata

{inti;

charch;

doublef;

}b;

则结构变量b占用内存的字节数是

A)1B)2C)7D)11

(41)下面程序的运行结果是

#include<stdio.h>

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

A)a=3,b=11B)a=2,b=8C)a=1,b=-1D)a=4,b=9

(42)以下程序的输出结果是

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

A)22B)10C)34D)30

(43)有如下程序:

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

}

main()

{printf("%d\n",fib(3));}

该程序的输出结果是

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

(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:

PROGABCDEFGHIJKL<回车>,则输出结果为

main(intargc,char*argv[])

{while(--argc>0)

printf("%s",argv[argc]);

printf("\n");

}

A)ABCDEFGB)IJHL

C)ABCDEFGHIJKLD)IJKLABCDEFGH

(45)以下程序有错,错误原因是

main()

{int*p,i;char*q,ch;

p=&i;

q=&ch;

*p=40;

*p=*q;

......

}

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句

C)q没有指向具体的存储单元,所以*q没有实际意义

D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果

(46)函数rewind的作用是

A)使文件位置指针重新返回文件的开始位置

B)将文件位置指针指向文件中所要求的特定位置

C)使文件位置指针指向文件的末尾

D)使文件位置指针自动移至下一个字符位置

(47)设有以下说明语句

structex

{intx;floaty;charz;}example;

则下面的叙述中不正确的是

A)struct结构体类型的关键字B)example是结构体类型名

C)x,y,z都是结构体成员名D)structex是结构体类型名

(48)设有以下语句:

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是

A)00010100B)00011011C)00011100D)00011000

(49)阅读以下程序及对程序功能的描述,其中正确的描述是

#include<stdio.h>

main()

{

FILE*in,*out;

charch,infile[10],outfile[10];

printf("Entertheinfilename:\n");

scanf("%s",infile);

printf("Entertheoutfilename:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{

printf("cannotopeninfile\n");

exit(0);

}

if((out=fopen(outfile,"w"))==NULL)

{

printf("cannotopenoutfile\n");

exit(0);

}

while(!feof(in))fputc(fgetc(in),out);

fclose(in);

fclose(out);

}

A)程序完成将磁盘文件的信息在屏幕上显示的功能

B)程序完成将两个磁盘文件合二为一的功能

C)程序完成将一个磁盘文件复制到另一个磁盘文件中

D)程序完成将两个磁盘文件合并并在屏幕上输出

(50)C语言中,能识别处理的文件为

A)文本文件和数据块文件B)文本文件和二进制文件

C)流文件和文本文件D)数据文件和二进制文件二、填空题(6)下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。

#include<stdio.h>

main()

{inti;char

s[21],*p;

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

s[i]=getchar();

s[i]=【6】;

p=【7】

while(*p)putchar

(【8】);

}

(7)以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。

#include<stdio.h>

main()

{FILE

*fp;

chara[4]="1234",b[6]="abcedf";

if((fp=fopen("【9】","wb"))=NULL)exit(0);

fwrite(a,sizeof(char),4,fp);

fwrite(b,【10】,1,fp);

fclose(fp);

}

(8)在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【11】。

(9)以下程序输出的结果是【12】。

main()

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

d=(a>b>c);

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

}

(10)以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。

请按题意,完成填空。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{inti,j=0;

【13】

if(x%i==0)pp[j++]=i;

【14】;

}

main()

{int

x,aa[1000],n,i;

clrscr();

printf("\nPleaseenteranintegernumber:\n");scanf("%d",&x);

fun(x,aa,&n);

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

printf("%d",aa[i]);

printf("\n");

}

(11)#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【15】

if(s[*k]<s[i])*k=i;

return【16】;

}

main()

{

inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

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

}

(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【17】!=′\0′;i++);

return(i);

}

(13)以下程序的输出结果为【18】。

#defineJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

(14)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【19】link;

};

(15)设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【20】,1,fp);

试题四一、选择题(11)C语言规定,在一个源程序中,main函数的位置

A)必须在最开始

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

C)可以任意

D)必须在最后

(12)下列数据中,不合法的C语言实型数据的是

A)0.123

B)123e3

C)2.1e3.5

D)789.0

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

A)A

P_0

do

B)float

la0

_A

C)b-a

goto

int

D)_123

temp

int

(14)设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为

A)int

B)float

C)double

D)不确定

(15)能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是

A)a>=10ora<=0

B)a>=0|a<=10

C)a>=10&&a<=0

D)a>=10‖a<=0

(16)设以下变量均为int类型,表达式的值不为7的是

A)(x=y=6,x+y,x+1)

B)(x=y=6,x+y,y+1)

C)(x=6,x+1,y=6,x+y)

D)(y=6,y+1,x=y,x+1)

(17)若有说明:int*p,m=5,n;以下正确的程序段是

A)p=&n;scanf("%d",&p);

B)p=&n;scanf("%d",*p)

C)scanf("%d",&n);*p=n;

D)p=&n;*p=m;

(18)以下程序段的输出结果是

inta=1234;

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

A)12

B)34

C)1234

D)提示出错、无结果

(19)若变量a是int类型,并执行了语句:a=′A′+1.6;,则正确的叙述是

A)a的值是字符C

B)a的值是浮点型

C)不允许字符型和浮点型相加

D)a的值是字符′A′的ASCII值加上1

(20)有如下程序

main()

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

if(a<b)

if(b<0)c=0;

elsec++;

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

}

该程序的输出结果是

A)0

B)1

C)2

D)3

(21)有如下程序

main()

{intx=23;

do

{printf("%d",x--);}

while(!x);

}

该程序的执行结果是

A)321

B)23

C)不输出任何内容

D)陷入死循环

(22)执行语句for(i=1;i++<4;);后变量i的值是

A)3

B)4

C)5

D)不定

(23)有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。

#include<stdio.h>

main()

{inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!((i-3)%7))

if(_______)

printf("%d",i);

}

A)i%9=е

Ⴀ¨

B)i%9!=5

C)(i-5)%8!=0Ƞ

¤¢D)(i-5)%9࠽=0

(24)已有妚义inta=-2;和输出语句䀢printf("%8lx",a);໥下正确的叙述是

A)整型埘量的输出形式只有%d一种

(B)%x是格式符的一种,它可以适用于任何一种类垃的数据

C)%x是格式符的一种,其变量的值按十六进制输出ﴌ但%8lx是错误的

¨

D)%8lѸ不是错误的格式符,其中数孟8规定亊输出嬗段的宽度

(3耵)若变量c츺char类型,能正确判断出c为小写字母的表达式是

A)′a′<=c<=′z′

B)(c>=′a′)||(c<=′z′)

C)(′a′<=c)and(′z′>=c)

D)(c>=′a′)&&(c<=′z′)

(26)以下正确的说法是

A)用户若需调用标准库函数,调用前必须重新定义

B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C)系统根本不允许用户重新定义标准库函数

D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用

(27)以下正确的函数头定义形式是

A)doublefun(intx,inty)

B)doublefun(intx;inty)

C)doublefun(intx,inty);

D)doublefun(intx,y);

(28)下面

温馨提示

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

评论

0/150

提交评论