程序设计基础复习题.docx
《程序设计基础复习题.docx》由会员分享,可在线阅读,更多相关《程序设计基础复习题.docx(20页珍藏版)》请在冰豆网上搜索。
程序设计基础复习题
一、基础知识
(1)C语言程序总是从main开始,在main中结束
(2)C源程序的后缀名是.c
(3)源程序经过编译后生成的结果称为目标程序,,其后缀名为.obj。
(4)结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构
(5)下列哪项不是C语言的特点()
A)结构化程序设计语言B)高级语言C)面向过程D)面向对象
(6)C语言的函数体由()括起来
A){}B)() C)/**/ D)[]
(7)以下叙述中正确的是()
A)main()函数必须放在其它函数之前(错误,main函数可以在任何地方出现)
B)可以在一个函数中定义另一个函数(错误,函数不能嵌套定义,但可以嵌套调用)
C)构成C程序的基本单位是函数
D)所有被调用的函数一定要在调用之前进行定义(错误,只要在调用之前声明即可,且函数类型为整型(字符型)的函数声明都可以省略)
E)C程序的每行中只能写一条语句(错误,可以写多条语句,每条语句用分号隔开)
F)C语言本身没有输入输出语句
G)在对一个C程序进行编译的过程中,可发现注释中的拼写错误(错误,注释是不参加编译的,注释中的拼写错误无法检查出来)
(8)下列关于C语言用户标识符的叙述中正确的是()
A用户标识符中不可以出现中划线,但可以出现下划线
B用户标识符中可以出现下划线和@符号
C用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头.
D用户标识符中可以出现下划线,但不可以放在用户标识符的开头
(9)判断下列哪些是C语言中的合法的用户自定义标识符(红色标出的为非法标识符)
sumSumM.D.JohndayDate3days#33lotus_1_2_3char(关键字,不能用作变量名)student_namea>b_above$123
2Cmeana+bint(关键字,不能用作变量名)5$float(关键字,不能用作变量名)
(10)下列选项中,不能用作标识符的是()
A)int_2_B)_1234_C)2_inD)t__1_2
(11)以下()是正确变量名
A)f.5B)_f5C)5fD)if
(12)若有定义:
#definePI1,则表达式PI*3*2的值为()
A)3B)6C)18D)不确定
(13)已定义a为字符型变量,则下列语句中正确的是()
A)a='100';B)a="100";C)a=100;D)a="d";
(14)请问下面两个程序段得到的j的值分别是多少?
a)i=3;j=++i;答:
i=4,j=4
b)i=3;j=i++;答:
i=4,j=3
(15)doublea=2.5,b=5.5,则表达式(int)a+b/b的值是(3.000000),表达式(int)(a+b/b)的值是(3)
(16)设intx=3,y=4,z=5,则下列表达式中的值为0的是()
A)‘x’&&’y’B)x||y+z&&y-zC)x<=yD)!
((xz||1)
(17)以下关于运算符优先顺序的描述中正确的是( )。
A、关系运算符<算术运算符<赋值运算符<逻辑与运算符
B、逻辑与运算符<关系运算符<算术运算符<赋值运算符
C、赋值运算符<逻辑与运算符<关系运算符<算术运算符
D、算术运算符<关系运算符<赋值运算符<逻辑与运算符
(18)已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!
y)的值是 1 。
(19)若a=2,b=3,c=-1,d=5,则表达式a+b>c+d&&a>=c+d||c>0||d<0的值为
(20)判断char型变量ch是否为大写字母的正确表达式为(ch>=‘A’)&&(ch<=‘Z’)
(21)请写出判断year是否是闰年的表达式((year%4==0&&year%100!
=0)||year%400==0)
(22)若有定义:
inta=5,b=2,c=1;则表达式a-b(23)scanf("%d:
%d:
%d",&h,&m,&s);若要给h输入12,给m输入30,给s输入10,正确的输入操作为:
12:
30:
10
(24)intnum;使用scanf()函数输入一个整数给变量num,正确的函数调用是()
A、scanf(“%d”,num);B、scanf(“%f”,&num);
C、scanf(“d”,&num);D、scanf(“%d”,&num);
(25)intx,y;scanf(“%d,%d”,&x,&y);若要求x、y的值分别为1和2,正确的数据输入是1,2
(26)C语言中运算对象必须是整型的运算符是()。
A)%B)/C)=D)<=
(27)假设所有变量均为整型,则表达式“a=2,b=5,b++,a+b”的值是()
A.8B.7C.6D.2
(28)有以下程序段
main(){
intm=0,n=0;charc='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
}
若从键盘上输入:
10,10<回车>,则输出结果是:
()
A)10,a,10B)10,,,10C)10,a,0D)0,a,0
(29)下列关于单目运算符++、--的叙述中正确的是()
A它们的运算对象可以是任何变量和常量
B它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D它们的运算对象可以是char型变量、int型变量和float型变量
(30)getchar()函数的功能是从终端输入一个字符,putchar()函数的功能是向终端输出一个字符
(31)表达式9/4的结果是2。
表达式9%4的结果是1。
(32)当a=5,b=4,c=2时,表达式a>b!
=c的值是1
(33)若a=2,b=3,c=-1,d=5,则表达式a+b>c+d&&a>=c+d||c>0||d<0的值为0。
(34)main()
{inti=10,j=1;
printf("%d,%d\n",i--,++j);
}
程序的运行结果是10,2
(35)main()
{inti=8;
printf(“%d,%d,%d\n”,++i,--i,i--);
}
程序的运行结果是7,6,8
二、选择语句
(1)符号函数
┌1x>0
y=┤0x=0
└-1x<0
以下程序段中不能根据x的值正确计算出y的值的是()
A)if(x>0)y=1;elseif(x==0)y=0;elsey=-1;
B)y=0;if(x>0)y=1;elseif(x<0)y=-1;
C)if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;
D)y=0;if(x>=0)if(x>0)y=1;elsey=-1;
(2)能正确描述下列程序逻辑关系的是()
if(a
{if(c==d)
x=1;}
else
x=2;
A)当a
=d时,x=2
B)当a
=d时,x=2
C)当a=b时,x=2
D)当a=b且c!
=d时,x=2
(3)intmain()
{inta,b,s;
scanf(“%d%d”,&a,&b);
s=a;
if(a
s*=s;
printf(“%d\n”,s);
return0;}
若执行以上程序时从键盘上输入1□2,则输出结果是4(□表示空格)。
(4)intmain()
{inti;
for(i=0;i<3;i++)
switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);}
return0;}
上述程序的输出结果011122
(5)main(){
intx=1,y=2,z=0,i=3;
if(xif(x
printf(“z=%d”,z);
}
上述程序的输出结果2
(6)判断char型变量cl是否为小写字母的正确表达式为
(c1>=’a’)&&(c1<=’z’)
(7)下列程序的输出结果是_a=1,b=3,c=1______________________
inta=1,b=2,c=3;
if(a>b)a=b;b=c;c=a;printf(“a=%db=%dc=%d\n”,a,b,c);
(8)下列程序的输出结果是_a=1,b=2,c=3______________________
inta=1,b=2,c=3;
if(a>b){a=b;b=c;c=a;}printf(“a=%db=%dc=%d\n”,a,b,c);
三、循环语句
(1)以下程序中,while循环的循环次数是()
main()
{intnum=0;
while(num<10)
{if(num<1)continue;
if(num==5)break;
num++;}
}
A)1B)10C)6D)死循环,不能确定次数
(2)以下程序中,while循环的循环次数是()
main()
{inti=0;
while(i=1)
{if(i==5)break;
i++;}
}
A)死循环,不能确定次数B)1C)5D)6
(3)以下程序执行后sum的值是()。
main()
{inti,sum;
for(i=1;i<5;i++)
sum+=i;
printf("%d\n",sum);}
A)10B)4C)0D)不确定
(4)下列语句中与语句while(!
exp);中的条件!
exp等价的是()
A)exp==0B)exp!
=0C)exp!
=1D)运行时出错
(5)for(i=1;i=10;i++)printf(“%d\n”,i);请问程序段中for循环执行的次数是(),
A)有语法错,不能执行B)执行1次C)一次也不执行D)无限次
(6)下面有关for循环的正确描述是()
A)for循环体语句中,可以包含多条语句,但要用花括号括起来
B)for循环是先执行循环体语句,后判定表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环只能用于循环次数已经确定的情况
(7)下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环,请根据上述功能完成以下程序。
intn=0,c;
c=getchar();
while(c!
=’\n’)
{if(c>=’0’&&c<=’9)n++;
c=getchar();}
(8)在C语言中while循环和do—while循环的主要区别是do—while的循环至少无条件执行一次,while的循环体不是
(9)main()
{intnum=5;
while(num>=0)
{num--;
printf(“%d”,num);}
return0;}
上述程序的运行结果43210-1
(10)inti=0;charch;
do
{scanf("%c",&ch);
i++;
}while(ch!
=’q’&&i<10);
请问该循环的结束条件是!
(ch!
=’q’&&i<10)即(ch==’q’||i>=10)。
(11)main(){
inti,sum;
i=sum=0;
while(i<=5)
{sum+=i;
i++;}
printf(“sum=%d\n”,sum);
}
上述程序的输出结果是15
四、数组
(1)假设有定义inta[100],则下标最大的数组元素为a[99],下标最小的数组元素为a[0],数组a在内存中所占字节数为100*sizeof(int)。
(2)已知:
charc[]={"chongqing"};将字符数组c中整个字符串一次输出的语句书写格式为puts(c)或printf(“%s”,c)。
(3)定义3行4列的整型二维数组a的语句是__inta[3][4]_______;
(4)若有定义:
inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是_0____,a[2][1]得到的初值是___6______
(5)以下函数的功能是:
通过键盘输入数据,为数组中的所有元素赋值。
请将该函数补充完整。
#defineN10
voidarrin(intx[N])
{inti=0;
while(iscanf("%d",___&x[i++]____);
}
(6)以下能正确定义一维数组的选项是()
A)intnum[];B)intnum[0..100];
C)intN=100;D)#defineN100
intnum[N];intnum[N];
(7)以下不能正确进行字符串赋初值的语句为()。
A:
charstr[4]="boy!
"B:
charstr[]="boy!
"
C:
char*str="boy!
"D:
charstr[5]={'b','o','y',’!
’}
(8)假设charstr[6]={‘a’,‘b’,‘\0’,‘d’,‘e’,‘f’};则语句printf(“%s”,str);的输出结果是()
A.ab\B.abdefC.ab\0D.ab
(9)定义chara[]=“chongqing”;charb[]=“china”;以下程序运行后输出()
strcpy(a,b);printf(“%c”,a[2]);
A.cB.oC.iD.\0
(10)以下程序段运行后屏幕输出为()
chara[]=”Ilove\0china”;
printf(“%d”,strlen(a));
A、1B、6C、11D、13
(11)以下程序段运行后屏幕输出为()
charstr[20];
strcpy(str,"china");
printf("%d",strlen(str));
A)20B)5C)6D)7
(12)若有定义:
inta[5]={1,2,3,4,5};则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为()
A)6B)5C)2D)1
(13)假设int型变量占2个字节的存储单元,若有定义:
intx[5]={0,1};
则数组x在内存中所占字节数为()。
A)5B)2C)10D)4
(14)在定义intb[4][5]后,对b的引用正确的是()
A.b[0,1]B.b[4][0]C.b[2][5]D.b[1][1]
(15)以下语句把字符串“abc”赋初值给字符数组,不正确的语句是()
A.chars[]=“abc”;B.chars[]={’a’,’b’,’c’’\0’};
C.chars[]={“abc”};D.chars[3]=“abc”;
(16)以下对二维数组a的正确说明是()
A.inta[3][];B.floata(3,4);C.doublea[1][4];D.floata(3)(4);
(17)用inta[10]={1,2};对数组进行初始化后,数组元素a[3]的值是()
A)随机值B)FC)0D)1
(18)知inta[10];则对a数组元素引用不正确的是()
A.a[10]B.a[3+5]C.a[10-10]D.a[5]
(19)以下能正确定义数组并正确赋初值的语句是()
A)inta[1][2]={{1},{3}};B)intN=5,a[N][N];
C)inta[3][2]={{1,2},{34}};D)inta[2][]={{1,2},{3,4}};
(20)main()
{inti,pod;
for(i=1;i<10;i++)pod*=i;
printf("%d\n",pod);
return0;}
上述程序的输出结果无法确定
(21)有以下程序
main()
{chars[]="\n123\\";
printf("%d%d\n",strlen(s),sizeof(s));
}
上述程序的输出结果56
(22)设有如下程序段:
inta[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0;
for(i=0;i<3;i++)
for(j=0;j
s=s+a[i][j];
则执行该程序段后,s的值是2
(23)main()
{inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
intj,s=1;
for(j=0;j<=2;j++)
s=s*a[j][j];
printf("%d",s);}
上述程序的运行结果是:
45
5、函数
(1)C语言中的变量按作用域范围可分为局部变量和全局变量。
(2)以下程序的功能是调用函数fun计算:
m=1+2+3+4+…+9+10,并输出结果,请将该程序补充完整。
intfun(intn)
{intm=0,i;
for(i=___1___;i<=n;__i++____)
{m=___m+i____;}
return_m____;}
main()
{printf("m=%d\n",__fun(10)____);}
(3)关于C语言函数的描述中,正确的是()
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义和函数的调用都可以嵌套
C)函数的定义不可以嵌套,但函数的调用可以嵌套
D)函数的定义和函数的调用都不可以嵌套
(4)C语言规定,函数返回值的类型由()。
A.在定义该函数时所指定的函数类型所决定。
B.调用该函数时的主调函数类型所决定。
C.调用该函数时系统临时决定。
D.return语句中的表达式类型所决定。
(5)若程序中定义了以下函数
doublemyadd(doublea,doubleb)
{return(a+b);}
并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是()。
A)doublemyadd(doublex,doubley);
B)doublemyadd(doublea,b);
C)doublemyadd(doublea,doubleb);
D)doublemyadd(doubleb,doublea);
(6)有以下函数定义:
()
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是
A、k=fun(10,12.5);B、fun(intn,doublem)
C、voidfun(n,x);D、fun(10,12.5);
(7)若程序中定义了以下函数
intadd(intx,inty)
{return(x+y);}
并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是()
A、intadd(intb,inta);B、intadd(int,int);
C、intadd(inta,b);D、intadd(intx,inty);
(8)voidfun(inty)
{intx=2;
x=y++;
printf(“%d”,x);}
intmain()
{intx=1,y=3;
fun(y);
x=y++;
printf(“%d”,x);
return0;}
程序的运行结果是33
(9)#include
intf(intx,inty)
{return(x+y);}
main()
{inta=2,b=3,c;
c=f(a,b);
printf(“%d+%d=%d\n”,a,b,c);}
程序的运行结果是2+3=5
(10)main()
{inta,b;
voidp(intx,inty);
a=2;
b=3;
p(a,b);
p(a+b,a);
return0;}
voidp(intx,inty)
{y=x+y;
printf(“%d%d”,x,y);}
程序的运行结果是2557
(11)intmin(intx,inty)
{intz;
z=(xx:
y;
return(z);
}
main()
{inta=1,b=2,c;
c=min(a,b);
printf("min=%d\n",c);
}
程序的运行结果是min=1
(12)有以下程序
voidf(intx,inty)
{intt;
if(x}
main()
{inta=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
程序的运行结果是4,3,5
(13)main()
{voidprint(intw);
print(3);}
voidprint(intw)
{inti;
if(w!
=0)
{print(w-1);
for(i=1;i<=w;i++)
printf("%d",w);
printf("\n");}
}
程序的运行结果是1
22
333
6、指针
(1)指针运算符是*,取地址运算符为&
(2)变量的指针,其含义是指该变量的地址
(3)已知程序:
chara[]="good";char*P;P=a;则