第3章 基本语句.docx
- 文档编号:23372268
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:25
- 大小:26.55KB
第3章 基本语句.docx
《第3章 基本语句.docx》由会员分享,可在线阅读,更多相关《第3章 基本语句.docx(25页珍藏版)》请在冰豆网上搜索。
第3章基本语句
第3章基本语句
1、若变量已正确定义并赋值,以下不能构成C语句的选项是
A)B++;B)A=a+b;C)a=a+bD)A?
a:
b;
参考答案:
C
【解析】C语言规定,C语句必须以分号";"结束。C选项中没有结束符号,所以错误。
2、以下叙述中正确的是
A)复合语句在语法上包含多条语句,其中不能定义局部变量
B)花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的
C)空语句就是指程序中的空行
D)当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改
参考答案:
D
【解析】复合语句可以包含多条语句,在其中可以定义局部变量,所以A错误。花括号对{}不仅用来表示函数的开头和结尾,也可以用于表示复合语句,所以B错误。C语言中的语句必须以分号";"结束,所以空语句表示为";",不是空行,所以C错误。
3、以下叙述正确的是
A)C程序总是以main()作为程序执行的起始行
B)main()函数若不带参数,其后面的一对圆括号可省略
C)函数体内的定义语句和可执行语句允许任意穿插出现
D)C语言中的语句之间必须用分号作为分隔符
参考答案:
A
【解析】main()函数后面的括号告诉编译器这是一个函数,不可以省略,排除B选项;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面,故排除C选项;C语言中的某些语句可以不用分号,例如if语句,故D选项错误;答案为A选项。
4、以下叙述中正确的是
A)在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符
B)只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度
C)scanf函数中的字符串,是提示程序员的,输入数据时不必管它
D)复合语句也被称为语句块,它至少要包含两条语句
参考答案:
A
【解析】在printf和scanf函数中都可以指定数据的宽度,所以B错误。scanf()的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配,所以C错误。复合语句可以由任意多条语句构成,可以使一条也可以没有,所以D错误。
5、以下选项中合法的C语言赋值语句是
A)++i;B)a=b=34C)a=3,b=9D)k=int(a+b);
参考答案:
A
【解析】赋值语句是在赋值表达式末尾加上分号构成的。
B、C选项缺少分号,不是合法语句。
D选项为强制类型转换赋值语句,但是int缺少括号,是非法语句。
++i;相当于i=i+1;,是合法赋值语句,A选项正确。
6、以下选项中正确的定义语句是
A)double,a,b;
B)doublea=b=7;
C)doublea;b;
D)doublea=7,b=7;
参考答案:
D
【解析】A选项中变量类型符double后面不能有逗号。B选项中变量b不能先使用再定义,应该写成选项D中的格式。C选项中变量a后面应该是逗号而不是分号。
7、以下程序段中的变量已定义为int类型
sum=pad=5;pAd=sum++,pAd++,++pAd;
printf("%d\n",pad);
程序段的输出结果是
A)6B)4C)5D)7
参考答案:
C
【解析】自增和自减运算符的两种用法:
前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算:
后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。
逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个表达式的值作为该逗号表达式的值。
逗号运算符的优先级低于赋值运算符。
程序执行过程为:
sum=5,pad=5;pAd=5,sum=6,pAd=6,pAd=7。
输出pad=5,C选项正确。
8、有以下程序
#include
main()
{charc;
c=getchar();
do{
putchar(c++);
}while((c=getchar())!
='#');
}
程序运行时从第一列开始输入:
abcdefg##<回车>,则输出结果是
A)bcdefgh$B)bcdefghC)abcdefg#D)abcdefg
参考答案:
D
【解析】运算符"++"放在变量后面时,先参与其他操作,再对变量+1。
putchar(c++)表示先输出当前c值,再对c值+1,当输入abcdef##时,在while语句中,程序输入"#",循环退出。
因此输出为abcdefg,答案为D选项。
9、有以下程序
#include
charfun(char*c)
{
if(*c<='Z'&&*c>='A')
*c-='A'-'a';
return*c;
}
main()
{
chars[81],*p=s;
gets(s);
while(*p)
{
*p=fun(p);
putchar(*p);
p++;
}
printf("\n");
}
若运行时从键盘上输入OPENTHEDOOR<回车>,程序的输出结果是
A)OPENTHEDOOR
B)oPENtHEdOOR
C)openthedoor
D)OpenTheDoor
参考答案:
C
【解析】字符串输入函数gets的功能是从标准输入设备键盘上输入一个字符串。
首先使指针变量p指向字符串的首字母,while循环语句中对字符串的每个字符进行fun函数操作。
fun函数的功能是,将字符串中的大写字母变小写字母。
将处理结果返回主函数,主函数通过putchar()字符输出函数进行输出。
因此C选项正确。
10、有以下程序
#include
main()
{
charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是
A)1245B)1256C)1278D)1267
参考答案:
A
【解析】Scanf按照格式字符进行输入,所以123与回车的值分别送入了c1、c2、c3、c4变量的存储空间。getchar()函数的功能是从键盘输入的字符串中读入一个字符,所以4送入了变量c5的存储空间,5送入了变量c6的存储空间。所以打印时结果为1245。
11、有以下程序
#include
charf(charx)
{returnx*x+'a';}
main()
{chara,b=0;
for(a=0;a<4;a+=1)
{b=f(a);putchar(b);}
}
则程序的输出结果是
A)abcdB)ABEJC)abejD)ABCD
参考答案:
C
【解析】该题目首先初始化变量a和b,通过for循环语句使a取值为0、1、2、3,f函数的功能是将a*a+'a'的值返回给b,即b为a、b、e、j。
最后通过字符输出函数putchar()将b输出。
因此C选项正确。
12、若有以下程序
#include
charf(charx)
{returnx*x%10+'0';}
main()
{chara;intb=0;
for(a=0;a<5;a+=1)
{b=f(a);putchar(b);}
}
则程序的输出结果是
A)014916B)01234C)01496D)00000
参考答案:
C
【解析】该题目中x*x%10即x和x相乘后,结果再对10求余操作。
主函数中通过for语句使变量a从0到4进行取值;当a=0时,调用函数f后,返回值为0赋给b,并且进行字符输出;当a=1时,返回值为1赋给b,并且进行字符输出;当a=2时,返回值为4赋给b,并且进行字符输出;当a=3时,返回值为9赋给b,并且进行字符输出;当a=4时,返回值为6赋给b,并且进行字符输出。
因此C选项正确。
13、有以下程序
#include
main()
{charc;
do{
c=getchar();
putchar(c);
}while(c!
='#');
printf("\n");
}
执行时如输入:
abcdefg##<回车>,则输出结果是
A)abcdefg#
B)abcdefg
C)abcdefg##
D)##
参考答案:
A
【解析】程序执行过程为:
读入一个字符存入缓存区,判断字符是否为"#",如不是,继续读入字符,直到读入的字符是"#",存入缓存区,退出循环,将缓冲区字符一个个输出,结果为abcdefg#,A选项正确。
14、有以下程序
#include
main()
{
charc;
while((c=getchar())!
='\n')
{
switch(c-'2')
{
case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
}
printf("\n");
}
程序运行后从第一列开始输入以下数据
2473<回车>
程序的输出结果是
A)668977
B)4444
C)6677877
D)68766
参考答案:
A
【解析】本题执行过程为:
输入c='2',c-'2'=0,首先匹配case0,依次输出6,6,后执行break语句,跳出分支结构;输入c='4',c-'2'=2,匹配case2,输出8,执行break语句,跳出分支结构;输入c='7',c-'2'=5,匹配default,输出9,执行break语句,跳出分支结构;输入c='3',c-'2'=1,匹配case1,依次输出7,7,执行break语句,跳出分支结构。
输入回车,结束循环。
A选项正确。
15、有如下程序
#include
voidget_put()
{
charch;
ch=getchar();
if(ch!
='\n')get_put();
putchar(ch);
}
main()
{
get_put();printf("\n");
}
程序运行时,输入1234<回车>,则输出结果是
A)1234B)4321C)4444D)1111
参考答案:
B
【解析】在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用。
本题程序的执行过程为:
在输入1234<回车>的情况下,调用get_put()函数,getchar()读入1,在这次调用中的局部变量ch='1',if条件成立->调用get_put()函数,读入2,局部变量ch='2'->调用get_put()函数,读入3,局部变量ch='3'->调用get_put()函数,读入4,局部变量ch='4'->调用get_put()函数,读入回车,if条件不成立,返回执行每次调用函数中if语句后的输出语句,即依次输出4321。
B选项正确。
16、有如下程序
#include
main()
{
inti,*ptr;
intarray[5]={5,3,1};
for(ptr=array,i=0;i<5;i++,ptr++)
{
if(*ptr==0)
putchar('X');
else
putchar('A'+*ptr);
}
printf("\n");
}
程序运行后的输出结果是
A)FDBXXB)FFFXXC)FDBBBD)ABCDE
参考答案:
A
【解析】在对数组进行初始化时,如果对数组的全部元素赋以初值,定义时可以不指定数组长度,如果被定义数组的长度与初值个数不同,则数组长度不能省略;如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值,则array={5,3,1,0,0}。
程序执行过程为:
执行for循环,将数组首地址赋给指针ptr,依次遍历每一个元素,如果数组元素为0则输出'X',如果不为0则按照字母表输出字符'A'后第array[i]个字符。
程序运行后的输出结果为:
FDBXX,A选项正确。
17、有以下程序
#include
intf(intx);
main()
{inta,b=0;
for(a=0;a<3;a+=1)
{b+=f(a);putchar('A'+b);}
}
intf(intx)
{returnx*x+1;}
程序运行后输出结果是
A)ABEB)BCDC)BDID)BCF
参考答案:
C
【解析】在函数main()中,第一次执行for循环时,b的值等于1,此时输出字母B;第二次执行for循环时,b的值等于3,此时输出字母D;第三次执行for循环时,b的值等于8,此时输出字母I。
因此C选项正确。
18、有如下程序
#include
main()
{
chara='3',b='A';
inti;
for(i=0;i<6;i++)
{
if(i%3)putchar(a+i);
elseputchar(b+i);
}
printf("\n");
}
程序运行后的输出结果是
A)A45D78B)ABC678C)34CD78D)34AB78
参考答案:
A
【解析】putchar函数是向标准输出设备上输出一个字符。
字符在内存中以ASCII码方式存储,可以与整数进行加减运算,但是要保证计算结果在0~255之间。
本题执行过程为:
i=0,i%3=0,if条件不成立执行else函数体,输出字符A;i=1,i%3=1,if条件成立输出字符4;i=2,i%3=2,if条件成立输出字符5;i=3,if条件不成立,输出字符D;i=4和i=5时,分别输出字符7与8;i=6退出for循环。
所以程序运行后输出结果为A45D78,A选项正确。
19、有如下程序
#include
main()
{
inti;
for(i=0;i<5;i++)
putchar('9'-i);printf("\n");
}
程序运行后的输出结果是
A)54321
B)98765
C)'9''8''7''6''5'
D)'43210'
参考答案:
B
【解析】putchar函数是向标准输出设备上输出一个字符。
字符在内存中以ASCII码方式存储,可以与整数进行加减运算,但是要保证计算结果在0~255之间。
本题执行过程为:
i=0,输出字符9,在i<5的情况下,依次输出字符8、7、6、5。
在i=5时,计数for循环。
最后显示在命令窗口结果为98765,B选项正确。
20、有如下程序
#include
main()
{
if('\0'==0)putchar('X');
if('0'==0)putchar('Y');
if('a'>'b')putchar('Z');
printf("\n");
}
程序运行后的输出结果是
A)XB)XYZC)YZD)Y
参考答案:
A
【解析】字符所占内存为一个字节,故其ASCII码值不能超过范围0~255,其中一些特殊字符'\0'的ASCII码为0,字符'0'ASCII码值为48,字符'a'ASCII码值为97,字符'b'ASCII码值为98。
putchar函数是向标准输出设备上输出一个字符。
程序执行过程为:
判断'\0'==0成立,输出X,判断'0'==0不成立,不输出,判断'a'>'b'不成立,不输出。
A选项正确。
21、以下不能输出小写字母a的选项是
A)printf("%c\n","a");
B)printf("%c\n",'A'+32);
C)putchar(97);
D)putchar('a');
参考答案:
A
【解析】字符是按照其ASCII形式存储的,其值不能超过范围0~255,否则不是合法的字符。
printf函数格式控制符%c以字符形式输出数据。
putchar函数将括号中参数以字符形式输出。
A选项"a"为字符串,不是单个字符,输出格式不正确,不能输出a,选择A选项。
字符'a'的ASCII码为97,字符'A'的ASCII码为65。
'A'+32即为'a',故B选项能输出a。
C、D选项putchar函数参数均为字符'a',均可正确输出a。
22、有如下程序
#include
main()
{
chara='0',b='a';
inti;
for(i=0;i<4;i++)
{
if(i%3)putchar(a+i);
elseputchar(b+i);
}
}
程序运行后的输出结果是
A)a12dB)ab3dC)10abD)11ac
参考答案:
A
【解析】if(i%3)表示i对3求余,如果不等于0,则执行putchar(a+i);否则执行putchar(b+i),可见,i=0时i%3=0执行putchar(b+i),此时b='a',以此类推,当i=1时,执行putchar(a+i),输出1;当i=2时,执行putchar(a+i),输出2;当i=3时,执行putchar(b+i)输出d,答案为A选项。
23、有如下程序
#include
main()
{
inti;
for(i=0;i<5;i++)
putchar('Z'-i);
}
程序运行后的输出结果是
A)'X''Y''Z''W''V'
B)VWXYZ
C)ZYXWV
D)'ABCDE'
参考答案:
C
【解析】putchar表示输出单个字符,putchar('Z'-i)表示输出'Z'转换成ASCII码后减去i后再转化成字符型数输出,在for循环中,i=0,1,2,3,4时,执行循环体,因此答案为C选项。
24、有如下程序
#include
intdisp(char*str)
{
while(*str)putchar(*str++);
return*str;
}
main()
{
printf("%d\n",disp("NAME"));
}
程序运行后的输出结果是
A)NAME0B)NAMEEC)NAMED)NAME\0
参考答案:
A
【解析】程序执行过程为:
调用函数disp,将字符串"NAME"首地址传给指针str,在while循环中,依次判断字符串中字符是否为'\0',不是'\0'则输出字符,否则结束循环。
当(*str)='\0'时,结束循环,返回字符'\0'的ASCII码0,并输出。
程序运行后的输出结果是:
NAME0,A选项正确。
25、有如下程序
#include
main()
{
charch='M';
while(ch!
='K')
{
ch--;
putchar(ch);
}
printf("\n");
}
程序运行后的输出结果是
A)MNB)LKC)OPD)MM
参考答案:
B
【解析】字符之间做加减法,是用其ASCII码进行加减,但是不能超过范围0~255,否则不是合法的字符。
while循环语句一般形式为:
while(表达式){循环体},执行过程为,首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。
程序执行过程为:
定义字符变量ch='M',判断ch!
='K'成立,ch='L',输出L;判断ch!
='K'成立,ch='K',输出K;判断ch!
='K'不成立,退出循环。
程序运行后的输出结果是LK,B选项正确。
26、有以下程序:
#include
main()
{ chara,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,
回车也是一个字符)
12
34
则输出结果是( )。
A)12
34
B)12
C)1234
D)12
3
参考答案:
D
【解析】按照从键盘输入的数据可以判断字符1给了变量a,字符2给了变量b,字符
所以打印输出的结果为D)选项。
27、以下叙述中错误的是
A)gets函数用于从终端读入字符串
B)getchar函数用于从磁盘文件读入字符
C)fputs函数用于把字符串输出到文件
D)fwrite函数用于以二进制形式输出数据到文件
参考答案:
B
【解析】本题考查字符处理函数和文件做操函数,属于基础知识,其中B选项getchar是用于从终端读入字符。
28、要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,以下正确的程序段是
A)while(ch=getchar()='N')printf("%c",ch);
B)while((ch=getchar())!
='N')printf("%c",ch);
C)while(ch=getchar()=='N')printf("%c",ch);
D)while((ch=getchar())=='N')printf("%c",ch);
参考答案:
B
【解析】在C语言中等于号用"=="表示,一个"="表示赋值,所以A错误。C、D选项的含义都是如果输入的字符为"N",则打印输出,所以正好和题意相反。
29、以下不能将键盘输入的字符串:
Thisisastring<回车>读入到str中的程序段是
A)charstr[80];scanf("%s",str);
B)charstr[80];inti=0;while((str[i++]=getchar()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 基本语句 基本 语句