第5章 循环结构Word文件下载.docx
- 文档编号:19652088
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:23
- 大小:26.47KB
第5章 循环结构Word文件下载.docx
《第5章 循环结构Word文件下载.docx》由会员分享,可在线阅读,更多相关《第5章 循环结构Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
B)循环体A比循环体B的执行次数多一次
C)循环体A比循环体B的执行次数少一次
D)循环体A与循环体B的执行次数不确定
【解析】while循环语句一般形式为:
while(表达式){循环体},执行过程为:
首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。
do…while循环语句一般形式为:
do{循环体}while(表达式),执行过程为:
首先执行循环体,之后判断表达式,成立(非0)则再一次执行循环体,不成立(0)则退出循环。
假设表达式1与表达式2成立次数为n1与n2。
若n1>
n2,则循环体A执行次数为n2+1,B执行次数n2+1;
若n1<
n2,则循环体A执行次数为n1,B执行次数n1,A选项正确。
5、以下叙述正确的是
A)do-while语句构成的循环,当while语句中的表达式值为0时结束循环
B)do-while语句和while-do构成的循环功能相同
C)while-do语句构成的循环,当while语句中的表达式值为非0时结束循环
D)do-while语句构成的循环,必须用break语句退出循环
A选项正确。
在条件相同的情况下,do…while循环比while…do多执行一次函数体,B选项错误。
两种循环都是在表达式为0时结束循环,C选项错误。
do-while循环由表达式真假判断是否退出循环,也可以用break语句退出循环,D选项错误。
6、有以下程序
{
intx=0,y=6;
do
{while(--y)x++;
%d,%d\n"
x,y);
程序的运行结果是
A)5,0B)6,0C)5,-1D)6,-1
C
【解析】程序执行过程为:
执行do…while的循环体:
y=5,判断y为真,x=1;
y=4,x=2;
y=3,x=3;
y=2,x=4;
y=1,x=5;
y=0,判断y为假,退出循环体。
判断do…while条件y=0为假,y=-1,退出循环。
输出x,y为5,-1,C选项正确。
7、有如下程序
#include<
main()
char*p,old_str[10]="
wind"
;
intpassword;
scanf("
&
password);
p=old_str;
while(*p)
%c"
*p+password);
p++;
程序运行时,从键盘输入2<
回车>
,输出结果是
A)ykpfB)windC)xjoeD)2222
定义字符数组str并且初始化为:
"
,定义password并通过scanf函数从键盘为其赋值2。
定义指针p并使其指向字符串。
通过while循环,将字符数组中每一个字符的ASCII码加2,并且按字符格式输出每一个字符。
程序运行后输出结果是:
ykpf,A选项正确。
8、有如下程序
charch='
A'
while(ch<
'
D'
)
ch-'
ch++;
程序运行后的输出结果是
A)ABCB)012C)abcD)123
【解析】字符之间做加减法,是用其ASCII码进行加减,但是不能超过范围0~255,否则不是合法的字符。
while循环语句一般形式为:
while(表达式){循环体},执行过程为,首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。
程序执行过程为:
定义字符变量ch='
,判断'
<
'
成立,输出0,ch='
B'
;
判断'
成立,输出1,ch='
C'
成立,输出2,ch='
不成立,退出循环。
程序运行后的输出结果是012,B选项正确。
9、有如下程序
M'
while(ch!
='
K'
ch--;
putchar(ch);
A)MNB)LKC)OPD)MM
,判断ch!
成立,ch='
L'
,输出L;
判断ch!
,输出K;
程序运行后的输出结果是LK,B选项正确。
10、有以下函数:
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s);
该函数的功能是( )
A)计算s所指字符串的长度
B)比较两个字符串的大小
C)计算s所指字符串占用内存字节的个数
D)将s所指字符串复制到字符串t中
【解析】首先char*s接受一个字符型数组的首地址并将这个首地址赋给另一个字符型指针char*t,while(*t++)不断循环直到*t为'
\0'
,再将t-1,这时字符指针t指向字符串的最后一个字符,又因为s指向字符数组的首地址即字符串的首地址所以return(t-s)便是返回字符数组中字符串的长度。
11、有以下程序
{inta=7;
while(a--);
printf("
%d\n"
a);
A)0B)-1C)1D)7
【解析】a--的含义是先用后减1,所以当a的值为0时,跳出循环,但是仍要执行a--,a的值变为-1。
12、有以下函数
intaaa(char*s)
{char*t=s;
while(*t++);
t--;
return(t-s);
以下关于aaa函数功能叙述正确的是
A)将串s复制到串t
B)比较两个串的大小
C)求字符串s的长度
D)求字符串s所占字节数
【解析】本题重点考察的知识点while循环语句的应用。
aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。
当t指向结束标识处时,由于后缀++运算符的原因,它还会被再递增1,所以接下来的t--;
语句让它回到结束标识处。
最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。
因此C选项正确。
13、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
A)(E>
0||E<
0)
B)(E==0)
C)(!
E==0)
D)(E!
=0)
【解析】while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B选项中表达式的含义正好相反,选择B选项。
14、有以下程序
intfun(chars[])
{intn=0;
while(*s<
9'
&
*s>
='
0'
){n=10*n+*s-'
;
s++;
return(n);
{chars[10]={'
6'
'
1'
*'
4'
};
fun(s));
A)5B)9C)61D)61490
【解析】在fun函数中,while循环的功能是:
逐个取字符数组s的字符判断其是否是数字。
若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。
当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。
15、若有以下程序
{inta=-2,b=0;
while(a++)++b;
a,b);
则程序的输出结果是
A)1,2B)0,2C)1,3D)2,3
【解析】第一次while判断条件中a++,先用后加,为-2不为0条件为真,执行a的自加与++b操作,a的值变为-1,b的值变为1。第二次while判断后,a的值变为0,b的值变为2。第三次while判断条件为假,但是仍要执行自加操作,即值为1,跳出循环。打印1和2。
16、由以下while构成的循环,循环体执行的次数是
intk=0;
while(k=1)k++;
A)有语法错,不能执行
B)一次也不执行
C)执行一次
D)无限次
D
【解析】本题考察while语句,while语句的语义是:
计算表达式的值,当值为真(非0)时,执行循环体语句。
k=1为赋值语句,即k的值等于1。
while(k=1)=while
(1),是死循环,执行无限次。
因此A选项正确。
17、以下叙述中正确的是
A)只要适当地修改代码,就可以将do-while与while相互转换
B)对于"
for(表达式1;
表达式2;
表达式3)循环体"
首先要计算表达式2的值,以便决定是否开始循环
C)对于"
,只在个别情况下才能转换成while语句
D)如果根据算法需要使用无限循环(即通常所称的"
死循环"
),则只能使用while语句
【解析】B选项中,for语句中需要先求解先求解表达式1;
C选项中,for语句使用最为灵活,它完全可以取代while语句;
D选项中,对于死循环,也可以使用for语句。
18、对于while(!
E)s;
,若要执行循环体s,则E的取值应为:
A)E等于1B)E不等于0C)E不等于1D)E等于0
【解析】while语句的一般形式为:
while(表达式)语句;
其中表达式是循环条件,语句为循环体。
while语句的语义是:
该题中如要执行语句s,则!
E应为真,因此E应等于0,D选项正确。
19、有以下程序
intfun(char*s)
{char*p=s;
while(*p!
=0)p++;
return(p-s);
{printf("
fun("
goodbey!
));
程序的输出结果是
A)0B)6C)7D)8
解析】本题主要考查了函数定义及调用,以及while循环语句,执行fun函数后,首先是找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的长度,所以本题答案为8.
20、有以下程序
{inta=-2,b=0;
while(a++&
++b);
a,b);
程序运行后输出结果是
A)0,2B)0,3C)1,3D)1,2
【解析】本题重点考察while语句,变量a和b分别赋初值为-2和1,while语句的语义是:
a++即a参与运算后,a的值再自增1。
++b即b自增1后再参与其它运算。
当表达式的值为0时,退出循环,最后输出a和b的值为1和2。
因此D选项正确。
21、有以下程序
main()
{
char*s="
12134"
intk=0,a=0;
while(s[k+1])
{
k++;
if(k%2==0)
a=a+(s[k]-'
+1);
continue;
);
k=%da=%d\n"
k,a);
A)k=5a=15B)k=4a=12C)k=6a=11D)k=3a=14
【解析】当k=0时,执行while一次,得到k=1,a为2;
当k=1时,执行while一次,得到k=2,a为4;
当k=2时,执行while一次,得到k=3,a为7;
当k=3时,执行while一次,得到k=4,a为12;
所以答案为B选项。
22、以下不构成无限循环的语句或语句组是( )。
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;
【解析】选项A)中do后面的语句只执行了一次便结束了循环;
B)选项中条件while
(1)永远成立,所以是死循环;
C)选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;
D)选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。
23、下列函数的功能是
voidfun(char*a,char*b)
while((*b=*a)!
)
{a++;
b++;
}
A)将a所指字符串赋给b所指空间
B)使指针b指向a所指字符串
C)将a所指字符串和b所指字符串进行比较
D)检查a和b所指字符串中是否有'
【解析】While循环条件为:
(*b=*a)!
,执行时先把指针a所指向的字符赋给指针b所在内存单元,如果该字符不是结束标识"
\0"
,执行循环体a++;
b++;
,指针a、b分别指向下一个字符单元。
再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在内存单元,直到遇到结束标识为止。
24、要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,以下正确的程序段是
A)while(ch=getchar()='
N'
)printf("
%c"
ch);
B)while((ch=getchar())!
C)while(ch=getchar()=='
D)while((ch=getchar())=='
【解析】在C语言中等于号用"
=="
表示,一个"
="
表示赋值,所以A错误。C、D选项的含义都是如果输入的字符为"
N"
则打印输出,所以正好和题意相反。
25、有以下程序
voidfun(char*t,char*s)
{while(*t!
=0)t++;
while((*t++=*s++)!
=0);
{charss[10]="
acc"
aa[10]="
bbxxyy"
fun(ss,aa);
%s,%s\n"
ss,aa);
A)acc,bbxxyy
B)accbbxxyy,bbxxyy
C)accxxyy,bbxxyy
D)accxyy,bbxxyy
【解析】本题重点考察while循环语句的简单应用。
函数fun()中,前一个while循环的作用是:
如果形参指针t所指内容不为0,则让t增1,直到它指向0。
后一个while循环的作用是:
将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。
由此可见,函数fun()的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数中的strcat()。
主函数中使用fun()将数组aa中的字符串连接到了数组ss中原有字符串之后,所以执行完后,ss中的字符串为"
accbbxxyy"
。
程序最后输出的结果是:
accbbxxyy,bbxxyy。
因此B选项正确。
26、有以下程序
string.h>
voidfun(char*w,intm)
{chars,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1<
p2)
s=*p1;
*p1=*p2;
*p2=s;
p1++;
p2--;
{chara[]="
123456"
fun(a,strlen(a));
puts(a);
A)123456B)116611C)161616D)654321
【解析】主函数中调用fun(a,6)后,指针p1指向字符串中的"
1"
、p2指向字符串中的"
6"
While循环中,只要p1<
p2,则把p1、p2所指向的字符互换,同时p1前移,p2后移。
最终字符串逆序存放。
27、有以下程序
intfun(chars[])
char*p=s;
while(*p!
=0)p++;
fun("
0ABCDEF"
));
A)1B)6C)7D)0
【解析】本题考查字符串作为函数参数以及while语句,本题中传入字符串OABCDEF,然后执行fun后,就得到了该字符串中字符的个数,不包括结尾符,该字符串有7个字符,所以答案为C。
28、有以下程序
charfun(char*c)
if(*c<
Z'
&
*c>
)
*c-='
-'
a'
return*c;
chars[81],*p=s;
gets(s);
while(*p)
*p=fun(p);
putchar(*p);
printf("
若运行时从键盘上输入OPENTHEDOOR<
,程序的输出结果是
A)OPENTHEDOOR
B)oPENtHEdOOR
C)openthedoor
D)OpenTheDoor
【解析】字符串输入函数gets的功能是从标准输入设备键盘上输入一个字符串。
首先使指针变量p指向字符串的首字母,while循环语句中对字符串的每个字符进行fun函数操作。
fun函数的功能是,将字符串中的大写字母变小写字母。
将处理结果返回主函数,主函数通过putchar()字符输出函数进行输出。
29、有以下程序
{inta=-1,b=-1;
while(++a)
++b;
a,b);
A)0,-1B)0,0C)-1,-1D)结果不确定
【解析】while循环语句执行过程为:
计算括号中表达式,值非0则执行循环体中语句,值为0则结束循环。
本题执行过程为:
计算++a值为0,结束循环,不执行++b,则输出a=0,b=-1。
30、有以下程序
{inta=1,b=1;
while(a--)
b--;
%d,%d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 循环结构 循环 结构