B.if(a>3)x=3;elseif(a<2)x=2;elsex=1;
C.if(a<3)x=1;if(a<2)x=2;if(a==1)x=3;
D.if(a
9.执行以下程序时,若从键盘输入一个数字字符“5”,则会输出结果()。
#include"stdio.h"
voidmain()
{charch;
printf("\n==========TIME==========\n");
printf("\n1.Findsquareofanumber");
printf("\n2.Findcubeofanumber");
printf("\n3.Findsquarerootofanumber");
printf("\n\nEnteryourchoice:
");
ch=getchar();
switch(ch)
{case'1':
printf("\nGoodmorning!
";break;
case'2':
printf("\nGoodafternoon!
";break;
case'3':
printf("\nGoodnight!
";break;
default:
printf("\nSelectionwrong!
\n");
}
}
A.Goodmorning!
B.Goodnight!
C.Goodafternoon!
D.Selectionwrong!
10.执行以下程序时,若从键盘输入一个实数15,则会输出结果()。
#include"stdio.h"
voidmain()
{floatx;
inty=0;
scanf("%f",&x);
if(x!
=0)
if(x>0)y=1;
elsey=-1;
printf("\n%d\n",,y);
}
A.15B.0C.-1D.1
4.8自测练习
1.以下不构成无限循环的语句或语句组是()。
A.n=0;do{++n;}while(n<=0);B.n=0;while
(1){n++;}
C.n=10;while(n);{n--;}D.for(n=0,i=1;;i++)n+=i;
2.以下描述中正确的是()。
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,是先执行一次循环,再进行判断
D.do-while循环中,根据情况可以省略while
3.若变量已正确定义,有以下程序段
i=0;
doprintf("%d,",i);while(i++);
printf("%d\n",i);
其输出结果是()。
A.0,0B.0,1C.1,1D.程序进入无限循环
4.已知
intt=0;
while(t=1)
{...}
则以下叙述正确的是()。
A.循环控制表达式的值为0B.循环控制表达式的值为1
C.循环控制表达式不合法D.以上说法都不对
5.设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf("%d",s);
则()。
A.运行程序段后输出0B.运行程序段后输出1
C.程序段中的控制表达式是非法的D.程序段执行无限次
6.有以下程序
#include"stdio.h"
voidmain()
{inti,s=1;
for(i=1;i<50;i++)
if(!
(i%5)&&!
(i%3))s+=i;
printf("%d\n",s);}
程序的输出结果是()。
A.409B.277C.1D.91
7.以下程序的输出结果是()。
#include"stdio.h"
voidmain()
{inti,a=0,b=0;
for(i=1;i<10;i++)
{if(i%2==0)
{a++;
continue;}
b++;}
printf("a=%d,b=%d",a,b);}
A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5
8.有以下程序
#include
voidmain()
{inty=9;
for(;y>0;y--)
if(y%3==0)printf("%d",--y);
}
程序的运行结果是()。
A.741B.963C.852D.875421
9.有以下程序
#include
voidmain()
{intk=5,n=0;
do
{switch(k)
{case1:
case3:
n+=1;k--;break;
default:
n=0;k--;
case2:
case4:
n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
程序运行后的输出结果是()。
A.235B.0235C.02356D.2356
10.有以下程序
#include
voidmain()
{intx=0,y=0,i;
for(i=1;;++i)
{if(i%2==0){x++;continue;}
if(i%5==0){y++;break;}}
printf("%d,%d",x,y);}
程序的输出结果是()。
A.2,1B.2,2C.2,5D.5,2
5.5自测练习
1.若有定义intnum[10];则对数组元素的正确引用是()。
A.num[10]B.num(5)C.num[2.5]D.num[2×3]
2.下面关于数组的叙述,正确的是()。
A.数组元素的数据类型都相同
B.数组不经过定义即可使用
C.同一数组中会出现不同类型的数组元素
D.数组名等同于第一个元素
3.以下定义合法的是()。
A.inta[]="string";B.inta[5]={0,1,2,3,4,5};
C.chars[]="string";D.chara()={0,1,2,3,4,5};
4.以下定义正确的是()。
A.intnum[];B.#defineN100
intnum[N];
C.intnum[0..100];D.intN=100;
intnum[N];
5.以下不能正确定义二维数组的是()。
A.inta[2][2]={{1},{2}};B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},2,3};D.inta[2][]={{1,2},{3,4}};
6.假设按如下方式调用scanf()函数:
scanf("%d%s%d",&i,s,&j);
若用户输入12abc3456def78,那么调用后s的是()。
A.abcB.abc34
C.abc3456defD.一个空格
7.以下程序的执行结果是()。
#include"stdio.h"
voidmain()
{inta[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++)
s+=a[i][1];
printf("%d\n",s);
}
A.11B.13C.19D.20
8.以下程序的执行结果是()。
#include"stdio.h"
#include"string.h"
voidmain()
{charstr[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",&str[k][k]);
}
A.ABCDB.ABCDC.EFGD.FGH
FGHEFGJKKL
KLIJO
9.执行下列语句后,字符串str的值是()。
strcpy(str,"Howareyou");
strcpy(&str[4],"isyourdayto");
strcat(str,"day");
A."Howareyou"B."Howisyourdayto"
C."Howisyourdaytoday"D."Howareyoutoday"
10.执行下列程序的结果是()。
#include"stdio.h"
voidmain()
{chars[]="ABCCDA",c;
intk;
for(k=1;(c=s[k])!
='\0';k++)
{switch(c)
{case'A':
putchar('%');continue;
case'B':
++k;break;
default:
putchar('*');
case'C':
putchar('&');continue;
}
putchar('#');
}
}
A.#&*&%B.%&*C.%&&*%D.#
6.9自测练习
1.以下叙述中错误的是()。
A.C程序必须由一个或一个以上的函数组成
B.函数调用可以作为一个独立的语句存在
C.调用函数前,必须进行函数原型说明
D.函数形参的类型可以与返回值类型不一致
2.以下正确的函数定义形式是()。
A.floatfun(intx;inty)B.floatfun(intx,y)
C.floatfun(intx,inty)D.floatfun(intx,inty;)
3.有以下程序:
#include"stdio.h"
fun(floatx,floaty)
{return(x*y)/3.0;}
voidmain()
{floatk;
k=fun(5.2,4.0);
printf("%.2f\n",k);
}
程序运行后的输出结果为()。
A.6.93B.6.00C.6.67D.程序出错,无结果
4.有以下程序:
#include"stdio.h"
voidfun(charc)
{if(c>’b’)
fun(c–2);
printf("%c",c);
}
voidmain()
{fun('h');}
程序运行后的输出结果是()。
A.bdfB.bdfhC.hfdbD.hfd
5.有以下程序
#include“stdio.h”
#defineS(x)(x)*x*3
voidmain()
{intk=6,j=2;
printf(“%d\n”,S(k-j));
}
程序运行后的输出结果是()。
A.18B.11C.48D.宏的参数不匹配,出错
6.以下程序的输出结果是()。
#include“stdio.h”
intx,y;
voidfun()
{x=20;y=30;}
voidmain()
{intx=7,y=9;
fun();
printf(“%d%d\n”,x,y);
}
A.2030B.3020C.97D.79
7.以下只有在使用时才为该类型变量分配内存的存储类说明是()。
A.auto和staticB.auto和register
C.register和staticD.extern和register
8.在一个源文件中定义的全局变量,其默认的作用域为()。
A.本文件的全部范围B.本程序的全部范围
C.本函数的全部范围D.从定义位置开始至本文件结束
9.设有如下函数定义
#include"stdio.h"
intfun(intk)
{if(k<1)return0;
elseif(k==1)return1;
elsereturnfun(k-1)+1;
}
voidmain()
{
printf("%d",fun(3));
}
若执行调用语句:
n=fun(3);,则函数fun总共被调用的次数是()。
A.2B.3C.4D.5
10.下面程序的运行结果为()。
#include“stdio.h”
intf(intk)
{staticinta=1;
k+=a++;
returnk;
}
voidmain()
{inta=2;
printf("%d\n",f(a)+f(a));
}
A.6B.7C.8D.9
7.5自测练习
1.当定义一个共用体变量时,系统为它分配的内存空间是()。
A.共用体中第一个成员所占用的空间
B.共用体中所有成员所占用空间之和
C.共用体中空间占用最大者
D.共用体中任意一个成员所占用的空间
2.有如下定义:
structnumber
{
inta;
charb;
}num;
则sizeof(num)的值是()。
A.5B.8C.9D.10
3.共用体变量在程序运行过程中()。
A.只有一个成员占用内存空间B.所有成员都占用内存空间
C.没有成员占用内存空间D.部分成员占用内存空间
4.typedef的作用是()。
A.用来定义一个新的数据类型
B.可以为已有类型取一个新的名字
C.可以用来定义一个变量
D.能为用户自定义类型取新的名字,但不能为原始数据类型取新的名字
5.有如下定义的结构体及变量,则为变量中各个成员赋值,正确的形式是()。
structTime
{
inthour;
intminute;
intsecond;
}time;
A.Time.hour=3;Time.minute=24;Time.second=56;
B.hour=3;minute=24;second=56;
C.time.hour=3;time.minute