C试题库.docx
《C试题库.docx》由会员分享,可在线阅读,更多相关《C试题库.docx(45页珍藏版)》请在冰豆网上搜索。
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(Aprintf("%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;iscanf("%d",&a[i]);
for(i=0;ifor(j=0;jprintf("%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;iscanf(“%d”,&x[i]);
if(x[i]%2==0)y1[n1++]=x[i];
elsey2[n2++]=x[i];
}
for(i=1;ifor(j=0;jif(y1[j]>y1[j+1]){
t=y1[j];y1[j]=y1[j+1];y1[j+1]=t;
}
for(i=0;ip=i;
for(j=i+1;jif(y2[p]if(p!
=i){
t=y2[i];y2[i]=y2[p];y2[p]=t;
}
}
for(i=0;ifor(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\