首页 > 试题广场 >

您怀疑下面的程序里有一些错误。您能找出这些错误吗? i

[问答题]
您怀疑下面的程序里有一些错误。您能找出这些错误吗?
int main (void)
{
int i = 1,
float n;
printf ( "Watch out! Here come a bunch of fractions!\n" );
while (i < 30)
n = 1/i;
printf ("%f", n);
printf ("That's all, folks!\n");
return;
}

推荐
第0行:应该有#include<stdio.h>。
第3行:应该以分号而不是逗号结尾。
第6行:while语句建立了一个无限循环。因为i的值保持为1,所以它总是小于30。推测一下它的意思大概是要写成while (i++<30)。
第6到8行:这样的缩排说明我们想要使第7和8行组成一个代码块,但是缺少了花括号会使while循环只包括第7行。应该添加花括号。
第7行:因为1和i都是整数,所以当i为1时除法运算的结果会是1,而当i为更大的数时结果为0。使用n=1.0/i;会使i在进行除法运算之前先转换为浮点数,这样就会产生非0答案。
第8行:我们在控制语句中漏掉了换行符(\n),这会使数字只要可能就在一行中打印。
第10行:应该是return 0;。
下面是应该正确的版本:
#include <stdio.h>
int main (void)
{
int i = 1;
float n;
printf ( "Watch out ! Here come a bunch of fractions!\n" );
while (i++ <30)
{
n = 1.0/i;
printf ( " %f\n", n);
}
printf ( "That's all, folks !\n");
return 0;
}

发表于 2018-03-25 10:28:16 回复(0)