注册 登录
编程论坛 新人交流区

一道for的循环题

花剑 发布于 2007-11-07 22:08, 656 次点击
题目:输出1到100之间的偶数,每一行输出5个数。
我的错误程序是:
main()
{
int i,n=0;
for(i=1;i<=100;i++)
{
if(i%2==0)
{
n++;
if(n%5==0)
printf("\n");
printf("%d,",i);
}
}
}
第一行输出的是四个数,最后一行输出的是一个数,中间都是每行五个数,请问该怎么改?
24 回复
#2
rediums2007-11-07 22:19

直接把第三行n的值改为-1就行了

#3
tommi2007-11-07 22:31
if(n%5==0) 改成 if (n != 0 && n % 5 == 0)
因为初始n = 0,
当i=1时,
n%5-->0%5=0
#4
BigBen2007-11-07 22:33
为什么这些我都能看懂,但我就是写不出来。是没练到么?
#5
为你呼吸2007-11-07 22:34
#include<stdio.h> //
main()
{
int i,n=0;
for(i=1;i<=100;i++)
{
if(i%2==0)
{
printf("%d,",i);
n++;
if(n%5==0)
printf("\n");
}
}
}
#6
为你呼吸2007-11-07 22:34
这样就没错了
#7
study19892007-11-08 11:21
支持"为你呼吸",因为当n=5的时候,是先执行换行.换行后再输出i的值.
#8
不离不弃2007-11-08 11:56
顶一下
楼主是没考虑到程序的结构
思路不太严明。
都是新手一起加油吧
#9
第二种可能2007-11-08 12:10
我感觉N初值的地方不对
#10
xiejialong2007-11-08 15:33
printf("%d,",i);
应该是:printf("%d",i);
#11
努力学程序2007-11-08 15:56
没考虑到程序执行的顺序,为你呼吸的答案是正确的
#12
iFreeBSD2007-11-08 16:14

#include<stdio.h>
main(int _)
{for(_=1 ; _ * 2 <= 100 ; printf(!(_++ % 6) ? "\n":"%2d " , _* 2));}

#13
c_leaner2007-11-08 16:41
回复:(BigBen)为什么这些我都能看懂,但我就是写不出...
正解
#14
写在人生边上2007-11-08 17:18
把 if(n%5==0) printf("\n");和 printf("%d,",i);换个位置

#15
jeason19792007-11-08 17:19
学习下,谢谢
#16
蝶梦痕2007-11-08 22:27
为什么一直发不了呢?
#17
now2007-11-09 09:47

要考程序结构,以及程序执行顺序。
可逐句分析语句,去查找错误

#18
Gavin_1232007-11-09 09:54

#19
tianxi8222007-11-09 11:07

n++;
if(n%5 == 0)
printf("\n");
printf("%d",i);
第一次循环:n = 1; 不做printf("\n");
第三次循环:n = 2; 不做printf("\n");
第三次循环:n = 3; 不做printf("\n");
第四次循环:n = 4; 不做printf("\n");
第五次循环:n = 5; 做printf("\n");
因为是先做printf("\n");再做printf("%d",i);所以第一行只输出了4个数.当然最后一行就只有一个数了.


[此贴子已经被作者于2007-11-9 11:08:26编辑过]

#20
uniqueboss2007-11-09 12:12
回复:(xiejialong)printf(
他可能就要要输出空格
#21
kuteboy2007-11-09 13:16
写程序的时候~我觉得试着把流程图画出来吧~~那样会对你写程序有帮助的
#22
clwang2007-11-09 14:24

改-1就行了?

#23
badlyboy2007-11-09 14:28
那就是时间问题,老手都是从新手来的

#24
小飞丫2007-11-09 14:31
同意
#25
magic_daodao2007-11-09 16:40
顶起!
1