C试题库Word文档格式.docx
《C试题库Word文档格式.docx》由会员分享,可在线阅读,更多相关《C试题库Word文档格式.docx(49页珍藏版)》请在冰点文库上搜索。
t'
r'
i'
n'
g'
};
C、charstr[10];
str="
D、charstr[7]={'
’\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;
%d,%.1f"
(int)x1,x2);
2.表达式(7<
<
1>
>
2^2)的值是_______。
3.写出下列程序段的输出结果。
#defineA10
#defineB(A<
A+2)-2
B*2);
4.写出判断字符变量c是英文字母的表达式。
5.写出下列程序段的输出结果。
intk,x;
for(k=0,x=0;
k<
=9&
x!
=10;
k++)
x+=2;
%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"
;
%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"
{inti,j,n,a[10];
scanf("
&
n);
for(i=0;
i<
n;
i++)
&
a[i]);
i++)
for(j=0;
j<
j++)
printf("
%d,"
a[(i+j)%n]);
2.若输入89762425981116354<
#defineN10
main()
{
intx[N],y1[N],y2[N];
inti,j,n1,n2,t,p;
n1=n2=0;
for(i=0;
i<
N;
i++){
scanf(“%d”,&
x[i]);
if(x[i]%2==0)y1[n1++]=x[i];
elsey2[n2++]=x[i];
for(i=1;
n1;
for(j=0;
n1-1;
if(y1[j]>
y1[j+1]){
t=y1[j];
y1[j]=y1[j+1];
y1[j+1]=t;
}
n2-1;
i++){
p=i;
for(j=i+1;
n2;
j++)
if(y2[p]<
y2[j])p=j;
if(p!
=i){
t=y2[i];
y2[i]=y2[p];
y2[p]=t;
i++)printf("
y1[i]);
y2[i]);
3.以下程序的输出结果是_______。
#include<
stdio.h>
intz;
voidp(int*x,inty)
{++*x;
y--;
z=*x+y+z;
%d,%d,%d#"
*x,y,z);
}
voidmain()
{intx=1,y=5,z=9;
p(&
x,y);
x,y,z);
4.若输入-6+15*3/5=<
#include<
stdio.h>
intm=0,sum=0;
charc,oldc='
+'
do{
c=getchar();
if(c<
='
9'
c>
0'
)m=10*m+c-'
else{
if(oldc=='
)sum+=m;
elsesum-=m;
m=0;
oldc=c;
sum);
}while(c!
);
四、程序填空题(每空2分,共20分)
1.下列程序的功能是创建单向链表。
alloc.h>
structlink{
charname[10];
intmark;
structlink*next;
};
voidinsert(char*,int);
structlink*head=NULL;
{
charname[10];
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->
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<
ctype.h>
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”);
______(6)_______;
}
elsefilename=argv[1];
if(______(7)_______){
printf(“Cannotopenfile\n”);
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》参考答案
题号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
选择
C
D
A
B
1,0.5
-3
=’a’&
c<
=’z’||c>
=’A’&
=’Z’
5,10
0,-1
-17
13,d
135
‘n’
1,2,3,2,3,1,3,1,2,
4,8,16,24,76,89,35,25,11,9,
2,4,6#2,5,9#
0,-6,9,6,1,
(1)
insert(name,mark)
(2)
t!
=NULL;
t=t->
next
(3)
(structlink*)malloc(sizeof(structlink))
(4)
p->
next=NULL
(5)
next=head
(6)
filename=argv[2]
(7)
(fp=fopen(filename,“r”))==NULL
(8)
!
feof(fp)
(9)
putchar(toupper(ch))
(10)
tag==2&
isdigit(ch)
1、
#include<
floatfact(int);
main()
{
intm,n;
floatval;
scanf(“%d%d”,&
m,&
val=fact(m)/(fact(n)*fact(m-n));
printf(“Value:
%f\n”,val);
floatfact(intn)
if(n<
=0)return1;
return(fact(n-1)*n);
{inti;
floatf=1;
=n;
f=f*i;
returnf;
2、
stdlib.h>
intstrcmp(char*s1,char*s2)
inttoken=0,val1,val2,n,i;
s1[i]!
=’\0’;
if(s1[i]!
=’+’&
s1[i]!
=’-‘&
!
isdigit(s1[i])){token=1;
break;
token&
s2[i]!
if(s2[i]!
s2[i]!
isdigit(s2[i])){token=1;
if(token==0)
val1=atoi(s1);
val2=atoi(s2);
if(val1>
val2)n=1;
elseif(val1<
val2)n=-1;
elsen=0;
returnn;
else
for(i=0;
=’\0’&
if(s1[i]>
s2[i])return1;
elseif(s1[i]<
s2[i])return–1;
if(strlen(s1)==strlen(s2))return0;
if(s[i]==‘\0’)return–1;
elsereturn1;
2000~2001学年“程序设计基础--C”试卷
一、单项选择题(每题2分,共30分)
1.______是合法的用户自定义标识符。
A、b-bB、floatC、<
fr>
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。
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{
char*pk;
}x={2,"
right"
},*p=&
A、p->
pkB、*p.pkC、*p->
pkD、*x.pk
二、填空题(每题2分,共20分)
11.表示“x≥y≥z”的C表达式是_______。
12.下列程序段的输出是______。
%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
%d,%d\n"
f(3,2,1),f(6,5,f(3,2,1)));
15.下列程序段的输出是_____。
{intk;
for(k=1;
5;
k++){
if(k%2)printf("
*"
elsecontinue;
16.下列程序段的输出是_____。
#include<
intf(intx)
{staticy=1;
y++;
x+=y;
returnx;
k=f(3);
%d%d\n"
k,f(k));
17.下列程序段的输出是_____。
int*p,*q,k=5,j=6;
q=&
k;
p=q;
q=&
j;
*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;
%s,"
*(p++)+1);
%c\n"
**p-1);
20.用typedef定义一个文件指针FP。
三、程序阅读题(每题4分,共16分)
1.输入elephant后,下列程序的输出结果是_______。
{inti=0,k,ch;
staticintnum[5];
charalpha[]={'
a'
e'
o'
u'
},in[80];
gets(in);
while(in[i]){
for(k=0;
if(in[i]==alpha[k]){
num[k]++;
i++;