C试题库Word文件下载.docx
《C试题库Word文件下载.docx》由会员分享,可在线阅读,更多相关《C试题库Word文件下载.docx(42页珍藏版)》请在冰豆网上搜索。
![C试题库Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/25/16313e25-da3a-4901-8ea2-a8b7c022e40f/16313e25-da3a-4901-8ea2-a8b7c022e40f1.gif)
j
9.若a是基本整型变量,c是单精度实型变量,输入语句______是错误的。
A、scanf(”%d,%f”,&
a,&
c);
B、scanf(”d=%d,c=%f”,&
C、scanf(”%d%f”,&
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="
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\