程序设计基础练习题全部有答案版.docx
《程序设计基础练习题全部有答案版.docx》由会员分享,可在线阅读,更多相关《程序设计基础练习题全部有答案版.docx(53页珍藏版)》请在冰豆网上搜索。
程序设计基础练习题全部有答案版
一、单项选择题(每小题2分,共20分)
第一章
D1.下列说法中错误的是()。
A、程序的执行总是从主函数开始
B、主函数可以调用任何非主函数的其它函数
C、任何非主函数可以调用其它任何非主函数
D、程序可以从任何非主函数开始执行
C2.若a=4,b=7,则输出4*7=28的语句是()。
A、printf(“a*b=%d\n”a+b);
B、printf(“a*b=%d\n”,a*b);
C、printf(“%d*%d=%d\n”,a,b,a*b);
D、printf(“%d*%d=%d\n”,a+b);
第三章
C1.C语言中int型数据占2个字节,则long型数据占(C)个字节。
A、1B、2C、4D、8
D2.若C中int型数据占2个字节,则double型数据占(D)个字节。
A、1B、2C、4D、8
B3.若a为整型变数,则以下语句(B)。
a=-2L;
printf(“%d\n”,a);
A、赋值不合法B、输出-2C、输出不确定值D、输出2
D4. 若int型数据占2个字节,则下列语句的输出为(D)。
intk=-1;
printf(“%d,%u\n”,k,k);
A、-1,-1B、-1,32767C、-1,32768D、-1,65535
B5. 下列程序的输出是(B)。
#include
main()
{printf(“%d\n”,null);}
A、0B、变量无定义C、-1D、1
C6.若x为float型变数,则以下语句:
x=223.82748;
printf("%6.2f\n",x);
运行结果为(C)。
A、223.8B、223.82C、223.83D、223.827
D7. 设有语句inta=3;则执行语句a+=a-=a*a后,变量a的值是(D)。
A、3B、0C、9D、-12
第四章
A1. 执行语句:
a=5,b=8;printf(“%d\n”,c=a/b);后输出的值为(A)。
A、0B、0.6C、0.625D、0.
B2. 下列语句(B)。
intk=8567;
printf(“|%06d|\n”,k);
A、输出格式描述符不合法B、输出为||
C、输出为|8567|D、输出为|-08567|
C3. 下列语句(C)。
intk=8567;
printf(“|%-06d|\n”,k);
A、输出格式描述符不合法B、输出为||
C、输出为|8567|D、输出为|-08567|
C4. 若ch为字符型,k为整,则执行下列语句后的输出为(C)。
ch=’a’;
k=12;
printf(“%x,%o,”,ch,ch,k);
printf(“k=%%d\n”,k)
A、因变量类型与格式描述符的类型不匹配,输出无定值;
B、输出项与格式描述符个数不符,输出为0或不定值;
C、61,141,k=%d;
D、61,141,k=%12
D5. 若k,g为int型变数,则下列语句的输出为(D)。
k=017;
g=111;
printf(“%d,%x\n”,++k,g++);
A、15,6fB、16,70C、15,71D、16,6f
B6. 有以下程序I和II,判断它们的输出(B)。
I#include
main()
{inta=4,b=7;
printf(“%d\n”,(a=a+1,b+a,b+1));
}
II#include
main()
{inta=1,b=2;
printf(“%d\n”,a=a+1,a+b,b+1));
}
A、I输出5,II输出2B、I输出8,II输出2
C、I输出5,II输出3D、I输出8,II输出3
A7. 下列程序的输出为(A)。
#include
main()
{intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf(“%f\n”,x);
}
A、27.B、27.
C、28.D、28.
第五章
D1. 在C语言中,能代表逻辑值“真”的是(D)。
A、trueB、大于0的数C、非0整数D、非0的数
C2. 若给定表达式(M)?
(a++):
(a--),则其中表达式M(C)。
A、和(M==0)等价B、和(M==1)等价
C、和(M!
=0)等价D、和(M!
=1)等价
D3. 在C语言的if语句中,用作判断的表达式为(D)。
A、关系表达式B、逻辑表达式
C、算术表达式D、任意表达式
D4. 以下程序的输出是(D)。
#include
main()
{inti,j,k,a=3,b=2;
i=(--a==b++)?
--a:
++b;
j=a++;k=b;
printf(“I=%d,j=%d,k=%d\n”,i,j,k);
}
A、i=2,j=1,k=3B、i=1,j=1,k=2
C、i=4,j=2,k=4D、i=1,j=1,k=3
B5. 执行下面的程序:
main()
{intx;
scanf("%d",&x);
if(x++>5)printf("%d\n",x);
elseprintf("%d\n",-x);
}
若输入5,则输出为(B)。
A、6B、-6C、5D、-5
6. 有程序段:
inta,b;
a=9;b=10;
则表达式:
(++a==b--)?
--a:
++b的值为(B)。
A、8B、9C、10D、11
●7. 假设所有变量都是整型,则表达式:
a=2,b=5,a>b?
a++:
b++,a+b
的值为(B)。
A、7B、8C、9D、2
8. 下面程序的输出为(A)。
#include
voidmain()
{inta,b,c;
a=10;b=50;c=30;
if(a>b)a=b,
b=c;c=a;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
A、a=10,b=50,c=10B、a=10,b=30,c=10
C、a=50,b=30,c=10D、a=50,b=30,c=50
C9. 下面程序运行后输出的结果是()。
main()
{intn;
for(n=0;n<3;n++)
switch(n)
{case1:
printf(“%d”,n);
case2:
printf(“%d”,n);
default:
printf(“%d”,n)
}
}
A、012B、120C、D、
10. 下面程序的输出是(B)。
#include
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
A、a=1,b=0B、a=2,b=1C、a=1,b=1D、a=2,b=2
第六章
1. 下面循环的执行次数是(4)次。
n=0;
while(++n<5)
{printf("%3d\n",n);}
2. C语言中,用于结构化程序设计的三种基本结构是(A)。
A、顺序结构、选择结构、循环结构;B、if、switch、break;
C、for、while、do-while;D、if、goto、continue:
3. 在C语言中,为了结束while语句构成的循环,while后一对圆括号中表达式的值应该为(A)。
A、0B、1C、trueD、非0
4. 在C语言中,为了结束do-while语句构成的循环,while后一对圆括号中表达式的值应该为(A)。
A、0B、1C、trueD、非0
5. 若k为整型,则while循环执行(C)。
k=10;
while(k=0)k=k-1;
A、10次B、无限次C、0次D、2次
6. 若k为整型,则while循环执行(B)。
k=2;
while(k==0)printf(“%d”,k),k--;
printf(“\n”);
A、无限次B、0次C、1次D、2次
7. 下面程序执行后,k的值是(C)。
#include
main()
{
intk=2;
while(k==0)
printf("%d",k),k--;
printf("k=%d\n",k);
printf("\n");
}
A、0B、1C、2D、-2
8. 下面程序的输出为(B)。
#include
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A、x=4B、x=8C、x=6D、x=12
第七章
1. 以下函数的功能是:
通过键盘输入数据,为数组中的所有元素赋值,则在下划线处应填入的是(D)。
#defineN10
voidarrin(intx[N])
{intk=0;
while(kscanf(“%d”,);
}
A、x+kB、&x[k+1]C、x+(k++)D、&x[k++]
2. 以下能正确定义数组并正确赋值的语句是(D)。
A、intN=5,a[N][N];B、intb[1][2]={{1},{3}};
C、intc[2][]={{1,2},{3,4}};6D、intd[3][2]={{1,2},{34}};
3. 不正确的字符串赋值或赋初值方式是(C)。
A、 char*str;str=”string”;
B、 charstr[7]={‘s’,’t’,’r’,’i’,’n’,’g’};
C、 charstr[10];str[10]=”string”;
D、 charstr1[]=”string”,str2[]=””;strcpy(str2,str1);
4. 若有以下定义和语句,则输出结果是(C)。
chars[12]=”abook!
”;
printf(“%d”,strlen(s));
A、9B、8C、7D、6
5. 若有以下定义和语句,则输出结果是(B)。
chars[]=”abook!
”;
printf(“%d”,sizeof(s));
A、9B、8C、7D、6
第八章
C1.C语言可执行程序的开始执行点是()。
A、第一条可执行语句B、第一个函数
C、main函数D、包含文件中的第一个函数
C2. C语言中规定,若对函数类型未加显示说明,则函数的隐含类型为()。
A、voidB、doubleC、intD、char
C3. C语言程序中,当调用函数时()。
(不确定)
A、实参和形参各占一个独立的存储单元
B、实参和形参可以共享存储单元
C、可以由用户指定是否共享存储单元
D、由计算机系统自动确定是否共享存储单元
C4. 下面程序的输出结果为()。
#include
voidmain()
{intf();
inti=2,k;
k=f(i,++i);
printf("%d\n",k);}
intf(inta,intb)
{intc;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
}
A、2B、1C、-1D、0
A5. 下面程序的输出结果是()。
#include
main()
{intfunc(inta,intb);
intk=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
intfunc(inta,intb)
{staticintm,n=2;
n+=m+1;
m=n+a+b;
return(m);
}
A、8,17B、8,16C、8,20D、8,8
第九章
C1.以下叙述正确的是()。
A、在程序的一行上可以出现多个预处理命令行
B、预处理行是C的合法语句
C、被包含的檔不一定以.h作为后缀
D、在以下定义中CR是称为“宏名”的标识符
#definefc4566CR
B2. 在“檔包含”预处理语句的使用形式中,当#include后面的文件名用“”(双引号)括起时,寻找被包含檔的方式是()。
A、直接按系统设定的标准方式搜索目录
B、先在源程序所在目录搜索,再按系统设定的标准方式搜索
C、仅仅搜索源程序所在目录
D、仅仅搜索当前目录
C3.以下叙述中不正确的是()。
A、预处理命令行都必需以#开始
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、程序在执行过程中对预处理命令行进行处理
D、在下是正确的宏定义
#defineIBM_PC
C4. 以下程序的运行结果是()。
#definePT3.5
#defineS(x)PT*x*x
main()
{
inta=1,b=2;
printf(“%4.1f\n”,S(a+b));3.5*a+b*a+b
}
A、14.0B、31.5C、7.5D、10.5
C5.下面程序运行后输出的结果)。
#include"stdio.h"
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{
inta,b,c;
a=10,b=20;
c=8*MIN(a,b);
printf("%d\n",c);
}
A、10B、20C、80D、120
A6.下面程序运行后输出的结果是()。
#include"stdio.h"
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{
inta,b,c;
a=10,b=20;
c=8*MIN(a,b)-5;
printf("%d\n",c);
}
A、75B、15C、20D、155
C7.下面程序运行后输出的结果是()。
#include"stdio.h"
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{
inta,b,c;
a=10,b=20;
c=MIN(a+b,a-b)*8;
printf("%d\n",c);
}
A、10B、20C、-80D、-10
第十章
1.若有以下定义和语句,且0≤i≤10,则对数组元素的错误引用是(C)。
A、*(a+i)B、a[p-a]C、p+iD、p[i]
2. 若有以下定义和语句,且0≤i≤10,则对数组元素的正确引用是(D)。
A、&(a+1)B、a++C、&pD、&p[i]
3.以下程序的输出结果是(A)。
char*alpha[6]=
{“ABCD”,”EFGH”,”IJKL”,”MNOP”,”QRST”,”UVWXYZ”};
char**p;
main()
{intk;
p=alpha;
for(k=0;k<4;k++)printf(“%c”,*(p[k]));
printf(“\n”);
}
A、AEIMB、BFJNC、ABCDD、DHLP
4.下面程序的输出结果是(D)。
#include
main()
{inta[]={1,2,3,4,5,6},*p;
p=a;*(p+3)+=2;
printf(“%d,%d\n”,*p,*(p+3));
}
A、0,5B、1,5C、0,6D、1,6
D5.若由以下说明和语句,那么对C数组元素的正确引用是()。
intc[4][5],(*cp)[5];cp=c;
A、cp+1B、(cp+3)C、*(cp+1)+3D、*(*cp+2)
第十一章
1. 共享体变数中起作用的成员是(C)。
A、第一次存放的成员;B、中间存放的成员;
C、最后一次存放的成员;D、所有的成员。
2. 若有以下程序段,则值为101的表达式是(C)。
structwc
{inta;
int*b;
}*p;
intx0[]={11,12},x1[]={31,32};
structwcx[2]={100,x0,300,x1};
p=x;
A、*p->bB、p->aC、++p->aD、(p++)->a
D3.如果在C程序中有main(floatargc,char*argv[]),那么类型定义错误的参数是()。
A、argvB、argv[]C、argc,argv[]D、argc
B4.若程序中由下面的说明和定义:
structstt
{intx;charb;}
structstta1,a2;
则会发生的情况是()。
A、程序将顺利编译、连接、执行B、编译出错
C、能顺利通过编译、连接,但不能执行D、能顺利通过编译,但连接出错
C5.下面程序的输出是()。
#include
voidmain()
{unsignedinta=32,b=66;
printf(“%c\n”,a|b);
}
A、66B、98C、bD、B
第十二章
1.下面程序的输出是(D)。
#include
main()
{unsignedinta=3,b=10;
printf("%d\n",a<<2|b>>1);
}
A、1B、5C、12D、13
3. 若int型是2个字节,下面程序运行后,输入331,则输出结果为(C)。
#include
voidmain()
{
unsigneda,b,c,d;
printf("enter%%oa:
");
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o,%d\n",d,d);
}
A、331,217B、13,15C、15,13D、217,331
4.若int型是2个字节,下面程序段运行后,若输入:
a=,n=3,则输出的值为(A)。
main()
{
unsigneda,b,c,d;
intn;
scanf("a=%o,n=%d",&a,&n);
b=a<<(16-n);
c=a>>n;
d=c|b;
printf("%o\n",d);
}
A、75765B、35765C、13765D、30000
D5. 表达式11&10的结果用二进制表示为()。
A、11B、3C、1D、10
B6.表达式9|5的结果十进制表示为()。
A、12B、13C、14D、15
第十三章
1.C语言中,文件由(D)。
A、记录组成B、由数据行组成
C、由数据块组成D、由字符(字节)序列组成
2.C语言中的文件类型只有(B)。
A、索引文件和文本文件B、ASCII文件和二进制文件两种
C、文本文件一种D、二进制文件一种
3.C语言中档的存取方式(C)。
A、只能顺序存取B、只能随机存取
C、可以顺序存取,也可以随机存取D、只能从檔开头进行存取
二、程序填空题
第三章
1.要使下面程序的输出形式为:
12+10=22,-24+10=-14,请填空。
#include
voidmain()
{
inta,b,c,d;
unsignedu;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf("【1】+【2】=%d,【3】+【4】=%d\n",a,u,c,【5】);
}
选择答案:
【1】%d【2】%d【3】%d【4】%d【5】b,u,d
第四章
2. 下面程序不借助任务中间变量把a,b的值进行交换。
请填空。
#include
main()
{inta,b;
printf(“Inputa,b:
”);
scanf(“%d,%d”,【1】&a,&b);
a+=【2】b;b=a-【3】b;a-=【4】b;