为什么有问题?我都快疯了,C语言这么难!
# include <stdio.h>
# define gaoding printf("**********************************************************\n);
void main ()
{
int i,sum=0,ray=1;
i=1;
loop:if(i<=10000)
{
sum=sum+i;
i++;
goto loop;
}
printf("%d\n",sum);
gaoding
leep:if(1<=32)
{
ray=ray*i;
i++;
goto leep;
}
printf("%d\n");
}
问题点数:40、回复次数:59Top
1 楼lj860603(跑吧,键键)回复于 2006-10-13 11:44:24 得分 10
#define gaoding printf("**********************************************************\n"); //右边少了个双引号
Top
2 楼xiaoke26(带三个表)回复于 2006-10-13 11:45:01 得分 10
if(1<=32)?
if(i<=32)当然先要赋值i=1
Top
3 楼lj860603(跑吧,键键)回复于 2006-10-13 11:45:18 得分 10
printf("%d\n");
=================》
printf("%d\n", ray);
Top
4 楼viornment()回复于 2006-10-13 13:44:38 得分 10
#define gaoding printf("**********************************************************\n")//define 语句后面是没有分号(';')的。这个错误有时候很头疼。上次就因为多了个分号,我同事Debug了1个小时左右才搞定。Top
5 楼wanfustudio(雁南飞:知识之败,慕虚名而不务潜修也)回复于 2006-10-13 13:48:48 得分 0
2个error
一个printf哪里少了个引号
另一个
if(i<32) 你写成1了Top
6 楼Lingzhi_2006()回复于 2006-10-13 14:26:54 得分 0
谢谢各位大哥帮助,现在可以运行了.
# include <stdio.h>
# define gaoding printf("**********************************************************\n")
void main ()
{
int i,sum=0,ray=1;
i=1;
loop:if(i<=10000)
{
sum=sum+i;
i++;
goto loop;
}
printf("%d\n",sum);
gaoding;
i=1;
leep:if(i<=12)
{
ray=ray*i;
i++;
goto leep;
}
printf("%d\n",ray);
}
Top
7 楼Jokar(贪睡鼠)回复于 2006-10-13 14:32:44 得分 0
原来lz稀饭这样用 循环~呵呵Top
8 楼carbonic(燃烧吧!胸毛)回复于 2006-10-13 14:41:09 得分 0
少见,呵呵Top
9 楼husiluanxiang()回复于 2006-10-13 16:11:58 得分 0
LZ可能是在学goto语句。Top
10 楼yiyiemma()回复于 2006-10-13 16:17:51 得分 0
# include <stdio.h>
# define gaoding printf("**********************************************************\n);//要在\n后加"号
void main ()
{
int i,sum=0,ray=1;
i=1;
loop:if(i<=10000)
{
sum=sum+i;
i++;
goto loop;
}
printf("%d\n",sum);
gaoding
leep:if(1<=32)//1<=32很成立,无法结束循环,是i不是1
{
ray=ray*i;
i++;
goto leep;
}
printf("%d\n");
}
Top
11 楼yeknight(浪子一去不回头)回复于 2006-10-13 17:00:56 得分 0
i写成了1Top
12 楼yangxingkuan(开发者)回复于 2006-10-13 17:20:53 得分 0
楼主多努力啊,Top
13 楼xiaTao0520(飞沙)回复于 2006-10-14 04:19:02 得分 0
goto 语句可能会使程序不稳定
还有但也不易读懂 所以 goto 在以后的程序尽量少用!!Top
14 楼analysefirst(+++++++++=剑客++~~)回复于 2006-10-14 07:53:12 得分 0
应该以前学过BASIC吧,C不是能不先赋值就可以用的.Top
15 楼ppass(老毛)回复于 2006-10-14 07:58:39 得分 0
楼主以后一定要用 for/do/while来进行循环
不要使用gotoTop
16 楼xiao7cn(o(∩_∩)o... 哈哈!)回复于 2006-10-14 08:02:32 得分 0
莫非以前是搞汇编的 突然转向C这种“高级语言”有点不知所措了 呵呵Top
17 楼wanglovec(阳光飞舞)回复于 2006-10-14 09:15:25 得分 0
这么一小段程序 用那么多GOTO 牛 人Top
18 楼ilovechao1314(有点晕了)回复于 2006-10-14 10:15:41 得分 0
看完程序我疯了Top
19 楼dead_of_winter(寒冬)回复于 2006-10-14 10:21:59 得分 0
楼主是搞basic的吧 这么喜欢goto 呵呵
多看看提示的错误信息吧 有些错很容易调出来的Top
20 楼fuowen20(耗子)回复于 2006-10-14 10:24:39 得分 0
请问楼主,以下这句是什么意思?
# define gaoding printfTop
21 楼mu_yang(穆扬)回复于 2006-10-14 10:30:45 得分 0
第一个错误在:
# define gaoding printf("**********************************************************\n")
=================================================================
应该写
# define gaoding printf\ ("**********************************************************\n");
缺少分号是许多网友已经指出了的
还缺少 "\" 续行标志
否则编译器怎么知道你的#define到第几行结束呢
Top
22 楼hcy13()回复于 2006-10-14 10:34:26 得分 0
本人看来也许是你定义的变量有问题 i从1加到10000啊 老兄 定义int 好象不够吧
Top
23 楼zhj2006()回复于 2006-10-14 11:09:28 得分 0
刚注册了个号,也来说句话,以后还要大家多照顾哈!
Top
24 楼Lingzhi_2006()回复于 2006-10-14 11:11:47 得分 0
10000要用 long int 来定义!Top
25 楼greyboy2(greyboy)回复于 2006-10-14 14:27:08 得分 0
顶上
直接用 long 吧Top
26 楼liqingle(清乐)回复于 2006-10-14 14:56:58 得分 0
int类型的最大值是65535.
sum应定义为long
做程序的时候"仔细"是一个好习惯..Top
27 楼liqingle(清乐)回复于 2006-10-14 14:57:51 得分 0
建议C语言里不要使用GOTO语句..Top
28 楼sun_horizon()回复于 2006-10-14 15:44:03 得分 0
GOTO??
yun!!Top
29 楼kingzeng520()回复于 2006-10-14 15:46:18 得分 0
c语言里最好不用GOTO,很容易会造成死循环Top
30 楼lovemoo(偶然)回复于 2006-10-14 18:01:56 得分 0
- -.........循环怎么能这样用啊
Top
31 楼tyronedong(雨衣)回复于 2006-10-14 18:39:05 得分 0
少用goto语句,能不用就不用。Top
32 楼dadi0189(冰雨)回复于 2006-10-14 18:52:07 得分 0
楼主为什么要这样循环啊,代码看起来真不爽。Top
33 楼jintianguozhao()回复于 2006-10-14 20:03:11 得分 0
printf("%d\n");没有变量
最好不要用goto作环这种形式不适应大程序Top
34 楼woaihuwu(老鼠)回复于 2006-10-14 20:16:15 得分 0
以后还是用循环好得多啊!!~~~~~~~~~~~~~~~~~~~呵呵(以后不要再犯这种令
人好笑又好气的错误喔!~~~~~~~~~)
Top
35 楼Smidin(冰刃无痕)回复于 2006-10-14 20:29:19 得分 0
shiwangTop
36 楼yu_xiao()回复于 2006-10-14 20:51:21 得分 0
现在代码里不是要尽量少用GOTO语句吗?这位老兄怎么还用啊?
Top
37 楼wanfustudio(雁南飞:知识之败,慕虚名而不务潜修也)回复于 2006-10-14 21:26:20 得分 0
goto可以用
规范是死的,人是活得
问问林鋭,他好像说,goto本身没有错,是用的人的问题
goto在深层嵌套里面能嘎的一下蹦出来
jmp?也行Top
38 楼fanyi2003(小小鸟)回复于 2006-10-14 21:53:36 得分 0
leep:if(1<=32)
{
ray=ray*i;
i++;
goto leep;
}
死循环!!Top
39 楼johnhan2006(边城浪子)回复于 2006-10-14 22:04:25 得分 0
在C语言中,尽量避免使用GOTO语句。
但有些时候,稍微用点GOTO语句也非常的方便
你的程序中假如在leep:if(1<=32)之前赋值i为1时,
那你就应该声明ray为double类型的,因为在这个循环中
算出的结果非常之大。Top
40 楼angel725()回复于 2006-10-14 22:07:37 得分 0
leep:if(1<=32)
{
ray=ray*i;
i++;
goto leep;
}
死循环!!
楼上的,这是死循环吗??
我看不是哦??
刚学一段时间,给讲讲怎么死循环了》》??Top
41 楼limenglin()回复于 2006-10-14 23:57:26 得分 0
请楼上的同学解释一下 为什么要写 “1 <= 32”而不是 “i <= 32”好么!
p : 这样的问题就不要再提了.....Top
42 楼limenglin()回复于 2006-10-14 23:59:09 得分 0
写成 1 <= 32 还不如写成 true ,还能显得专业点......Top
43 楼XMine(影雷)回复于 2006-10-15 01:00:02 得分 0
GOTO应该说在适合的时候用挺不错的,简单,有效.少用应该说成慎用.
并且,这个样子LOOP循环下来,估计也只会出现在教材里面,如果楼主想用程序吃饭建议再把数学方面的知识系统一下并结合着用上来.这样一个一个去加上循环上去,为什么不用等差数列?再有就是上面也提了产生溢出的事.Top
44 楼meqxx()回复于 2006-10-15 08:32:22 得分 0
结帖!!Top
45 楼mountainking1986()回复于 2006-10-15 12:41:45 得分 0
不是高级程序员,建议不要用GOTOTop
46 楼yafizyh(亚斐)回复于 2006-10-15 14:29:26 得分 0
自找麻烦。Top
47 楼hanxuaiztt(依旧飘流)回复于 2006-10-15 14:44:55 得分 0
# include <stdio.h>
# define gaoding printf("**********************************************************\n");
void main ()
{
int i,sum=0,ray=1;
i=1;
loop:if(i<=10000)
{
sum=sum+i;
i++;
goto loop;
}
printf("%d\n",sum);
/* gaoding是什么东西?我觉得可以不用*/
i=1;
leep:if(i<=32)
{
ray=ray*i;
i++;
goto leep;
}
printf("%d\n");
}
最好不要随便用gotoTop
48 楼hanxuaiztt(依旧飘流)回复于 2006-10-15 14:48:21 得分 0
# define gaoding printf("**********************************************************\n");
我明白了
你知道的东西很多,但我觉得你不是一个好的程序员Top
49 楼wodong()回复于 2006-10-15 16:47:03 得分 0
# define gaoding printf("**********************************************************\n");
请教断行一定要用/么?
还有两行的define语句用不用分号?Top
50 楼jbczj(人见人爱)回复于 2006-10-15 17:14:36 得分 0
c语言语法很简单的Top
51 楼pilixuanke(轩客)回复于 2006-10-15 18:34:23 得分 0
建议先看看基本的C语言的书籍。补上基础之后再写程序就明白多了。Top
52 楼sunbird69(太阳鸟)回复于 2006-10-15 18:43:34 得分 0
goto 语句知道怎么用就行了
但循环最好别用gotoTop
53 楼white_snowbird(武汉小学)回复于 2006-10-15 21:32:03 得分 0
程序风格不好,不要光为了完成作业写程序。想好了再写。Top
54 楼fanswc(婉君)回复于 2006-10-15 22:10:22 得分 0
:angel725() ( 一级(初级)) 信誉:100 2006-10-14 22:07:37 得分:0
?
leep:if(1<=32)
{
ray=ray*i;
i++;
goto leep;
}
死循环!!
楼上的,这是死循环吗??
我看不是哦??
刚学一段时间,给讲讲怎么死循环了》》??
你说1是不是小于32?那么不停的在那里goto,goto到判断1是否小于32,然后执行到goto leep;又来判断1是否小于32,你说这是不是死的Top
55 楼mu_yang(穆扬)回复于 2006-10-15 22:40:01 得分 0
wodong():
# define gaoding printf("**********************************************************\n");
请教断行一定要用/么?
还有两行的define语句用不用分号?
--------------------------
我认为一定要用.(断行是"\"吧?)
因为预处理器必须要知道"gaoding"代表哪个字符串
一般不可能判断出到第几行结束
#define不是语句,是预处理命令
本身是不加";"的
但如果你的宏替代的是两个c语句的话
";"是c语句的不是#define的
比如
#define A B\
C\
D
与
#define A B;\
C;\
D;
后者带";"是因为A替代的是3个c语句
前者A替代的是 BCD
Top
56 楼gelongking()回复于 2006-10-16 14:27:50 得分 0
go to不适合你~``呵呵```慢慢学吧```别着急~~!Top
57 楼news159()回复于 2006-10-16 18:13:48 得分 0
真佩服问的敢问,
答的肯答,
小弟佩服你们佩服得五体投地Top
58 楼wucunfu(因为楼主你吝啬,所以我还是一个三角裤衩!)回复于 2006-10-16 22:14:54 得分 0
这样的问题你也会疯的话,那你以后准备就呆在**病院吧!
是leep:if(i<=32) 而不是leep:if(1<=32)
是i不是1。Top
59 楼qinhaichao(摊开晒.....2007!)回复于 2006-10-17 03:17:59 得分 0
不管怎么说,问题总算解决了!Top




