printf("%d\n",sum);
}
A)2500B)2050C)4D)0
(10)下列程序的输出结果是__D____。
main()
{inti=3;
switch(i)
{case1:
case2:
printf("%d",i);
case3:
case4:
break;
default:
printf("OK");
}
}
A)0B)3C)OKD)没有任何输出
(11)下列程序执行后的输出结果是__C____。
main()
{intm[][3]={1,4,7,2,5,8,3,6,9};
inti,k=2;
for(i=0;i<3;i++)
{printf("%d",m[k][i]);}
}
A)456B)258C)369D)789
(12)设已定义i和k为int类型变量,则以下for循环语句__B____。
for(i=0;k=-1,k=1;i++,k++)
printf("****\n");
A)判断循环结束的条件不合法B)是无限循环
C)循环一次也不执行D)循环只执行一次
(13)下面程序的输出结果是__C____。
unsignedfun(unsignednum)
{unsignedk=1;
do{
k*=num%10;
num/=10;
}while(num);
return(k);
}
main()
{unsignedn=26;
printf("%d\n",fun(n));
}
A)0B)4C)12D)无限次循环
(14)已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序__C____。
main()
{chara='A';
intb=20;
printf("%d,%o",(a=a+a,a+b,b),a+'a'-'A',b);
}
A)表达式非法,输出零或不确定值
B)因输出项过多,无输出或输出不确定值
C)输出结果为20,141
D)输出结果为20,141,20
(15)C语言函数返回值的类型是由___D___决定的。
A)return语句中的表达式类型B)调用函数的主调函数类型
C)调用函数时临时D)定义函数时所指定的函数类型
(16)下列程序执行后输出的结果是__C____。
intd=1;
fun(intp)
{intd=5;
d+=p++;
printf("%d,",d);
}
main()
{inta=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
A)8,12B)9,13C)8,4D)9,5
(17)已知下面的程序段,正确的判断是_C____。
#defineA3
#defineB(A)((A+1)*a)
inta=3;
……
X=3*(A+B(7));
A)程序错误,不允许嵌套定义B)X=93
C)X=81D)程序错误,宏定义不允许有参数
(18)定义int*swap()指的是_B____。
A)一个返回整型值的函数swap()
B)一个返回指向整型值指针的函数swap()
C)一个指向函数swap()的指针,函数返回一个整型值
D)以上说法均错
(19)以下程序段的输出结果是__B____。
main()
{chars1[10],s2[10],s3[10];
scanf("%s",s1);gets(s2);gets(s3);
puts(s1);puts(s2);puts(s3);
}
输入数据如下:
(此处代表回车符)
aaa
bbb
A)aaaB)aaaC)aaa\0bbb\0D)aaabbb
Bbbbbb
(20)下述函数功能是__A____。
intfun(char*x)
{char*y=x;
while(*y++);
returny-x-1;
}
A)求字符串的长度B)求字符串存放的位置
C)比较两个字符串的大小D)将字符串x连接到字符串y后面
(21)以下程序的输出结果是__A____。
main()
{charstr[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A)6B)7C)11D)12
(22)请读程序段:
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+4));
程序段的输出结果是__B____。
A)68B)0C)字符’D’的地址D)不确定的值
(23)若有定义:
inta[4][10];,则以下选项中对数组元素a[i][j]引用错误的是___B___。
(0<=i<4,0<=j<10)
A)*(&a[0][0]+10*i+j)B)*(a+i)+j
C)*(*(a+i)+j)D)*(a[i]+j)
(24)设有以下语句:
charstr1[]="string",str2[8],*str3,*str4="string";
则__CD____不是对库函数的正确调用。
A)strcpy(str1,"HELLO1");B)strcpy(str2,"HELLO2");
C)strcpy(str3,"HELLO3");D)strcpy(str4,"HELLO4");
(25)请读程序:
#include
#include
main()
{char*s1="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d\n",strcmp(s1,s2));
}
上面程序的输出结果是__A____。
A)正数B)负数C)零D)不确定的值
(26)下面程序的输出是___A___。
chars[]="ABCD";
main()
{char*p;
for(p=s;p
printf("%s\n",p);
}
A)ABCDB)AC)DD)ABCD
BCDBCABC
CDCBAB
DDAA
(27)以下程序输出的结果为___C___。
main()
{char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};
char**p;
inti;
p=alpha;
for(i=0;i<4;i++)
printf("%s",p[i]);
}
A)ABCDEFGHIJKLB)ABCD
C)ABCDEFGHIJKLMNOPD)AEIM
(28)下面程序的输出结果是__A____。
#include
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>=0;i--,i--)
printf("%c",*p[i]);
printf("\n");
}
A)SOB)SPC)SPOPKD)SHOB
(29)以下程序的输出结果是__B____。
#include
voidprt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
inta=10,b=40,c=20;
main()
{prt(&a,&b,&c);
prt(&a,&b,&c);
}
A)11,42,31B)11,41,20C)11,21,40D)11,41,21
12,22,4112,42,2011,21,4112,42,22
(30)若一个外部变量的定义形式为staticintx;,那么,其中static的作用应该是__C____。
A)将变量存储在静态存储区
B)使变量x可以由系统自动初始化
C)使x只能在本文件内引用
D)使x的值可以永久保留
(31)以下程序的输出结果是__B____。
#include
#defineSQR(x)x*x
main()
{inta,k=3;
a=++SQR(k+1);
printf("%d\n",a);
}
A)8B)9C)17D)20
(32)下面是对宏定义的描述,不正确的是___C___。
A)宏不存在类型问题,宏名无类型,它的参数也无类型
B)宏替换不占用运行时间
C)宏替换时先求出实参表达式的值,然后代入形参运算求值
D)宏替换只不过是字符替代而已
(33)已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是___C___。
main()
{unsignedinta=32,b=66;
printf("%c\n",a|b);
}
A)66B)98C)bD)B
二、填空题(每空2分)
(1)若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【_____-16_________】。
(2)若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【___8.0__________】。
(3)设有chara,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和第8位(右起为第1位),则b的二进制是【__10000010___】。
(4)下列程序执行后输出的结果是【_______7__________】。
f(inta)
{staticc=0;
c=a+c++;
return(c);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
(5)下面程序执行后输出的结果是【_______2___________】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
(6)下列程序执行后输出的结果是【_______12___________】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
(7)以下程序的输出结果是:
【_____1,0________】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%d,",*p);
printf("%d\n",*(p+9));
}
(8)以下函数的功能是计算s=1+1/2!
+1/3!
+…+1/n!
,请填空。
doublefun(intn)
{doubles=0.0,fac=1.0;
inti,k=1;
for(i=1;i<=n;i++)
{【_____k*k*i______】;
fac=fac/k;
s=s+fac;
}
}
(9)下面程序的运行结果是【____x=11____________】。
main()
{unsignedinta=0112,x;
x=a>>3;
printf("x=%o",x);
}
(10)函数delete(s,i,n)是作用是从字符串s中删除从第i个字符开始的n个字符,请填空。
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
{【___length++______】;
--i;
j=i;
}
if(【_____i{k=i+n;
if(i+n<=length)
while(ks[j++]=s[k++];
s[j]='\0';
}
(11)下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。
intword(char*s)
{intnum=0,flag=0;
while(*s)
{if(【_*s++___】=='')flag=0;
elseif(【__flag==0____】){flag=1;num++}
}
return【__num___】;
}
C语言程序设计模拟题
(2)
一、选择题
(1)请读程序:
#include
main()
{
inta;floatb,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
}
若运行时从键盘上输入9876543210↙,则上面程序的输出结果是__C___。
A)a=98,b=765,c=4321
B)a=10,b=432,c=8765
C)a=98,b=765.000000,c=4321.000000
D)a=98,b=765.0,c=4321.0
(2)一个良好的算法由下面的基本结构组成,但不包括___D___。
A)顺序结构B)选择结构C)循环结构D)跳转结构
(3)请选出以下程序的输出结果__B____。
#include
sub(intx,inty,int*z)
{*z=y-x;}
main()
{inta,b,c;
sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
A)5,2,3B)-5,-12,-7C)-5,-12,-17D)5,-2,-7
(4)下面程序在屏幕上的输出是_B___。
main()
{
printf("ab\b\bc");
}
A)ab\b\bcB)acC)abcD)abc
(5)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是__A____。
A)pb=&x;B)pb=x;C)*pb=&x;D)*pb=*x
(6)设整型数i=5,则printf("%d",i+++++i);的输出为_D___。
A)10B)11C)12D)语法错误
(7)下面程序输出的结果是__A___。
main()
{
inti=5,j=9,x;
x=(i==j?
i:
(j=7));
printf("\n%d,%d",i,j);
}
A)5,7B)5,5C)语法错误D)7,5
(8)若执行下面程序时从键盘上输入5,
main()
{
intx;
scanf("%d",&x);
if(x++>5)printf("%d\n",x);
elseprintf("%d\n",x--);
}
则输出是__B____。
A)7B)6C)5D)4
(9)若有以下定义和语句:
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;
则值为3的表达式是__A____。
A)p+=2,*(p++)B)p+=2,*++p
C)p+=3,*p++D)p+=2,++*p
(10)设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是_D___。
A)'a'&&'b'B)a<=b
C)a||+c&&b-cD)!
((a
c||1)
(11)以下程序运行后,输出结果是__C____。
main()
{
char*d[]={"ab","cde"};
printf("%x",d[1]);
}
A)cdeB)字符c的ASCII码值
C)字符c的地址D)出错
(12)设有如下程序
#include
main()
{
int**k,*j,i=100;
j=&i;k=&j;
printf("%d\n",**k);
}
上述程序的输出结果是___B___。
A)运行错误B)100
C)i的地址D)j的地址
(13)设有以下语句,其中不是对a数组元素的正确引用的是:
__D____(其中0≤i<10)
inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;
A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))
(14)有以下程序:
#include
main(){
charc[6];
inti=0;
for(;i<6;c[i]=getchar(),i++);
for(i=0;i<6;i++)putchar(c[i]);
printf("\n");
}
如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为_____C________。
A)aB)aC)abD)abcdef
bbc
ccd
dd
e
f
(15)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是___B____。
A)地址传递
B)单向值传递
C)由实参传递给形参,再由形参传递给实参
D)传递方式由用户指定
(16)以下程序
#include
#include
main()
{char*p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);
}
的输出是_D___。
A)xyzabcABCB)zabcABC
C)yzabcABCD)xyabcABC
(17)以下程序
intaa[3][3]={{2},{4},{6}};
main()
{inti,*p=&aa[0][0];
for(i=0;i<2;i++)
{if(i==0)aa[i][i+1]=*p+1;
else++p;
printf("%d",*p);
}
}的输出是__A____。
A)23B)26C)33D)36
(18)以下程序的输出结果是__C____。
#include
#include
fun(char*w,intn)
{
chart,*s1,*s2;
s1=w;s2=w+n-1;
while(s1{t=*s1++;
*s1=*s2--;
*s2=t