这段C语言程序有什么错?
发布网友
发布时间:2022-04-20 21:32
我来回答
共5个回答
热心网友
时间:2023-09-28 10:28
楼主在使用for语句的时候出错了。for语句内的表达式由三个“;组成,判断if的时候,括号内的表达式在等于的时候用“==”,单个“=”在C语言中表示赋值或者初始化的时候用到。修改后程序如下。
#include <stdio.h>
#include <stdlib.h>
int x = 0;
int main(void)
{
printf("程序已启动,正在计算题目允许的取值......\n");
for(;;x++)
{
if(x % 3 == 2)
printf("此数符合第一条件,正在继续验证。\n");
else
printf("此数不符合第一条件,正在回到原来重新递增。\n");
if(x % 5 == 4)
printf("此数符合第二条件,正在继续验证。\n");
else
printf("此数不符合第二条件,正在回到原来重新递增。\n");
if(x % 11 == 0)
printf("此数符合题意,此数为 %d 。正在继续验证可行的数\n");
else
printf("此数不符合第三条件,正在回到原来重新递增。\n");
}
system("pause");
return 0;
}
热心网友
时间:2023-09-28 10:28
这个程序有以下问题可改进:
1 for 循环终止条件。
2 if 的逻辑判断要用==
3 三个条件判断最好嵌套。前面的条件不满足,后面的就不用再判了。
改过且能运行的程序:
#include <stdio.h>
#include <stdlib.h>
int x = 0;
int main(void){
printf("程序已启动,正在计算题目允许的取值......\n");
for(;x <= 1000;x++)
{
printf("\n%d\n",x);
if(x % 3 == 2){
printf("此数符合第一条件,正在继续验证。\n");
if(x % 5 == 4){
printf("此数符合第二条件,正在继续验证。\n");
if(x % 11 == 0)printf(">>>此数符合题意。正在继续验证可行的数\n");
else printf("此数不符合第三条件,正在回到原来重新递增。\n");
}
else printf("此数不符合第二条件,正在回到原来重新递增。\n");
}
else printf("此数不符合第一条件,正在回到原来重新递增。\n");
}
system("pause");
return 0;
}追问这段程序有bug哦,我运行的时候是从913开始计算的,如果调成x<=100也是从13开始读起哦。
追答for循环的起始和结束可以修改。
用其它方法得到1000以内符合条件的数值有:44 209 374 539 704 869
我用的是LCC-Win32,也是这个结果。
Microsoft Visual C++ 6.0我没有,不知是什么状况。
=====
刚刚找了个VC6.0试了下。找到原因了。
你应该是在DOS黑窗口下运行的吧。
那个窗口保持不了太多的行,前面的溢出去了。
可以在DOS黑窗口或"运行"窗口用这个命令(假定程序文件名为cond3.exe):
cond3 >d:/out.txt
运行结束后打开文件"d:/out.txt",运行结果都在里面了。
热心网友
时间:2023-09-28 10:29
你好,C语言中有逻辑运算,关系运算符等,错误1是在你使用if语句时候,对应的等于号应为“==”,错误二在开始时你已经对x赋初值了,故在for(x >= 0;x++) 时你可以省了初值,但是!你不能省掉分号,应该为for(;x >= 0;x++) 这样就该可以了,我也运行过了,继续努力!
热心网友
时间:2023-09-28 10:29
else
if(i>a[x])
x=(m/2+1+m)/2;时x=4,再加1得5,你的时数组下标越界了,变成a[5];而a[5]你没有初始化。i和a[5]的大小就不知了。
热心网友
时间:2023-09-28 10:30
#include <stdio.h>
#include <stdlib.h>
int x=0;
int main(void)
{
printf("程序已启动,正在计算题目允许的取值......\n");
for(x=0;x<1000;x++) //for( ;; )两个分号
{
if(x%3 ==2)
printf("此数符合第一条件,正在继续验证。\n");
else
printf("此数不符合第一条件,正在回到原来重新递增。\n");
if(x%5 == 4)
printf("此数符合第二条件,正在继续验证。\n");
else
printf("此数不符合第二条件,正在回到原来重新递增。\n");
if(x%11 == 0)
printf("此数符合题意,此数为 %d 。正在继续验证可行的数\n",x); //后面少了x
else
printf("此数不符合第三条件,正在回到原来重新递增。\n");
}
system("pause");
return 0;
}