C语言 新手求教,输入一组数据,如何跳出循环

C语言 新手求教,输入一组数据,如何跳出循环,第1张

输入一组数据
那么 要么需要知道这组数据的个数
要么约定一个结束的标记
这样程序才知道什么时候输入完了。
前一个,可以约定先输入个数N,再输入N个数据。
后一个,可以约定换行,EOF或者非法数值作为结束标记。

如果是for(初始化i;判断条件;i++)循环和while循环就是初始化i,程序运行一次,同时i+1在赋值给i,判断条件是否符合推出循环的条件,不满足,则在运行此循环,i在加一,一次类推,直到满足推出的条件

break只能跳出一重循环
有时候确实是这样,做完了一件事就可以全部结束了,然后跳出来,但break只能跳出一重如用goto有可能造成程序不稳定,事实上,绝大数人反对在C程序上用goto语句
我一般是这样,设置标记,就是比如说:flag=0;就循环,如果要跳出来了,就令flag=1;这样子就可以达到目的了
flag=1;
while (flag==1&&condition1)
{
while (condition2)
{
if(condition3)
{flag=0;break;}//这两句不反了!
}
}
如果是FOR词句,就改循环的计数

C#中,可以使用以下几种方式退出While循环。
1、break语句。此语句是正常退出while的方法。可以在满足条件时,调用此语句退出循环。
2、return语句。此语句是通过返回函数的方式退出循环。从编码规范上来说,不建议使用。会造成逻辑混乱,不易理解。
3、throw exception语句。此语句通过抛出异常的方式退出while循环。需要在while循环的最外侧添加trycatch语句进行配合使用。

分类: 电脑/网络
问题描述:

#include <stdioh>

#include <stringh>

#define MAXNUM 100

#define MAXLEN 20
main()

{

char s1[MAXNUM][MAXLEN],s2[MAXLEN];

int num=1,i,a;

for (i=0;i<num;(i++,num++))

{printf("请输入第%d姓名:\n",i+1);

gets(s1[i]);

if(s1[i]==32) break;/我想从循环中如果遇到'空格'就跳出,但不知道哪里错了/

}

printf("请输入要查找的姓名:\n");

gets(s2);

for (i=0;i<num;i++)

{ if (!strcmp(s1[i],s2)) {a=1;break;}

else a=0;

}

if (a==1) printf("有这个姓名\n");

else printf("没有有这个姓名\n");

}

解析:

这个程序只有一处错误。一位s1表示一个二维数组,则s1[i]表示数组中的一个地址。因此不可以编译通过。应该改正为s1[i][0]==32;这样可以编译通过。输出正确的结果。

单步调试过程中,如果要跳出本次循环,只能在循环外语句设置一个断点,然后执行运行命令,这样调试工具就会开始运行程序,直到遇到断点后暂停,从而达到跳出循环的效果。
具体如何设置断点,与编译器及调试工具相关,不做列举,可以查阅调试工具的帮助文档。
这种方法需要注意以下两点:
1 如果在循环中,存在指向循环外的goto语句,return语句,以及exit()调用等,这类语句属于循环非正常退出点,调试时需要同时在对应语句位置下断点。
2 如果循环可能为死循环,那么就会永远无法跳出循环,如果在运行后长期无法执行到断点,就需要检查是否为这种情况了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13325921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-15
下一篇 2023-07-15

发表评论

登录后才能评论

评论列表(0条)

保存