C试题库.docx

上传人:b****8 文档编号:10745028 上传时间:2023-02-22 格式:DOCX 页数:49 大小:207.42KB
下载 相关 举报
C试题库.docx_第1页
第1页 / 共49页
C试题库.docx_第2页
第2页 / 共49页
C试题库.docx_第3页
第3页 / 共49页
C试题库.docx_第4页
第4页 / 共49页
C试题库.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

C试题库.docx

《C试题库.docx》由会员分享,可在线阅读,更多相关《C试题库.docx(49页珍藏版)》请在冰豆网上搜索。

C试题库.docx

C试题库

2000~2001学年《程序设计基础-C》试卷

一、单项选择题(每小题2分,共30分)

1.C语言程序中可以对程序进行注释,注释部分必须用符号_____括起来。

A、‘{‘和’}’B、‘[‘和’]’C、“/*”和”*/”D、“*/”和”/*”

2.下列运算符中,优先级最低的是_____。

A、*B、!

=C、+D、=

3.若变量已正确定义,表达式(j=3,j++)的值是_____。

A、3B、4C、5D、0

4.已知字符‘a’的ASCII码为97,执行下列语句的输出是_____。

printf("%d,%c",’b’,’b’+1);

A、98,bB、语句不合法C、98,99D、98,c

5.表达式strcmp(“box”,“boss”)的值是一个_______。

A、正数B、负数C、0D、不确定的数

6.数组定义为inta[3][2]={1,2,3,4,5,6},数组元素_____的值为6。

A、a[3][2]B、a[2][1]C、a[1][2]D、a[2][3]

7.要调用数学函数时,在#include命令行中应包含_____。

A、”stdio.h”B、”string.h”C、”math.h”D、”ctype.h”

8.判断i和j至少有一个值为非0的表达式是_____。

A、i!

=0&&j!

=0B、i*j!

=0C、!

(i==0||j==0)D、i&&j

9.若a是基本整型变量,c是单精度实型变量,输入语句______是错误的。

A、scanf(”%d,%f”,&a,&c);B、scanf(”d=%d,c=%f”,&a,&c);

C、scanf(”%d%f”,&a,&c);D、scanf(”%d%f”,a,c);

10.若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于_____。

A、p++B、x++C、*(p++)D、&x++

11.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,_____是正确的。

A、p2=p1;B、p2=**p1;C、p2=&p1;D、p2=*p1;

12.下列程序段的输出是_____。

intc[]={1,3,5};

int*k=c+1;

printf("%d",*++k);

A、3B、5C、4D、6

13.不正确的赋值或赋初值的方式是______。

A、charstr[]="string";

B、charstr[7]={'s','t','r','i','n','g'};

C、charstr[10];str="string";

D、charstr[7]={'s','t','r','i','n','g',’\0’};

14.对于以下结构定义,++p->str中的++加在_____。

struct{

intlen;

char*str;

}*p;

A、指针str上B、指针p上C、str指的内容上D、以上均不是

15.对于如下说明,语法和语义都正确的赋值是_____。

intc,*s,a[]={1,3,5};

A、c=*s;B、s[0]=a[0];C、s=&a[1];D、c=a;

二、填空题(每小题2分,共20分)

1.写出下列程序段的输出结果。

floatx1,x2;

x1=3/2;

x2=x1/2;

printf("%d,%.1f",(int)x1,x2);

2.表达式(7<<1>>2^2)的值是_______。

3.写出下列程序段的输出结果。

#defineA10

#defineB(A

printf("%d",B*2);

4.写出判断字符变量c是英文字母的表达式。

5.写出下列程序段的输出结果。

intk,x;

for(k=0,x=0;k<=9&&x!

=10;k++)

x+=2;

printf("%d,%d",k,x);

6.写出下列程序段的输出结果。

printf(“%d,%d”,NULL,EOF);

7.对于以下递归函数f,调用f(3)的返回值是_____。

f(intn)

{return((n>0)?

2*f(n-1)+f(n-2):

-1);}

8.写出下列程序段的输出结果。

charstr[]="hello\tworld\n";

printf("%d,%c\n",sizeof(str),*(str+10));

9.输入12345#后,写出下列程序的输出结果。

voidmain()

{charc;

for(c=getchar();getchar()!

=’#’;c=getchar())

putchar(c);

}

10.执行程序find–nxouldtext.txt时,*++argv[1]的值是_______。

三、程序阅读题(每题5分,共20分)

1.若输入3123<回车>,则以下程序的输出结果是_______。

#include"stdio.h"

voidmain()

{inti,j,n,a[10];

scanf("%d",&n);

for(i=0;i

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

for(i=0;i

for(j=0;j

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

}

2.若输入89762425981116354<回车>,则以下程序的输出结果是_______。

#include"stdio.h"

#defineN10

main()

{

intx[N],y1[N],y2[N];

inti,j,n1,n2,t,p;

n1=n2=0;

for(i=0;i

scanf(“%d”,&x[i]);

if(x[i]%2==0)y1[n1++]=x[i];

elsey2[n2++]=x[i];

}

for(i=1;i

for(j=0;j

if(y1[j]>y1[j+1]){

t=y1[j];y1[j]=y1[j+1];y1[j+1]=t;

}

for(i=0;i

p=i;

for(j=i+1;j

if(y2[p]

if(p!

=i){

t=y2[i];y2[i]=y2[p];y2[p]=t;

}

}

for(i=0;i

for(i=0;i

}

3.以下程序的输出结果是_______。

#include

intz;

voidp(int*x,inty)

{++*x;

y--;

z=*x+y+z;

printf("%d,%d,%d#",*x,y,z);

}

voidmain()

{intx=1,y=5,z=9;

p(&x,y);

printf("%d,%d,%d#",x,y,z);

}

4.若输入-6+15*3/5=<回车>,则以下程序的输出结果是_______。

#include

voidmain()

{

intm=0,sum=0;

charc,oldc='+';

do{

c=getchar();

if(c<='9'&&c>='0')m=10*m+c-'0';

else{

if(oldc=='+')sum+=m;

elsesum-=m;

m=0;

oldc=c;

printf("%d,",sum);

}

}while(c!

='=');

}

四、程序填空题(每空2分,共20分)

1.下列程序的功能是创建单向链表。

#include

#include

structlink{

charname[10];

intmark;

structlink*next;

};

voidinsert(char*,int);

structlink*head=NULL;

main()

{

charname[10];

intmark;

structlink*t;

while

(1){

scanf("%s%d",name,&mark);

if(strcmp(name,"#")==0)break;

______

(1)_______;

}

for(t=head;______

(2)_______)

printf("<%s>:

%d\n",t->name,t->mark);

}

voidinsert(char*name,intmark)

{

structlink*p;

p=______(3)_______;

strcpy(p->name,name);

p->mark=mark;

______(4)_______;

if(head!

=NULL)______(5)_______;

head=p;

}

2.prog.c是带命令行参数的程序。

运行progfilename时,将文本文件filename中的内容原样输出;运行prog-ufilename时,将文本文件filename中的所有字母以大写方式输出(其余字符原样输出);运行prog-dfilename时,只将文本文件filename中的数字输出。

#include

#include

voidmain(intargc,char*argv[])

{

FILE*fp;

char*filename,ch;

inttag=0;

if(argc<2||argc>3){printf(“Argumenterror\n”);return;}

if(argc==3){

if(strcmp(argv[1],“-u”)==0)tag=1;

elseif(strcmp(argv[1],“-d”)==0)tag=2;

else{printf(“Optionerror\n”);return;}

______(6)_______;

}

elsefilename=argv[1];

if(______(7)_______){

printf(“Cannotopenfile\n”);return;

}

while(______(8)_______){

ch=fgetc(fp);

if(tag==0)putchar(ch);

elseif(tag==1)______(9)_______;

elseif(______(10)_______)putchar(ch);

}

fclose(fp);

}

五、编程题(共10分,混合班学生做第2题,其他学生做第1题)

1.[程序说明](10分)

输入m和n(m≥n≥0)后,计算下列表达式的值并输出。

m!

n!

*(m-n)!

要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。

2.[程序说明](10分)

编写函数strcmp(char*s1,char*s2)。

若s1和s2均是数字串(包括+/-号),则按照十进制整数大小进行比较;否则按照Ascii序进行比较。

s1大于/等于/小于s2时,分别输出1/0/-1。

可以直接调用atoi函数。

2000~2001学年《程序设计基础C》参考答案

一、单项选择题(每小题2分,共30分)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

选择

C

D

A

D

A

B

C

B

D

B

A

B

C

A

C

二、填空题(每小题2分,共20分)

1

1,0.5

2

1

3

-3

4

c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’

5

5,10

6

0,-1

7

-17

8

13,d

9

135

10

‘n’

三、程序阅读题(每题5分,共20分)

1

1,2,3,2,3,1,3,1,2,

2

4,8,16,24,76,89,35,25,11,9,

3

2,4,6#2,5,9#

4

0,-6,9,6,1,

四、程序填空题(每空2分,共20分)

(1)

insert(name,mark)

(2)

t!

=NULL;t=t->next

(3)

(structlink*)malloc(sizeof(structlink))

(4)

p->next=NULL

(5)

p->next=head

(6)

filename=argv[2]

(7)

(fp=fopen(filename,“r”))==NULL

(8)

!

feof(fp)

(9)

putchar(toupper(ch))

(10)

tag==2&&isdigit(ch)

五、编程题(共10分,混合班学生做第2题,其他学生做第1题)

1、

#include

floatfact(int);

main()

{

intm,n;

floatval;

scanf(“%d%d”,&m,&n);

val=fact(m)/(fact(n)*fact(m-n));

printf(“Value:

%f\n”,val);

}

floatfact(intn)

{

if(n<=0)return1;

return(fact(n-1)*n);

}

floatfact(intn)

{inti;floatf=1;

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

f=f*i;

returnf;

}

2、

#include

#include

#include

intstrcmp(char*s1,char*s2)

{

inttoken=0,val1,val2,n,i;

for(i=0;s1[i]!

=’\0’;i++)

if(s1[i]!

=’+’&&s1[i]!

=’-‘&&!

isdigit(s1[i])){token=1;break;}

for(i=0;!

token&&s2[i]!

=’\0’;i++)

if(s2[i]!

=’+’&&s2[i]!

=’-‘&&!

isdigit(s2[i])){token=1;break;}

if(token==0)

{

val1=atoi(s1);

val2=atoi(s2);

if(val1>val2)n=1;

elseif(val1

elsen=0;

returnn;

}

else

{

for(i=0;s1[i]!

=’\0’&&s2[i]!

=’\0’;i++)

if(s1[i]>s2[i])return1;

elseif(s1[i]

if(strlen(s1)==strlen(s2))return0;

if(s[i]==‘\0’)return–1;

elsereturn1;

}

}

 

2000~2001学年“程序设计基础--C”试卷

一、单项选择题(每题2分,共30分)

1.______是合法的用户自定义标识符。

A、b-bB、floatC、D、_isw

2.若变量已正确定义并赋值,表达式______不符合C语言语法。

A、a*b/c;B、3.14%2C、2,bD、a/b/c

3._____是不正确的字符常量。

A、'\n'B、'1'C、"a"D、'\101'

4.在C程序中,用_____表示逻辑值“真”。

A、1B、非0的数C、非1的数D、大于0的数

5.______把x、y定义成float类型变量,并赋同一初值3.14。

A、floatx,y=3.14;B、floatx,y=2*3.14;

C、floatx=3.14,y=x=3.14;D、floatx=y=3.14;

6.若变量已正确定义,表达式______的值不是2。

A、2&3B、1<<1C、a==2D、1^3

7.若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和______等价。

A、k=(a>b)?

1:

0;B、k=a>b;

C、k=a<=b;D、a<=b?

0:

1;

8.设变量定义为“inta,b;”,执行下列语句时,输入_____,则a和b的值都是10。

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

A、1010B、10,10C、a=10b=10D、a=10,b=10

9.下列程序的输出结果是_____。

fun(inta,intb,intc)

{c=a*b;}

main()

{intc;

fun(2,3,c);

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

}

A、0B、1C、6D、无法确定

10.在C程序中,若对函数类型未加说明,则函数的隐含类型为_____。

A、intB、doubleC、voidD、char

11.表达式strlen(”hello”)的值是_______。

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

12.设变量定义为“inta[4];”,则表达式______不符合C语言语法。

A、*aB、a[0]C、aD、a++

13.设变量定义为“intx,*p=&x;”,则&*p相当于_____。

A、pB、*pC、xD、*&x

14.若变量已正确定义,____不能使指针p成为空指针。

A、p=EOFB、p=0C、p=’\0’D、p=NULL

15.对于以下的变量定义,表达式______不符合C语言语法。

structnode{

intlen;

char*pk;

}x={2,"right"},*p=&x;

A、p->pkB、*p.pkC、*p->pkD、*x.pk

二、填空题(每题2分,共20分)

11.表示“x≥y≥z”的C表达式是_______。

12.下列程序段的输出是______。

printf("%o\n",010<<1^1);

13.下列程序段的输出是______。

intk;

floats;

for(k=0,s=0;k<7;k++)

s+=k/2;

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

14.下列程序段的输出是_______。

#definef(a,b,x)a*x+b

printf("%d,%d\n",f(3,2,1),f(6,5,f(3,2,1)));

15.下列程序段的输出是_____。

main()

{intk;

for(k=1;k<5;k++){

if(k%2)printf("*");

elsecontinue;

printf("#");

}

}

16.下列程序段的输出是_____。

#include

intf(intx)

{staticy=1;

y++;

x+=y;

returnx;

}

voidmain()

{intk;

k=f(3);

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

}

17.下列程序段的输出是_____。

int*p,*q,k=5,j=6;

q=&k;p=q;q=&j;

printf("%d",*p);

18.函数

voidf(chars[],chart[])

{intk=0;

while(s[k]=t[k])k++;

}

等价于

voidf(char*s,char*t)

{while(_____);

}

19.下列程序段的输出是_____。

char*a[2]={"one","two"},**p=a;

printf("%s,",*(p++)+1);

printf("%c\n",**p-1);

20.用typedef定义一个文件指针FP。

三、程序阅读题(每题4分,共16分)

1.输入elephant后,下列程序的输出结果是_______。

#include

voidmain()

{inti=0,k,ch;

staticintnum[5];

charalpha[]={'a','e','i','o','u'},in[80];

gets(in);

while(in[i]){

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

if(in[i]==alpha[k]){

num[k]++;

break;

}

i++;

}

for(k=0;k

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

当前位置:首页 > 求职职场 > 社交礼仪

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

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