计算机二年级C语言试题库.docx
《计算机二年级C语言试题库.docx》由会员分享,可在线阅读,更多相关《计算机二年级C语言试题库.docx(14页珍藏版)》请在冰豆网上搜索。
计算机二年级C语言试题库
CompanyDocumentnumber:
WUUT-WUUY-WBBGB-BWYTT-1982GT
计算机二年级C语言试题库
计算机二级C语言试题库
1有以下程序
main()
{inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=aprintf("%d,%d\n",k,m);
}
程序运行后的输出结果是
A)0,0B)0,1C)1,0D)1,1
2在一个C程序中
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置
3有以下程序
main()
{inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
执行后输出结果是
A)2B)3C)4D)编译时有错,无结果
4有以下程序
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);
}
}
执行后输出结果是
5有以下程序
main()
{intk=4,n=0;
for(;n{n++;
if(n%3!
=0)continue;
k--;}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是
A)1,1B)2,2C)3,3D)4,4
6有以下程序
fun(inta,intb)
{if(a>b)return(a);
elsereturn(b);
}
main()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
程序运行后的输出结果是
A)3B)6C)8D)12
7有以下程序
int*f(int*x,int*y)
{if(*x<*y)
returnx;
else
returny;
}
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=f(p,q);
printf("%d,%d,%d\n",*p,*q,*r);
}
执行后输出结果是
A)7,8,8B)7,8,7C)8,7,7D)8,7,8
8以下能正确地定义整型变量a,b和c并为其赋初值5的语句是
A)inta=b=c=5;B)inta,b,c=5;
C)a=5,b=5,c=5;D)a=c=b=5;
9若二维数组a有m列,则在a[i][j]前的元素个数为
A)j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1
10下面程序段是输出两个字符串中对应相等的字符。
请选择填空
charx[]=”programming”;
chary[]=”Fortran”;
inti=0;
while(x[i]!
=’\0’&&y[i]!
=’\0’)
if(x[i]==y[i])printf(“%c”,[]);
elsei++;
A)x[i++]B)y[++i]C)x[i]D)y[i]
11若使用一维数组名作函数实参,则以下正确的说法是
A)必须在主调函数中说明次数组的大小
B实参数组类型与形参数组类型可以不匹配
C在被调函数中,不需要考虑形参数组的大小
D实参数组名与形参数组名必须一致
12以下程序的正确运行结果是
#inclued
main()
{intk=4,m=1,p;
p=func(k,m);printf(“%d”,p);
p=func(k,m);printf(“%d\n”,p);
}
func(inta,intb)
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A)8,17B)8,16C)8,20D)8,8
13若有说明:
int*p,m=5,n;以下正确的程序段是
A)p=&n;scanf(“%d”,&p);
B)p=&n;scanf(“%d”,*p);
C)scanf(“%d”,&n);*p=n;
D)p=&n;*p=m;
14执行以下程序后,a和b的值为
main()
{inta,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(-*p1)/(*p2)+7;
printf(“a=%d\n”,a);
printf(“b=%d\n”,b);}
A)-1,5B)1,6C)0,7D)4,10
15若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是
A)”ab+”B)”wb+”C)”rb+”D”ab”
16根据定义和数据的输入方式,输入语句的正确形式为
已有定义:
floatf1,f2;
数据的输入方式:
A)scanf(“%f,%f”,&f1,&f2);
B)scanf(“%f%f”,&f1,&f2);
C)scanf(“%%”,&f1,&f2);
D)scanf(“%%”,&f1,&f2);
17分析以下程序运行结果
#include
intfunc(intn){
if(n==1)
return1;
else
return(n*func(n-1));
}
voidmain(){
intx;
x=func(5);
printf(“%d\n”,x);
}
A)100B)5C)1D)120
18分析以下程序运行结果
#include
voidmain(){
inty=2,a=1;
while(y--!
=-1){
do{
a*=y;a++;
}while(y--);}
printf(“%d,%d\n”,a,y);}
A)1,-2B)2,1C)1,0D)2,-1
19下面程序段的运行结果是
chara[7]=”abcdef”;
charb[4]=”ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
A)空格B)\0C)eD)f
20下面是对s的初始化,其中不正确的是
A)chars[5]={“abc”};B)chars[5]={‘a’,’b’,’c’};
C)chars[5]=””;D)chars[5]=”abcdef”;
21执行语句for(i=1;i++<4;);后变量i的值是
A)3B)4C)5D)不定
22以下程序段
x=-1;
do
{x=x*x;}
while(!
x);
A)是死循环B)循环执行二次
C)循环执行一次D)有语法错误
23若有以下定义和语句:
iniondata
{inti;
charc;
floatf;
}a;
intn;
则以下语句正确的是
A)a=5;B)a={2,’a’,};C)printf(“%d\n”,a);D)n=a;
24下面程序的运行结果是
main()
{
structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
printf(“%d\n”,cnum[0].y/cnum[0].x*cunm[1].x);
}
A)0B)1C)3D)6
25以下程序的运行结果是
main()
{intk=4,a=3,b=2,c=1;
printf(“\n%d\n”,k}
A)4B)3C)2D)1
二填空
1若有以下定义,则计算表达式y+=y-=m*=以后y的值是_____
intm=5,y=2;
2若有定义:
intb=7;floata=,c=;:
则下面表达式的值为_____
a+(int)(b/3*(int)(a+c)/2)%4
3有inta=3,b=4,c=5;,则以下表达式的值为_____
!
(a+b)+c-1&&b+c/2
4条件”2或x<-10”的c语言表达式是_____
5以下程序的功能是判断输入的年份是否是闰年.请在[]内填入正确内容
main()
{inty,f;
scanf(“%d”,&y);
if(y%400==0)f=1;
elseif([5])f=1;
else[6];
if(f)printf(“%dis”,y);
elseprintf(“%disnot”,y);
printf(“aleapyear\n”);
}
6下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5。
请填空
#include
main(0
{inti,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;k=i;
while([7]){s=s+k%10;k=[8];}
if(s!
=5)[9];
elsecount++;
}
printf(“%d”,count);
}
7下面程序将二维数组a的行和列元素呼唤后存到另一个二维数组b中。
请填空
main()
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],I,j;
printf(“arraya:
\n”);
for(i=0;i<=1;i++)
{for(j=0;[10];j++)
{printf(“%5d”,a[i][j]);
[11];
}
printf(“\n”);
}
printf(“arrayb:
\n”);
for(i=0;[12];i++)
{for(j=0;j<=1;j++)
printf(“%5d”,b[i][j]);
printf(“\n”);
}
}
8以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。
顺序查找法的思路是:
从第一个元素开始,从前向后依次与关键字你叫,直到找到此元素或查找到数组尾部时结束。
若找到,返回此元素的下标;若仍未找到,则返回值-1。
请填空
#include
intsearch(inta[10],intm)
{intI;
for(i=0;i<=9;i++)if([1])return(i);
return(-1);
}
main()
{inta[13],m,i,no;
……
no=search([14]);
if([15])printf(“\nOKFOUND!
%d”,no+1);
elseprintf(“\nSorryNotFound!
”);
}
9若有定义:
inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是[16],*(a+5)的值是[17]
10将任意输入的一个偶数n分解为两个素数之和,并给出各种分解方法
#include
main()
{
intn,i;
intcheck(intx);
do{
scanf(“%d”,&n);
}while(n%2!
=0);
for(i=3;i<=n/2;i++)
if(check(i)&&[18])
printf(“%d=%d+%d\n”,n,i,n-i);
}
intcheck(intx)
{
inti;
for(i=2;iif([19])return(0);
return
(1);
}
11函数调用语句:
fgets(buf,n,fp);从fp指向的文件中读入[20]个字符放到buf字符数组中。
函数值为[21]
12设数组a包括10个整型元素。
下面程序的功能是求出a中各相邻元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。
请填空
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for([22];i<10;i++)
[23]
for(i=1;i<10;i++)
{printf(“%3d”,b[i]);
if([24]==0)printf(“\n”);
}
}
13如果以下程序输入的是wearestudents,则输出的结果是[25]
#include“”
voidmain()
{chars[81],*p;
printf(“Inputasentence:
\n”);gets(s);
for(p=s;*p;p++)
if(*p==32)100];
C)#defineN100; D)intN=100;
intnum[N]; intnum[N];
答案:
C
评析:
有二种方法指定数组长度。
其一是直接在数组名后面的方括号内输入数组的长度。
其二是,在定义数组的同时对其赋值,由实际赋值的元素个数自动确定数组的长度。
(31)有以下程序
fun(inta[],intm,intn)
{ int I,J;
for(i=m;i a[i+ll=a[I]+3;
}
main()
{
inti,a[6l={2,4,6,8,10,12};
clrscr0;
fun(a,2,5);
for(i=O;i<6;i++)
printf("%"a[I]);
}
程序运行后输出的结果是__________。
答案:
B
评析:
在调用函数时,既可以用单个的变量作为参数,也可以用数组名作为参数。
还可将数组的下标值作为实参使用。
在本题中,是将数组名和数组的下标值作为实参。
(32)以下不正确的叙述是__________.
A)在C程序中,逗号运算符的优先级最低。
B)在C程序中,T和t是两个不同的变量
C)若a和b类型相同,在执行了赋值表达式a=b后,b中的值将放入a中,而b中的值不变。
D)当从键盘输入数据时,对于整型变量只能输入整型数据。
对于实型变量只能输入实型数据。
答案:
D
评析:
在c语言中,为方便表达式的运算,对所有的运算符都设定了一定的优先级,其中逗号运算符的优先级最低。
c语言中的数据有常量和变量之分,其中变量是区分大小写的,也就是说T和t是两个不同的变量名。
将某个变量的值赋给其它的变量之后,并不影响其本身的值。
当定义一个整型变量后,可以从键盘上对其输入整型值,也可以是字符型的数据。
如果将字符型的值赋给整型变量,则它接受的是字符常量的ASCII码值。
实型变量也可以接收整型值。
(33)有以下程序
pf(char*p,intn)
{ int i;
for(i=0;i p[i]=p[I]+32;
}
main()
{
chara[]="ABCD";
inti:
clrscr();
pf(a,4);
for(i=0;i<4;i++)
printf("%c",a[I]);
}
程序运行后的输出结果是________。
A)ABCD B)ABCD\0 C)abcd D)abed\0
答案:
C
评析:
通过指向数组的指针可以引用数组中的任何元素,并且对其进行各种运算。
本题中就是通过指向数组的指针将一字符数组中的所有大写字母转换成相应的小写字母。
(34)有以下程序
main()
{
int a[3][3],*p,i;
clrscr();
p=&a[0][0];
for(i=0;i<9;i++)
p[i]:
i+2;
printf("%d\n",a[2][11);
}
程序运行后的输出结果是_________。
A)3 B)6 C)9 D)2
答案:
C
评析:
当某个指针变量指向多维数组时,可以用其每次加l来顺序操作数组中的元素。
在此题中,a[3][3]={{2,3,4},{5,6,7},{8,9,10}}。
而最后输出的a[2][1]就是第3行的第2列的元素,即9。
(35)有以下程序
#include
#defineF(X,Y)(X)*(Y)
main()
{
inta=3,b=4;
clrscr();
printf("%d\n",F(a--,++b));
}
程序运行后的输出结果是_________。
A)8 B)10 C)12 D)15
答案:
D
评析。
在带参数的宏定义中,不是简单的字符替换。
其方法是:
在程序中如果有带实参的宏, (如F(x,Y)),则按#defin