那么 要么需要知道这组数据的个数
要么约定一个结束的标记
这样程序才知道什么时候输入完了。
前一个,可以约定先输入个数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 如果循环可能为死循环,那么就会永远无法跳出循环,如果在运行后长期无法执行到断点,就需要检查是否为这种情况了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)