0
点赞
收藏
分享

微信扫一扫

C程序设计——循环结构程序设计自测题

未定义变量 2022-04-25 阅读 77
c语言c++

   

 

A.continue语句只结束本次循环,而不是终止整个循环的执行。

C.break语句只能用于循环语句和switch语句之中,而不能单独使用。continue只能出现在循环语句中。

D.执行break语句将立即终止最内层循环,而执行continue只结束一次它所在的最内层循环,而不是立即终止循环。


B.不可交叉定义

C.do……while循环至少执行一次

D.循环体内是单条语句不需要花括号


 

for(表达式1;表达式2;表达式3)语句;

表达式2空白,不需要做任何的判断,执行循环体。


 

 除了三种循环语句,还可以用if语句和goto语句结合实现循环

三种循环语句可以相互嵌套


表达式只要不等于0即为真。


 

本题考查getchar函数以及C中混合运算时运算的优先级,while后的表达式关心逻辑值的真假


 

while(k=1)k++;

while后的表达式是赋值表达式k=1每次判断时k的值都被赋值为1,1不等于0为真,所以是死循环。


 

B、do-while后表达式不满足条件,也会退出循环

C、①while后表达式为0的时候结束循环②循环体中遇到break结束循环


 

 B.continue语句只结束本次循环,而不是终止整个循环的执行。

 D.break语句是结束整个循环过程,不在判断执行循环的条件是否成立


B.while和do-while都可以从外部转到循环体内


 

 A.i=i%100+1最大为100,不满足i>100,不能执行break语句,无法跳出进入死循环

C.k=1001,k>1000;k=1002,k>1000;……死循环

D.s自减运算,没有构成死循环。


答案选C,循环体一次也不被执行。


 

自减运算后置,先将n没有减1之前的值输出为3,再将n的值减1变为2,!2为假,循环只执行一次。


 

#include<stdio.h>
int main()
{
char ch;
for(;(ch=getchar())!='\n';)
printf("%c",ch);
return 0;
}

 回车后放入内存缓冲区,代码从内存缓冲区取字符,依次输出,遇到回车停止


int不特别声明,默认是有符号的;unsigned j是无符号整型变量j,int省写;j没有负数的概念 ,A会进行无限循环


#include<stdio.h>
int main()
{
int i;
for(i=1;i<6;i++)
{
if(i%2)printf("*");
else printf("#");
}
return 0;
}

 i%2和(i%2)!=0等价,for循环执行5次,不可能输出6个符号。


#include<stdio.h>
int main()
{
int m=1,n,i;
for(i=0;i<5;i++)
{
int m=1;
m++;
if(i==4)n=m;
}
printf("%d,%d",m,n);
return 0;
}

(超范围了,涉及局部变量和全局变量)for循环内定义了同名的变量m,在复合语句(花括号)内起作用,第四行m在6-9行不起作用,同名遮挡。两个m的存储空间不同,第10行的m指的是初始的第四行的m,始终没有改变。


 

#include<stdio.h>
int main()
{
int i;
for(i='a';i<'f';i++,i++)
printf("%c",i-'a'+'A');
return 0;
}

 表达式2,i自增两次相当于i=i+2


#include<stdio.h>
int main()
{
int f,f1,f2,i;
f1=1;
f2=1;
printf("%2d%2d",f1,f2);
for(i=3;i<=5;i++)
{
f=f1+f2;
printf("%2d",f);
f1=f2;
f2=f;
}
return 0;
}

 斐波那契数列,格式输出,先输出f1,f2,再三次循环


#include<stdio.h>
int main()
{
int n=5;
do
{
switch(n%2)
{
case 0:n--;break;
case 1:n--;continue;
}
n--;
printf("%d,",n);
}
while(n>0);
return 0;
}

 


#include<stdio.h>
int main()
{
int i,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++)
m=m%j;
printf("%d\n",m);
return 0;
}

 i=3,j=3,55%3=1;j=4,不满足


 

 

#include<stdio.h>
int main()
{
int x=10;
while(x--);
printf("x=%d\n",x);
return 0;
}

while(); 循环体为空语句

后置自减,x=0作为while后面判断的条件不再执行循环体,while结束的时刻x再减1变为-1


#include<stdio.h>
int main()
{
int i,j,n=0;
for(i=0;i<2;i++)
{
n++;
for(j=0;j<=3;j++)
{
if(j%2)
continue;
n++;
}
n++;
}
printf("n=%d,",n);
return 0;
}

 j=0,j%2=0,执行n++;当j%2≠0,执行continue,不执行n++


#include<stdio.h>
int main()
{
int x=2;
do
{
printf("%d",!x-2);
}
while(--x);
return 0;
}

 !(逻辑非)单目运算优先级比减法运算符高,x=2逻辑值为真,!x逻辑值为假,提供的值为0

第一次 --x为1,真;第二次,--x为0,假


#include<stdio.h>
int main()
{
int n=12345,d;
while(n!=0)
{
d=n%10;
printf("%d",d);
n=n/10;
}
return 0;
}

 倒序输出


本人初学,如有错误,还望批评指正!

举报

相关推荐

0 条评论