C语言编译出现错误,请问错在哪? #include <stdio.h> int main()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编译出现错误,请问错在哪? #include <stdio.h> int main()相关的知识,希望对你有一定的参考价值。
C语言编译出现错误,请问错在哪?
#include <stdio.h>
int main()
int num;
scanf("%d\n",&num);
int i;
for(i=2;i<num;i++)
if(num%i==0);
break;
if(i<num)
printf("NO\n");
else
printf("YES\n");
return 0;
int main()
int num;
scanf("%d\n",&num);//\n属于画蛇添足
int i;
for(i=2;i<num;i++)
if(num%i==0);//分号不需要
break;//<-------挪到这里
if(i<num)
printf("NO\n");
else
printf("YES\n");
//<-------
return 0;//分号 输入法 请用 英文 半角
追问
scanf怎么能少呢?需要输入一个数,然后判断是不是质数。
追答你那只眼睛看见我说的是scanf了 ,我说的的是 \n
追问不好意思,但是改了以后,还是运行错误。
这句话的分号你打成中文的分号了
应该是英文的分号
望采纳追问
换成英文了,还是运行错误。
参考技术B 把break和if(i<num)都去掉追问去掉还是不行。
参考技术C 什么意思?没用过这个软件追问当根据第1组数据判题时:
你的答案是:NO
标准答案是:YES
如果此处显示你的答案与标准答案一致仍判错,那是因为我们只显示了标准答案中的一行,标准输出一般含有多行数据,你的某一行或某几行输出与这组标准输出不符合,请务必仔细检查代码。
计蒜客在线编程
追答你这个break是用来做什么的
追问跳出循环
跳出后,判断余数为0时,i和num的大小。
追答你这个for循环执行一次就跳出来,执行不到判断啊
追问怎么改呀
追答你的目的是判断是不是质数吗
追问是的
追答把return前的花括号放到break后面,把break前的分号去掉
追问成功了,谢谢!非常感谢!
追答不客气
本回答被提问者采纳请问一下下面这个JAVA程序错在哪?谢谢!!
public class Test2
static String[] binarise="0000","0001","0010","0011","0100","0101","0110","0111""1000","1001,"1010","1011","1100","1101","1110","1111";
static final int flag1=1;
static final int flag2=2;
static final int flag3=8;
public static void main(String[] args)
int flags=0;
System.out.println("Clear all flags...flags="+binarise[flags]);
flags=flags|flag3;
System.out.println("Clear all flag3...flags="+binarise[flags]);
flags=flags^flag1;
System.out.println("Clear all flag1...flags="+binarise[flags]);
flags=flags^flag2;
System.out.println("Clear all flag2...flags="+binarise[flags]);
int cf1=~flag1;
flags=flags&cf1;
System.out.println("Clear all flag1...flags="+binarise[flags]);
int f4=flags&flag3;
f4=f4>>>3;
System.out.println("Clear all flag3...flags="+binarise[flags]);
"0111""1000" 这里少打了个逗号,应改为:"0111","1000"
"1001,"1010" 这里打错了逗号的位置和少了个双引号 ,应改为:"1001","1010"
","1111"; 最后多了个,去掉就行。
你没有对final值更改,所以只要改了上面说的程序就对了。 参考技术B 1,数组中第8个和第9个数中间缺少逗号
2,第10个数的逗号写到引号中间去了,而且还缺少引号
3,数组后面为什么有两个花括号
这是我给你运行后的结果,其实你的程序没有半点错误,都是书写错误,所以以后写代码要仔细,一点小错误也不行。出了错,要耐心的看显示的错误信息,一般的错误信息都可以帮助找到错误的位置
Clear all flags...flags=0000
Clear all flag3...flags=1000
Clear all flag1...flags=1001
Clear all flag2...flags=1011
Clear all flag1...flags=1010
Clear all flag3...flags=1010
这是不是你想得到的显示结果?本回答被提问者采纳 参考技术C 楼上俩位啊。
将变量或方法声明为final,可以保证它们在使用中不被改变。
所以说加上final的变量就相当与一个不可改变的常量。
常量参加运算是可以的。
只要是不对其赋值和修改操作因为没有问题。
这段程序的错误原因我估计是flags经过一些列的位运算后,其中的值超出数组界限了吧。 参考技术D 三楼说得有点理!
//-------------------修改调试后-------------------
public class Test2
static final int flag1 = 1;
static final int flag2 = 2;
static final int flag3 = 8;
public static void main(String[] args)
String[] binarise="0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110"+"1111";
int flags = 0;
System.out.println("Clear all flags...flags = " + flags + "=" +binarise[flags]);
flags = flags | flag3;
System.out.println("Clear all flag3...flags = " + flags + "=" + binarise[flags]);
flags = flags ^ flag1;
System.out.println("Clear all flag1...flags = " + flags + "=" + binarise[flags]);
flags = flags ^ flag2;
System.out.println("Clear all flag2...flags = " + flags + "=" + binarise[flags]);
System.out.println(b[0]);
System.out.println(binarise[0]);
int cf1 = ~flag1;
flags = flags&cf1;
System.out.println("Clear all flag1...flags = " + flags + "=" + binarise[flags]);
int f4 = flags&flag3;
f4 = f4 >>> 3;
System.out.println("Clear all flag3...flags = " + flags + "=" + binarise[flags]);
//--------貌似你在定义String[] binarise时用了非英文输入法---------
//------------------有的点方不是漏了就是多了点东西---------------- 第5个回答 2008-11-27 字符串数组的“”去掉一个,还有常量是不能再更改的
以上是关于C语言编译出现错误,请问错在哪? #include <stdio.h> int main()的主要内容,如果未能解决你的问题,请参考以下文章