版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、函数fun的功能是计算/n。
doublefun(doublex,intn)
{inti;doubley=l;
for(i=l;i<=n;i++)y=y*x;
returny;
)
主函数中已经正确定义m、a、b变量并赋值,并调用fun函数计算:m=a-4+bN-(a+b:T3。实现这一计
算的函数调用语句为_。
答案:1:fun(a,4)+fun(b,4)-fun((a+b),3)
评析:函数fun的功能是计算x的n次方,所以a的4次方的调用函数应当为fun(a,4),b的4次方的调用
函数应当为fun(b,4),(a+b)的3次方的调用函数应当为fun((a+b),3),所以,实现m二aN+bM-(a+b厂3
这一计算的函数458调用语句为:fun(a,4)+fun(b,4)-fun((a+b),3);。
知识点:知识点/函数/破函数的正确调用,嵌套调用,递归调用
2、以下sstrcpyO函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字
符串s。请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=);}
mainO
{charstr1[100],str2[]=z,abcdefgh,/;
sstrcpy(strl,str2);
printf(%s\n”,strl);
)答案:1:*t++
评析:要使sstrcpyO函数实现字符串复制,必须将t字符串中的每个字符逐个拷到s字符串中,所以
可以使用*s=*t;s++;t++。或者可以写成*s++=*t++,本题只有一个空,可以填入*t++。
知识点:知识点/指针/用指针作函数参数
3、以下程序给指针p分配三个double型动态内存单元,请填空。
#include<stdlib.h>
mainO
{double*p;
p=(doub1e*)ma11oc();
p[0]=1.5;p[l]=2.5;p[2]=3.5;
printf(z,%f%f%f\nz,,p[0],p[l],p[2]);
}答案:1:3*sizeof(double)
评析:malloc(size)在内存的动态存储区中分配一个长度为size的连续空间。此函数的值(即〃返
回值〃)是一个指针,它的值是该分配域的起始地址。如果此函数未能成功地执行,则返回值为0。
本题中要求分配三个double型动态内存单元,所以size处应当|为3*sizeof(double)。
知识点:知识点/指针/各类型的指针及指针变量,通过指针引用各类型数据
4、以下程序运行后的输出结果是o
main()
{inta,b,c;
a=25;
b=025;
c=0x25;
printf(z,%d%d刎\n〃,a,b,c);
}答案:252137
评析:本题考查的是格式字符的输出。
变量a、b、c分别为十进制、八进制、十六进制的25,格式字符d所代表的含义是,以带符号的
卜进制形式输出整数(正数不输出符号),所以本题a=25则输出值为25;b=025转换为10进制:
b=2*8+5=16+5=21,则输出的值为21;c=0x25转换为10进制:c=2*16+5=32+5=37,则输出的值为37,
而且printf中三个%d之用的是空格,所以输出的几个数字之间也必须是空格。
知识点:知识点/函数/变量的存储类别,变量的作用域和生存期
5、以下程序运行后的输出结果是o
main()
{chara[]="Language",b[]="Programe”;
char*pl,*p2;intk;
pl=a;p2=b;
for(k=0;k<=7;k++)
if(*(pl+k)==*(p2+k))printf(线c”,*(pl+k));
}答案:gae
评析:本题考查的是字符指针变量与字符数组。
解题过程:
(1)当k=0时,*(pl+0)=V,*(p2+0)=P1,L!=P,所以没有输出
(2)当k=l时,*(pl+l)='a',*(p2+l)='r',a!=r,所以没有输出
(3)当k=2时,*(pl+2)=,n,*(p2+2)='o',n!=o,所以没有输出
(4)当k=3时,*(pl+3)=g,*(p2+3)=g,g=g,所以输出g
(5)当k=4时,*(pl+4)='u',*(p2+4)='r',u!=r,所以没有输出
(6)当k=5时,*(pl+5)=,a5,*(p2+5)='a',a==a,所以输出a
(7)当k=6时,*(pl+6)=,g,*(p2+6)='m',g!=m,所以没有输出
(8)当k=7时,*(pl+7)='e',*(p2+7)='e',e==e,所以输出e
(9)当k=8时结束循环
(10)输出结果为:gaeo
知识点:知识点/数组的定义和引用/字符串与字符数组
6、以下程序通过函数SunFun和f(x),x=0到10,这里f(x)=x~2+l,由F函数实现,请填空。
main()
{printf("Thesun=%d\n/z,SunFun(10));}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+F();
returns;
}
F(intx)
{return();}
答案:1:x
2:x*x+l
评析:本题考查的是函数的调用。
解题过程:
(1)f(x)的含义为X的平方加上1
(2)所以F(intx)的返回值应该为x*x+l
(3)SunFun(10)的作用是将0到10之间所有的整数相加求和
(4)所以F()的形式参数为X。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
7、以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它
们的和值。和值通过形参传回主函数输出。请填空。
ttdefineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0;i<N;i++)
{k=0;
for(j=l;j<M;j++)
if(a[k][i]>a[j][i])k=j;
s+=;
)
______=s;
}
main()
(intx[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin();
printf(绘d\n”,s);
}答案:1:a[k][i]
2:*sum
3:x,&s
评析:本题考查的是函数参数的传送。
解题过程:
(1)执行以i为变量的for语句
1)k=0
2)执行以j为变量的for语句
①当j=l
②比较a[0][0]和a[l][0]的大小,如果a[0][0]大于a[l][0]则k=l;如果a[0][0]大于a[l][0]
则k=0
③j=2所以结束循环
3)此时a[k][i]就代表第一列中最小的值,要累计所有列中的最小值的和,应该在第一空内填
写a[k][i],用变量s累加。
(2)SumColumMin是一个无返回值的函数,其中形式参数*sum是一个指针类型,所以第二空应该
填写*sum,用来将该指针变量指向s
(3)当主函数main调用SumColumMin时,需要两个实际参数,一个代表被操作的数组,一个为指
向累计和的指针变量,所以第三个空应该为x.&s,分别代表已经被定义的数组x,和整型变量s的地
址。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
8、以下程序的输出结果是。
main()
(
inta=0;
a+=(a=8);
printf("%d\n",a);
}答案:16
评析:本题的考查点是表达式。
表达式a+=8相当于a=a+8,对表达式逐步求解过程如下:
a+=(a+8)此时,a的值赋值为8,而不再是0;
a+=8
a=a+8
a=16
故本题答案为16。
知识点:知识点/函数/形式参数与实在参数,参数值的传递
9、以下程序的输出结果是_____。
ttdefineMAX(x,y)(x)>(y)?(x):(y)
main()
inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf(〃%d\n〃,t);
}答案:7
评析:本题的考查点是宏定义。
宏替换后,表达式t=MAX(a+b,c+d)*10即变为:t=(a+b)>(c+d)?(a+b):(c+d)*10;
由于(a+b)>(c+d)为真,所以t=(a+b),即为7。
故本题答案为:7o
知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义
10、函数mycmp(char*s,char*t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t返回
正值,当s<t时返回负值。请填空。
mycmp(char*s,char*t)
{while(*s=*t)
{if(*s=,\0J)return0;
++s;++t;
}
return();
}答案:
评析:本题的考查点是比较字符串的大小。
函数的两个形参是两个字符指针变量,字符串的首地址是指针变量的值,*s和*t表示字符串数
组S和t的笫一个字符,在while循环中,是通过s和t值的不断变化改变两个串的第一个字符,要返回
s和t的第一个不同字符的ASCII码的差值,必须使用〃*s-*t〃得出。
故本题答案为:
知识点:知识点/函数/库函数的正确调用
11、若给fun函数的形参s传送字符串:〃6354abe〃,则函数的返回值是。(字符串中
包括空格)
longfun(chars[])
{longn;intsign;
for(;isspace(*s);s++);
sign=(*s二=
if(*s=,+,||*s='-')s++;
for(n=0;isdigit(*s);s++)
n=10*n+(*s,O');
returnsign*n;
)答案:6354
评析:本题的考查点是函数的返回值。
这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应各个字符位
置计算出它们数值形式的恭,最后返回字符串中的数字字符的数值形式,所以函数的返何值应当是
"6354”。
故本题答案为:6354o
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
12、以下程序段的输出结果为/
char*p;inti,d;
p=〃PDPl-O〃;
for(i=0;i<7;i++)
d=isdigit(*(p+i));
if(d!=O)
printf(〃%c\n〃,*(p+i));
}答案:1
评析:本题的考查点是函数isdigitO。
这段程序的目的是按从左至右的顺序从字符串P中找出阿拉伯数字字符,如果找到,将其打印出
来。最后的输出应当是:
1
0
知识点:知识点/函数/库函数的正确调用
13、下列程序中字符串中各单词之间有一个空格,则程序的输出结果是o
#include<string.h>
main()
{charstrl[]=〃Howdoyoudo〃,*pl=strl;
strcpy(strl+strlen(strl)/2,zzesshe");
printf(z/%s\n/z,pl);
}答案:Howdoesshe
评析:本题的考查点是字符串捋贝函数strcpy()。
strlen(strl)是求s"l字符串的长度,为13,然后,进行除2运算,结果为6。strcpy()函数是
把字符串〃csshe〃拷贝到strl后的第6个字符后面,也就是说,拷贝后的结果是"Howdoesshe\
故本题答案为:Howdoesshe。
知识点:知识点/函数/库函数的正确调用
14、下面的函数strcat(strl,str2)实现将字符串str2拼接到字符串strl后面的功能。请填空使之完
整。
charEstreat(strl,str2)
char*strl,*str2;
{char*t=strl;
while()strl++;
while();
return(t);)
答案:1:*strl!='\0'
2:*strl++=*str2++
评析:本题的考查点是字符串连接函数strcat()。
函数strcat(strl,str2)实现将字符串str2连接到字符串strl后面,所以首先要找到字符串strl
的串尾,根据C语言的语法规定,一个串的串尾一定是一个隐含字符〃\0〃,而在程序中,对字符串中
字符的访问是通过两个指针变量来完成的,因此要找到字符串strl的串尾,要判断*strl是否为〃\0〃,
要找到字符串str2的串尾,要判断*str2是否为〃\0〃,程序中必须可以使字符串中字符逐一顺序体现,
所以在题中我们应填写〃*strl〃和〃*strl++=*str2++〃。
知识点:知识点/函数/库函数的正确调用
15、以下程序的输出结果是一
voidfun()
{staticinta=0;
a+=2;printfa);
)
main()
{intcc;
for(cc=l;cc<4;cc++)fun();
printf(〃\n〃);
}答案:246
评析:循环for(cc=l;cc〈4;cc++)被执行了3次。在函数fun中,由于a是static型变量,所以函数第
1次调用后,a=2;第2次调用后,a=4;第3次调用后,a=6。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
16、若要使指针p指向一个double类型的动态存储单元,请填空。
p=malloc(sizeof(double));
答案:(double*)
评析:函数malloc返回的是void*而不是double类型指针。所以要使指针p指向一个double类型的存
储单元就必须进行强制类型转换。
知识点:知识点/函数/函数的类型和返回值
17、下列程序段的输出结果是。
main()
{charb[]="Hello,you”;
b[5]=0;
printf("%s\n”,b);
}答案:Hello
评析:字符串中,数值0或符号'\0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第
六个字符就是结束标志。因此,只输出前五个字符,即Hello。
知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用
18、下列程序的输出结果是。
voidfun(int*n)
{while((*n)--);
printf++(*n));
)
mainO
{inta=100;
fun(&a);
}答案:0
评析:在函数fun()中,while((*n)—)是先引用*n的值,再做(*n)一运算,所以循环结束时*n
的值为0,再做(*n)一运算后,*n的值为-1;执行++(*n)后,*n的值是0。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
19、以下程序中,主函数调用了LineMax函数,实现在神刊列的二维数组中,找出每一行上的最大值。
请填空:
itdefineN3
ttdefineM4
voidLineMax(intx[N][M])
{inti,j,p;
for(i=0;i<N;i++)
{p=0;
for(j=l;j<M;j++)
if(x[i][p]<x[i][j])_
printf("Themaxvalueinline%dis%d\n〃,i,);
}
)
mainO
{intx[N][M]={1,.5,7,4,2,6,4,3,8,2,3,1};
}答案:1:p=j
2:a[i][p]
3:LineMax(x)
评析:LineMax函数中运用了两个循环,外循环来控制数组的行,内循环控制列,在寻找每行最大
的元素时,先把每行的第一个元素列下标即0赋给P,然后把后面的数逐一与之比较,如果大于它,
则把大的数的列下标重新赋给P。
所以(1)处应该填p=j;
内循环结束后,便获得了本行中最大的数,即a[i][p],这也就是(2)处应该填写的答案;
而(3)处,很显然是要调用函数,关键就在于参数怎么写,函数中需要的是整个数组,所以应该
把数组名做为实参,传递过去,(3)处的答案应该是LineMax(x)。注意大小写,C语言中大小写是不
等价的。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
20、若有如下结构体说明:
structSTRU
{inta,b;charc:doubled;
structSTRU*pl,*p2;
};
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。
t[20]
答案:structSTRU
评析:本题主要考查考生对C语言中结构体的掌握。
结构体类型是构造数据类型,是用户自己定义的一种类型。
结构体类型的定义:
struct结构体类型名
(
成员项表;
};
定义结构体变量的的形式为:
struct结构体类型名变量1,变量2,...
其中变量包括:一般变量、指针变量、数组变量等•
知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用
21、以下程序运行后的输出结果是.
voidfun(intx,inty)
{x=x+y;y=x-y;x=x-y;
printf("%d,%d,",x,y);)
main()
{intx=2,y=3;
fun(x,y);
printf(z/%d,%d\n”,x,y);
}答案:3,2,2,3
评析:本题的考查点是交换变量的值。
被调函数fun()实现的功能是交换变量x和y的值并打印,由于该函数无返回值,所以在主函数中
打印出的x和y的值仍然为2,3。
故本题答案为:3,2,2,3c
知识点:知识点/函数/形式参数与实在参数,参数值的传递
22、下面程序的运行结果是:_____。
ttdefineN10
ttdefines(x)x*x
#definef(x)(x*x)
main()
{intil,i2;
il=1000/s(N);i2=1000/f(N);
printf(z/%d%d\n”,il,i2);
}答案:100010
评析:本题的考查点是宏定义。
根据宏定义,变量il的值为1000/10*10=1000,变量i2的值为1000/(10*10)=10。
故本题答案为:1000和10。
知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义
23、下面程序的运行结果是:o
voidswap(int*a,int*b)
{int*t;
t二a;a二b;b=t;
}
main()
{intx=3,y=5,*p=&x,*q二&y;
swap(p,q);
printf("%d%d\n',*p,*q);
}答案:35
评析:本题的考查点是函数调用。
观察本题的程序可以看出,被调函数swap。实现的功能是交换变量的值,但由于函数不返回任
何值,所以在main。函数中打印出的变量的值并没有发生交换,即仍为3和5。
故本题答案为:3和5。
知识点:知识点/函数/函数的类型和返回值
24、fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中
的最小的那个数作为函数值返回。请填空。
^include<stdio.h>
#defineN100
intfun(int(*a)[N])
{introw,col,max,min;
for(row=0;row<N;row++)
{for(max=a[row][0],col=l;coKN;col++)
if(______)max=a[row][co1];
if(row==0)min=max;
elseif()min=max;
)
returnmin;
}答案:1:max<a[row][col]
2:max<min
评析:本题的考查点是求矩阵最大值的算法。
本题中的第一空要求判断出每一行中的最大数,应该填写条件max<a[row][col],第二空要求从
N个最大值中找出最小的数,应填入条件maxVmin。
故本题答案为:max<a[row][col]和
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
25、以下程序的输出结果是o
ttdefineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti=2,j=3;
printfC%d\n",MCRB(j,MCRA(i)));
}答案:16
评析:本题的考查点是带参数的宏定义。
带参数的宏定义是这样展开置换的:在程序中如果有带实参的宏,则按#define命令行中指定
的字符串从左到右进行置换。如果串中包含形参,则将程序语句中相应的实参(可以是常量、变量
或表达式)代替形参,如果宏定义中的字符串中的字符不是参数字符,则保留。因此对MCRB(j,MCRA(i))
进行宏展开就得到了2*MCRA(j)+MCRA(i),即:2*2*j+2*i=2*2*3+2*2=16。
故本题答案为:16。
知识点;知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义
26、以下程序的功能是调用函数fun计算:m=l-2+3-4+-+9-10,并输出结果。请填空。
intfun(intn)
{intm=0,f=l,i;
for(i=l;i<=n;i++)
{m+=i*f;
f=;
}
returnm;
)
main()
{printf("m=%d\n",.);}
答案:1:-f
2:fun(10)
评析:本题的考查点是C程序设计。根据程序写出运行结果。
考察的知识点主要是函数的调用.本题利用一个fun函数来完成题目要求的计算。程序中f起的
作用是控制i*f的符号,看的出,偶数位都为负值,所以f的值为(-DXi+l),最后要求输出m的值,
在输出中调用fun函数,并把实参10传给n。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
27、以下程序运行后的输出结果是.
main()
{inti,n[]={0,0,0,0,0);
for(i=l;i<=4;i++)
{n[i]=n[i-l]*2+l;
printf("%d",n[i]);
)
}答案:13715
评析:本题的考查点是C程序设计。根据程序写出运行结果。
该程序考察的是数组的知识点,n是一个有5个元素,且元素值全为0的数组。程序运行过程时先
进行for循环,i=l时,n[l]=n[0]*2+l,此时执行i++;i=2时,再进行循环,n[2]=n[l]*2+l,
此时n[2]=3,再执行i++,此时i=3,继续循环,n[3]=n[2]*2+1,此时n[3]=7,然后i=4时,
n[4]=n[3]*2+l,此时n[4]=15。循环结束。注意输出函数中%d后有空格。
知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用
28、请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。
(double,double);
main()
(doublex,y;
scanf&x,&y);
printf(%lf\n,z,max(x,y));
)
doublemax(doublea,doubleb)
{return(a>b?a:b);)
答案:doublemax
评析:本题的考查点是C程序设计。调试程序,把不完善的程序进行修改和补充,使之能得到正
确的结果。
主函数里可以看到调用了一个max函数,函数在被调用之前需要先定义,所以要求填空的内容应
该是对函数进行定义的语句。由题目内容也可以看出此函数是double型的。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
29、有以下程序
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\rT,x,y);
)
执行后输出的结果_。答案:84
评析:f函数中变量x传递的是变量的地址,可以实现值的变换,而变量y是传递的值,执行完f
后,y的值是变了,但main函数中的y并未变化。也就是说由于“单向传送"的"值传递”方式,形参值
的改变无法传给实参。
知识点:知识点/函数/形式参数与实在参数,参数值的传递
31、C语言程序的基本单位是
答案:函数
32、设有说明语句:chara='\72';则变量a包含个字符、答案:1
33、c语言是一种(选择面向对象或面向过程)高级程序设计语言。
答案:面向过程
34、C语言中唯一的三目运算符是_
答案:条件运算符#?:
35、C语言中结束一次循环的语句是
答案:continue
36、C语言中结束整个循环的语句是答案:break
37、二维数组a中元素a[2][2]的值是a[4][5]={{1,2,3},{3,2,1,6},{1});答案:0
38、写出下面个逻辑表达式的值,设a=3,b=4,贝h=5a||b+c&&b-c=答案:1
39、写出下面个逻辑表达式的值,设a=3,b=4,则!(a+b)+c-1&&b+c/2=______答案:1
40、在C语言中打开文件的函数名称是
答案:fopen#fopen()
41、在C语言中关闭文件的函数名称是
答案:fclose#fclose()
42、C语言中基本的数据类型有
答案:intfloatchar#整型实型字符型
43、设y是int型变量,请写出判断y为奇数的关系表达答案:y%2!=0#谭2==1#y%2
44、以下程序运行后的输出结果是
main()
{inti=10,j=0;
do
(j=j+i;i-;
while(i>2);
printf("%d\n",j);
)
%、设有以下程序:
main()
(intnl,n2;
scanf&n2);
while(n2!=0)
{nl=n2%10;
n2=n2/10;
printf(z,%dz/,nl);
)
}
程序运行后,如果从键盘上输入1298;则输出结果为_____答案:8921
46、以下程序输出的最后一个值是
intff(intn)
{staticintf=l;
f=f*n;
returnf;
)
mainO
{inti;
for(i=l;i<=5;i++)printf(zz%d\n,z,ff(i));
)答案:120
47、设有以下程序:
mainO
{inta,b,k=4,m=6,*pl=&k,*p2=&m;
a=pl==&m;
b=(*pl)/(*p2)+7;
printf(〃a=/d\n〃,a);
printf(〃b=%d\n”,b);
)
执行该程序后,a的值为b的值为
答案:0@7
48、函数fun的功能是:累加数组元素中的值。n为数组中元素的个数。累加的和值放入x所指的存
储单元中。
fun(intb[],intn,int*y)
{for(k=0;;k++)r=r+b[k];
*y=______;
}答案:k<n@r
51、以下程序运行后的输出结果是
mainO
{charm;
m=,B'+32;printfm);
)答案:b
52、以下程序运行后的输出结果是
mainO
(inta=l,b=3,c=5;
if(c=a+b)printf("yes\n〃);
elseprintf(〃no\n〃);
}答案:yes
53、以下程序运行后的输出结果是
mainO
{inti,m=0,n=0,k=0;
for(i=9;i<=ll;i++)
switch(i/10)
{case0:m++;n++;break;
case10:n++;break;
default:k++;n++;
)
printf(/z%d%d%d\nzz,m,n,k);
}答案:132
54、执行以下程序后,输出号的个数是
#include<stdio.h>
main()
{inti,j;
for(i=l;i<5;i++)
for(j=2;j<=i;j++)putcharC**);
}答案:6
55、以下程序的功能是调用函数fun计算:ni=l-2+3-4+…+9-10,并输出结果,请填空.
intfun(intn)
{intm=0,f=l,i;
for(i=l;i<=n;i++)
{m+=i*f;
f=______;
}
returnm;
}
main()
{printf(,zm=%d\n^,);}
答案:-f@fun(10)
56、假定p所指对象的值为25,p+1所指对象的值为46,则执行〃(*p)++;〃语句后,p所指对象的值
为______
答案:26
56、空字符串的长度是’\/所占的长度为______答案:0@1
57、若从键盘输入58,则以下短序输出的结果是—
main()
{inta;
scanf(z/%d,z,&a);
if(a>50)printfa);
if(a>40)printfa);
if(a>30)printfa);
}答案:585858
58、以下程序的输出结果是
main()
{char*p二〃abcdefgh",*r;
long*q;
q=(long*)p;
q++;
r=(char*)q;
printf(〃%s/n〃,r);
}答案:efgh
59、以下定义的结构体类型拟包含两个成员,其中成员变量inf。用来存入整形数据;成员变量link是
指向自身结构体的指针.请将定义补充完整。
structnode
{intinfo;
______link;
}答案:structnode*
60、有以下程序
main()
{intn=0,m=l,x=2;
if(!n)x-=l;
if(m)x-=2;
if(x)x-=3;
printf("%d\n”,x);
)
执行后输出结果是一一答案:-4
61、^include<stdio.h>
main()
{charchi,ch2;intnl,n2;
chl=getchar();ch2=getchar();
nl=chl-O';n2=nl*10+(ch2-;
printf("%d\n〃,n2);
)
程序运行时输入:12,执行后输出结果是
答案:12
62、有以下程序
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf(〃%d%d\n”,x,y);
}
执行后输出的结果是答案:84
63、以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函
数返回当前文件位置指针的具体位置,从而确定文件长度,请天空。
FILE*fp;longfl;
fp=fopen(“tcst",“rb");
Fl=ftell(fp);
fclose(fp);
答案:fseek(fp,0,SEEK_END)ftfseek(fp,0,-2)
64、以下程序功能是将窥组里面的元素写入文件d2.dat中(使用fprintf函数),请填空。
#include<stdio.h>
main()
{FILE*fp;a[3]={l,2,3};
fp=fopenCd2.dat〃,〃w");
fclose(fp);
}答案:fprintf(fp,/z%d%d%d\n/z,a[0],a[l],a[2]);
65、以下程序功能是从文件d2.dat中读入读出数据放到数组a中(使用fscanf函数),请填空。
#include<stdio.h>
mainO
{FILE*fp;a[2];
fp=fopenCd2.dat",〃r〃);
fclose(fp);
}答案:fscanf(fp/z%d%d/z,&a[O],&a[l]);
66、以下程序的输出结果是
main()
{chars[]="abcdef
s[3]='\0';
printf("%s\n",s);
}答案:abc
67、下列程序段的输出结果是
main()
{charb口=“Hello,you”;
b[5]=0;
printfb);
}答案:Hello
68、以下程序的输出结果是
main()
(
inta[]={30,25,20,15,10,5},*p=a;
p++;
printf("%d”,*(p+3));
}答案:io
69、以下程序运行后的输出结果是
main()
(chars□="9876”,*p;
p=s;
p++;
++p;
puts(p);
}答案:76
70、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空:
intmystrlen(char*str)
{inti;
for(i=0;str[i]!='\0';i++);
return;
}答案:i-1
71、以下程序用来统计文件中字符个数、请填空:
#includc〃stdio、h〃
main()
(FILE*fp;longnum=0L;
if((fp=fopen(/zfname>dat","r")=NULL)
{printf(zz0penerror\n〃);exit(0);}
while(______)
(fgetc(fp);num++;}
printf(//num=%ld\n/,,num-l);
fclose(fp);
}答案:!feof(fp)
72、下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填
空.
#include〃stdio.h〃
FILE*fp;
{charch;
if((fp=fopen(______))==NULL)exit(0);
whi1e((ch=getchar())!='@')fputc(ch,fp);
fclose(fp);
}答案:"bi.dat",
73、用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*)_____;答案:malloc(11)
74、若要使指针p指向一个double类型的动态存储单元,请填空.
p二malloc(sizeof(double));
答案:(double*)
75、以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句、
voidfun(int*x,int*y)
{•…・・)
main()
{inta=10,b=20;
;/定义变量P*/
p=fun;p(&a,&b);
}答案:void(*p)(int,int);
76、以下程序的输出结果是
main()
{intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printfC%d\n/Z,*p++);
)答案:30
77、若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是—
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
答案:*(p+5)#p[5]
78、以下定义的结构体类型拟包含两个成员,其中成员变量inf。用来存入整型数据;成员变量link是
指向自身结构体的指针,请将定义补充完整、
structnode
{intinfo;
_____link;
}答案:structnode*
79、设有如下宏定义
#defineMYSWAP(z,x,y)(z=x;x=y;y=z}
以下程序段通过宏调用实现变量a,b内容交换,请填空:
floata=5,b=16,c;
MYSWAP(,a,b);答案:c
80、以下程序段用于构成一个简单的单向链表,请填空.
structSTRU
{intx,y;
floatrate;
p;
)a,b;
a.x=0;a.y=0;a.rate=O;a.p=&b;
b.x=0;b.y=0;b.rate=O;b.p=NULL;
答案:structSTRU*
81、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是—
Structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;答案:14
82、下列程序段的输出结果是
intn=,c';
switch(n++)
{default:printf(z,errorz");break;
case'a':case'A':case'b':case'B':printf("good");break;
case'c':case'C':printf(〃pass〃);
case'd':case'D':printf("warn");
)
答案:passwarn
83、以下程序的输出结果是
main()
{ints,i;
for(s=0,i=l;i<3;i++,s+=i);
printf(〃%d\n〃,s);
)公案.5
84、设有以遏岸:
main()
{intnl,n2;
scanf&n2);
while(n2!=0)
{nl=n2%10;
n2=n2/10;
printf(zz%d,z,nl);}
)
程序运行后,如果从键盘上输入1234;则输出结果为______答案:4321
85、要使以下程序段输出10个整数,请填入一个整数、
for(i=0;i<=;printf("%d\n〃,i+=2));
答案:18
86、若输入字符串:abcde,则以下while循环体将执行次
While((ch=getchar())二二'e')printf(〃*〃);
答案:4
87、以下程序的输出结果是
main()
{inta=177;
printfa);
)答案:261
88、以下程序的输出结果是
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);
}答案:16
89、以下程序的输出结果是
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printfd);
}答案:0
90、以下程序的输出结果是
main()
{intx=0;
sub(&x,8,1);
printf("%d\n",x);
)
sub(int*a,intn,intk)
{if(k<=n)sub(a,n/2,2*k);
*a+=k;
}答案:7
91、以下程序输出的最后一个值是
intff(intn)
{staticintf=l;
f=f*n;
returnf;
)
main()
{inti;
for(i=l;i<=5;i++)printf(〃%d\n〃,ff(i));
)答案:120
92>已知某程序中有预处理命令[include<stdio.h>,为使语句“zx二fopen("c:\\n.txt”,r")能正常
执行,在该语句之前必须有定义
答案:FILE*zx
93、以下程序的输出结果为
main()
(
inta=10;
a=(3*5,a=4);
printf("d",a);
}答案:14
94、变量a所占的?节数是
union{charaa[10],longbb,intcc}a;答案:10
95、以下函数的功能是删除字符串s中的所有空格。请填空。?
viod?dele(char?*s)?
{?int?n=0,i;?
for(i=0;s[i];i++)??
if(a[i]D?s[n++]=s[i];?
s[n]=;?
)?答案:'\0'
96、有以下程序
main()
{charch口=“uvwxyz",*pc;
pc=ch;printfC<%c\n,\*(pc+5));}
程序运行后的输出结果是答案:z
97、设有如下说明?
typedef?struct?
{?int?n;?char?c;?double?x;}STD;
则要定义一个变量stu是以上说明的变量则正确定义方式是一
答案:STDstu
98、c语言运算符中优先级最低的是运算符
答案:,#逗号
99、设有定义:FILE*fw;请将以下文件的语句补充完整,以便可以向文本文件readme,txt的最后续
写内容。
fw=fopen();
答案:"readme,txt“,
100、以下程序输出结果是
ttinclude<stdio.h>
#defineM5
#defineNM+M
main()
(
intk;
k=N*N*5;
k=N*N*5;
printf(〃%d〃,k);
),
答案:55
所有单选题
1、C语言中下列叙述正确的是O
A:不能使用do-while语句构成的循环
B:do-while语句构成的循环,必须用break语句才能退出
C:do-whi1e语句构成的循环,当whi1e语句中的表达式值为非零时结束循环
1):do-while语句构成的循环,当while语句中的表达式值为零时结束循环答案:D
评析:本题的考查点是do-while语句。
选项A是错误的,C语言支持do-while语句;选项B是错误的,do-while构成的循环,当while
语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。故本题答案为D。
知识点:知识点/循环结构程序设计/WHILE和DOWHILE循环结构
2、以下选项中属于C语言的数据类型是。
A:复数型B:逻辑型C:双精度型D:集合型
答案:C
评析:本题的考查点是C语言的数据类型。
C语言的数据类型分为基本类型,构造类型,指针类型,空类型四大类。其中,基本类型分为整
型,字符型,实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。故本题答案为C。
知识点:知识点/数据类型及其运算/C的数据类型及其定义方法
3、下列描述中不正确的是。
A:字符型数组中可以存放字符串
B:可以对字符型数组进行整体输入、输出
C:可以对整型数组进行整体输入、输出
D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值答案:C
评析:本题的考查点是对数组的理解。
C语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个
字符串一次输入或输出。所以,选项C的说法是不正确的。
故本题答案为C。
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用
4、以下程序的输出结果是_____。
mainO
(intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A:10192B:9876
C:10990D:101091
答案:D
评析:本题的考查点是for循环语句。
for语句的一般格式为:for(表达式1;表达式2;表达式3)语句执行中只要表达式2为真,则执
行for语句中指定的内嵌语句。所以,本题在条件为真的情况下,先执行printf函数。x一是先使用
后运算。
知识点:知识点/循环结构程序设计/FOR循环结构
5、以下程序的输出结果是。
mainO
(chara[10]={T','2','3','4','5','6','7','8','9',0},*p;
inti;
i=8;
P=a+i;
printf("%s\n",p~3);
)
A:6B:6789C:'6'D:789答案:B
评析:本题的考查点是通过指针引用数组元素。
指针P指向数组中第8个元素,即a[8]='9'。输出时,输出字符串,且指针把a[8]作为初始位置
往前指3个元素,也就是共有4个字符输出。最后指向a[5]为'6',所以输出为6789。
知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数
6、能正确表示a和b同时为正或同时为负的逻辑表达式是。
A:(a>=0|b>=0)&&(a<0||b<0)
B:(a>=0&&b>=0)&&(a<0&&b<0)
C:(a+b>0)&&(a+b<=0)D:a*b>0答案:D
评析:本题的考查点是对逻辑表达式的判断。
逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。
选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条
件的值;
选项C中,表达式表示的是0,因为没有满足条件的值;
选项D表示的是a和b为同号。
知识点:知识点/基本语句/表达式语句,空语句,复合语句
7、以下程序的输出结果是_____。
mainO
{intn=4;
while(n一)printfCz%d",一n);
)
A:20B:31
C:321D:210答案:A
评析:本题的考查点是while语句的判断。
n一是先使用后运算,一n是先运算后使用。n=4时,执行n—后,n变为3,执行一n后,n变为2,
所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。知识点:知识点/循环结构程序设
计/WHILE和DOWHILE循环结构
8、以下程序的输出结果是_____»
mainO
(intk=17;
printf("%d,%o,%x\n”,k,k,k);
)
A:17,021,0x11B:17,17,17
C:17,0x11,021D:17,21,11答案:D
评析:本题的考查点是不同格式的数据输出。
printf函数对不同类型的数据用不同的格式字符,线d”是以带符号的十进制形式输出整数(正
数不输出符号);"。”以8进制无符号形式输出整数(不包括前导符0);线x”以16进制无符号形式
输出整数(不包括前导符Ox)。
知识点:知识点/数据类型及其运算/C的数据类型及其定义方法
9,若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是。
A:*p=&a;scanfp);
B:p=(long*)malloc(8);scanf(*%ld,p);
C:scanfp=&a);
D:scanf&a);答案:A
评析本题的考查点是格式输入函数Scanf()的使用。
scanf函数输入形式为:scanf(格式控制,地址表列);选项B中,p=(long*)malloc(8)是分配8个字节
的long型存储单元,所以能通过scanf语句正确给输入项读入数据;
选项C中,p=&a,求出变量a的内存地址并赋给p;
选项D中,能正确给输入项读入数据;
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用
10、以下选项中,能定义s为合法的结构体变量的是。
A:typedefstructabc
{doublea;
charb[10];
}s;
B:struct
{doublea;
charb[10];
}s;
C:structABC
{doublea;
charb[10];
)
ABCs;
D:typedefABC
{doublea;
charb[10];
)
ABCs;答案:B
评析:本题的考查点是结构体变量的定义。
定义一个结构体类型的变量,可采用三种方法:
(1)先定义结构体类型再定义变量名;
(2)在定义类型的同时定义变量;
(3)直接定义结构类型变量,即不出现结构体名;
选项B符合第三种定义方法。
知识点:知识点/结构体(即''结构")与共用体(即〃联合”)/结构体和共用体类型数据的定义
方法和引用方法
11、请读程序:
ftinclude<stdio.h>
main()
(
inta,b;
for(a=1,b=1;a<=100;a++){
if(b>=20)break;
if(b%3=1){b+=3;continue;}
b-=5;
)
printf("%d\n”,a);
}
上面程序的输出结果是o
A:7B:8C:9D:10答案:B
评析:本题的考查点是break语句和continue语句。
"旷是求余运算符,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反
复,当b=22时,条件(b>=20)为假,跳出循环,此时共循环8次,即a=8。
知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构
12、请选出合法的C语言赋值语句。
A:a=b=58B:i++;
C:a=58,b=58D:k=int(a+b);答案:B
评析:本题的考查点是赋值语句。
选项A和C没有用分号表示语句结束,不合法;
选项D,函数名和C语言的关键字重名,不合法。
故本题答案为B。
知识点:知识点/基本语句/表达式语句,空语句,复合语句
13、请选出可用作C语言用户标识符的一组标识符_____。
①void②a3_b3③For④2a
define_123_abcDO
WORDIFcasesizeof
A:①B:②C:③D:④答案:B
评析:本题的考查点是C语言的标识符。
C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划
线。
①中的void和define都和C语言的关键字重名,不合法;
③中的case和C语言的关键字重名,不合法;
④中的2a是数字打头而且sizeof和C语言的关键字重名,不合法。
知识点:知识点/数据类型及其运算/C的数据类型及其定义方法
14、若x和y都是int型变量,x=100、y=200,且有下面的程序片段
printf(x,y));
上面程序片段的输出结果是.
A:200B:100C:100200
D:输入格式符不够,输出不确定的值
答案:A
》析:本题的考查点是逗号表达式。
在(x,y)中的是一个特殊的运算符,叫做逗号运算符,它的一般形式为:表达式1,表达式2,
求解过程为:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值,(x,y)的值为200,
所以输出结果为200。
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用
15、若x是int型变量,且有下面的程序片段
for(x=3;x<6;x++)printf((x%2)?("**%d"):('##%d\n"),x);
上面程序片段的输出结果是。
①**3②##3③④**3##4
##4**4**4##5**5
**5##5
A:①B:②C:③D:④答案:D
评析:本题的考查点是条件运算符。
这种条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的执行顺序为:先求解
表达式1,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,
则求解表达式3,此时表达式3的值就是整个条件表达式的值。
故本题答案为D。
知识点:知后点/数据类型及其运算/C运算符的种类、运算优先级和结合性
16、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是。
A:pb=&x;B:pb=x;C:*pb=&x;D:*pb=*x
答案:A
评析:本题的考查点是赋值表达式。
选项A是将变量x的地址赋给指针变量pb,使pb指向x,故为正确的赋值表达式。
选项B是将x的值当作地址赋给指针pb,pb指向一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/Z 184.1-2026铸铁第1部分:面向设计的材料与性能
- 2027届湖南省郴州市湘南中学九年级化学第一学期期末调研试题含解析
- 湖北大悟书生学校2027届化学九上期末教学质量检测试题含解析
- 安徽省宿州地区2027届九上化学期末经典试题含解析
- 江西省金溪县2027届九上化学期中监测模拟试题含解析
- 2027届上海市文达学校九年级物理第一学期期末学业水平测试模拟试题含解析
- 2027届北京市石景山区九上化学期中学业质量监测模拟试题含解析
- 2026中国智慧农业物联网技术应用与市场空间评估报告
- 山东省滕州市南沙河中学2027届化学九上期末统考试题含解析
- 2026汽车后市场深度调研与发展趋势及投资布局研究报告
- 2025内蒙古能源集团招聘(114人)笔试历年备考题库附带答案详解
- 中国颅内肿瘤诊治指南(2026版)
- CN117855594B 一种固态聚合物电解质的原位制备方法及其回收方法和锂离子电池 (中国科学院长春应用化学研究所)
- 2025年特殊教育学校教师招聘笔试试题及答案
- 2026-2027年人工智能(AI)驱动的个性化国际税务筹划与合规风险预警平台适应全球税收规则变化获金融与法律科技投资
- 2026一级建造师《机电》必背知识点
- DB37∕T 5079-2024 医院建筑能耗限额标准
- 新华书店行测考试题库
- 经尿道电切术同期治疗膀胱肿瘤合并良性前列腺增生的效果
- 2025年区县级考试公共基础试卷
- 统编版(2024)七年级上册语文期末复习:高频考点汇编(附例题和答题模板)
评论
0/150
提交评论