c语言小程序 关于for循环,if else和break,帮忙改下错谢谢

供稿:hz-xin.com     日期:2025-01-12
c语言写for循环时,要用break,假如break写在if外面,但是写在for循环内,结果程序出现未知错误??

首先要知道:break只要写到循环里面,无论在循环里面的什么位置,都没有问题!
你有没有发现,你第一个代码是对的!
第二个代码是错的!

为什么第二个是错的呢?
因为,你的break写到if外面去了,也就是说,这种情况下,循环永远只执行一遍!因为,只要进循环,无论if的条件如何,break必执行到!无论输入的数是否为素数,都不再进行循环判断!
如果写到if里面,只有if条件成立,才跳出循环!即,只有为素数时,才跳出循环!

第二个代码,每次执行了for之后,都会执行break,自然就跳出了循环,而i的值又没有大于n,下一个if无法进入,所以没有输出。这是程序逻辑上的问题,不是break的问题。break只跳出最近的一层循环

break只跳出最近的一层循环, 你的程序里面只有一层循环
你第一个程序,是判断到数可以被 > 2 且 < n的数整除,就跳出循环,所以是对的
break在if的作用域里面

如果在倒数第三行加入else,当for语句进入时,无论if是否成立,程序都会return,所以for无论怎样都只执行一次。现在你去掉else是对的,for的作用只在if...return
0;上。在循环中任意一次整除都直接return
0;只有循环完次数都没有整除时才return
1;。
而且你的for语句第二个表达式有问题。这样你说明a/2为0时(显然不可能)才退出循环,而且i每次都被赋值为a/2。应该改为for
(i=2;i<=sqrt(a);i++),并且前面#include
。(循环只用将i循环到a^(1/2))

#include<stdio.h>
int main()
{
char a;
int i=6;
while(--i)
{
printf("You have %d chances.Please input a character:",i);
a=getchar();
getchar();
if(a=='A')
{
printf("Congratulations!\n");
break;
}
else{
printf("Please try again.\n");
}
}
if(i==0)
printf("You've tried too many times!\n");

getchar();
return 0;
}

你试下把 getch();放到 scanf("%c",&a);的后面

scanf("%c",&a);//在他后面加上这句!!!就好了
getchar();//

scanf之后加
getchar()接收 回车

循环内部放一个getchar()

C++小程序
此外,程序中的循环结构和条件判断语句,展示了C++语言在处理字符串和数据时的灵活性。通过对字符进行逐一处理,可以实现各种复杂的文本操作。这对于处理大量文本数据的场景尤为有用。总之,这个简单的C++小程序不仅展示了C++语言的基本特性,还为理解更复杂的加密算法提供了基础。通过这个示例,我们可以学习到...

小程序js中的for循环输出[empty*2,{...}]?
area2这样用push方法,area2.push(area0[x])。或者建立一个area2的index area0=[{id:1,quyu:1},{id:1,quyu:2},{id:2,quyu:5},{id:3,quyu:5},{id:4,quyu:5}]area1=2 let area2 = [];for(let x=0;x

C#发牌小程序有重复的问题,帮忙看看啦!
那个for循环有问题,你在设置i=1时,没有跳出循环,导致give的值改变了,修改成:for (; ; ){ if (thecards[give].x == false){ thecards[give].x = true;break;} give = rd.Next(54);}

用C语言编写一个小程序
C语言编写程序可以实现多种功能,例如筛选素数。下面是一个简单的示例程序,用于找出1000以内的所有素数。程序首先定义了变量i和x,其中i用于循环,x作为当前检查的数字。程序通过一个嵌套的for循环结构来判断数字是否为素数。外部循环从2开始,直到1000结束。内部循环则从2开始,直到x-1结束,用于检查x是否...

java for循环:当有两层嵌套for循环的时候是不是外循环执行一次,内循 ...
你这个小程序不错哦;你看一下啊,1、执行外层第一遍,i=1,内层第一遍,j=1,内层第二遍,j=2,但是j>i了,所以执行break跳出到外循环,第二遍也就相当于没有执行,跳出执行第二遍外循环 2、执行外层第二遍,i=2,内层第一遍,j=1,内层第二遍,j=2,内层第三遍,j=3,但是j>i了...

微信小程序 for循环保存照片
                    if (res.statusCode === 200) {           &...

Java小程序,求100以内的合数
\/\/ 循环100以内的数(除去1)for (int n = 2; n <= 100; n++){\/\/ 循环相除2-自身一半的数for (int i = 2; i <= n\/2; i++){\/\/ 如果找到一个数能整除,则为合数if (n % i == 0){System.out.println(n);\/\/ 跳出循环break;}}} ...

编写JAVA小程序,利用循环在小程序界面输出数字1-30,要求每行输出10个...
\/*第二个参数9,就是控制你换行的值,你改成10就是每输出10个字就换行一次*\/ } public void OutPut(int length , int size){ int temp = 1;for(int i = 1 ; i <= length ; i ++ ,temp ++){ System.out.print(i+"\\t");if(temp % size == 0){ System.out.println();} }...

matlab小程序,我觉得到i=2的时候就应该停止了,但是为什...
在for循环中 i=1:1:100创建的向量范围就是1到100,步长为1,你想让它当i=2时停止,应该写为,i=1:2,或者i=1:1:2,都应该可以,因为默认的步长为1

一个C语言的小程序
这是要找质数吧,else部分的逻辑错误,应该是内层循环结束(并留下一个变量做标记)才能判断一个数是不是质数。另外,sqrt拼写错误。