else flag=1;}为什么不用也可以?还有flag在这里是什么意思?谢谢
作者&投稿:斐须 (若有异议请与网页底部的电邮联系)
因为你那个fun()是用来检测有没有输入回文。那在main里面是通过fun返回的值来判断有没有的,fun默认情况下,是有回文,会进入那个if的语句,(不会进入else),所以最后return回来的就是flag =1, 也就是1,也就是说是有回文的。但是如果没有回文的话,他就会进入那个else的语句,那flag就会被设置成0,那么在main通过fun返回了0就知道,他是没有回文的。
1.flag=1;在这里是一个标志,代表输入的数是否能在数组中查找到,如果找到了,结果赋值为1,否则结果为0;
2.if(flag==1) //判断输出条件,如果查找到,执行输出,否则输出不存在Not exist
printf("%4d is found,it's at %4d.
",x,f_at);
else
printf("Not exist!
");
3.%4d 是代表输出的数字占位4个,右对齐,假设是52,则结果为:空格空格52
{if(n%i==0)
flag=0;
else
flag=1;}
这里flag的作用类似于标记吧,当n%i==0令flag=0退出循环,当n%i不等于0时,将i+1继续循环,要知道判断一个数是否为质数,需要和小于它一半的数求余,所以此程序可略作改动,改为for(i=2;i<n/2 &&flag==1;i++)
于往阿端: for(i=2;i<n &&flag==1;i++) {if(n%i==0) flag=0; else flag=1;} 这里flag的作用类似于标记吧,当n%i==0令flag=0退出循环,当n%i不等于0时,将i+1继续循环,要知道判断一个数是否为质数,需要和小于它一半的数求余,所以此程序可略作改动,改为for(i=2;i<n/2 &&flag==1;i++)
富平县17070495510: else flag=1去掉也可以,为什么啊 - ?
于往阿端: 当只要有一次n%i==0,就可以判断n不是质数,就可以用break跳出循环,而当n%i==0一次也没发生时,因为flag初始值为1,就无需再次使flag=1,然后就可由flag判断是否是质数.
富平县17070495510: C语言试探算法 - ?
于往阿端: if(flag==0&&n!=6)flag=1; 这句不对,经过这句,不管flag是什么值,都变成了1,;找到答案后,要break退出循环,若想多找几组数,要设定循环上限,负责会无限循环;再就是不要将2个循环的flag混为一谈,最好不要在for后面使用flag,一开...
富平县17070495510: c语言里定义的int flag=1.然后if(...)flag=1;else flage=0,不理解int flag为什么=1,感觉没必要· - ?
于往阿端: 你的理解没错,在这里初始化的确是多余的,但是这么做有这么做的道理.在实际项目里,一般都要求定义变量的时候要初始化.强制初始化所有变量的好处是可以保证不会有未初始化的变量被使用.虽然int flag=1在你的例子里没有必要,但是坚持这么做对养成良好的编程习惯有好处.
富平县17070495510: 为什么要flag=1 - ?
于往阿端: 因为你那个fun()是用来检测有没有输入回文.那在main里面是通过fun返回的值来判断有没有的,fun默认情况下,是有回文,会进入那个if的语句,(不会进入else),所以最后return回来的就是flag =1, 也就是1,也就是说是有回文的.但是如果没有回文的话,他就会进入那个else的语句,那flag就会被设置成0,那么在main通过fun返回了0就知道,他是没有回文的.
富平县17070495510: c语言 上三角矩阵 - ?
于往阿端: 一 原因是这样的 :int flag; 定义了一个整形变量falg 但是没有给他赋初值,这样系统给他自动一个随机值你可以用下面语句看看 int a[6][6],flag,i,j,n,sum=0;printf("%d\n",flag);我运行的时候 flag是-1500456468而在c中 只要不为0 都看作真 所以 -1500456468 是真也就是if(flag) 恒成立二 解决办法 :预先赋初值int falg=0;或 if(sum==0)flag=1;else flag=0;
富平县17070495510: 这里的if(flag==1) 是进入死循环了吗? 怎么处理 让他出来的 - ?
于往阿端: 这个循环和flag没有关系的,if是判断语句,while才是循环语句,你循环的判断条件是每次输入的值,而不是flag
富平县17070495510: for(flag=1,i=0;flag&&i<m;i++)和里面的 flag=0;是什么意思啊 - ?
于往阿端: 当flag=1,i>0时,flag&&i的值都是1..当flag=0,flag&&i的值都是0,此时for循环中,不管i累加到多少,都不能结束循环,而整个for循环中都没有结束循环的语句,如break出现,只能等i超过em的边界后,if(strcmp(em[i].name,name)==0)就会报错...
富平县17070495510: c语言 字符串与字符串比较 - ?
于往阿端: 几个错误:1.循环条件缺少了q[j]!='\0' 2.循环体开始的flag=1;是多余的.有这句的话,每次进入时都把flag变为1,那之前的flag=0不就不起作用了么3.if(flag==0) { i=0; j=j-count+1; } count忘了归0.而且还要加上flag=1;4.最后的if(p[i]=='\0' && flag==0)...
富平县17070495510: 】编写程序:假设str1="chinese",str2="china", - ?
于往阿端: #include <stdio.h> #include <string.h> int main() {char str1[100],str2[100];int len1,len2,flag=1;///flag为一个标记量,字符串相等为1,不相等为0gets(str1);gets(str2);if(strcmp(str1,str2)==0)///比较两个字符的函数strcmp,相同返回0flag=1;else...