C 一个简单的程序,可以添加用户输入的数字
我正在尝试编写一个简单的程序,使用scanf从用户那里输入5个数字并将它们相加。这是我目前掌握的代码C 一个简单的程序,可以添加用户输入的数字,c,scanf,C,Scanf,我正在尝试编写一个简单的程序,使用scanf从用户那里输入5个数字并将它们相加。这是我目前掌握的代码 int main() { int i; int j=1; int k=1; for (i=1; i<= 5; i++) { scanf("%d\n", &j); k = k+j; }
int main()
{
int i;
int j=1;
int k=1;
for (i=1; i<= 5; i++)
{
scanf("%d\n", &j);
k = k+j;
}
printf("%d\n", k);
}
基本上,它要求我输入第六个数字(显然,我只需要5个),并且它还向最终结果添加了一个数字。(1+2+3+4+5=15)
有什么想法吗。我是不是在某个地方犯了一个简单的错误?您似乎正在将k(您保存的总和)初始化为一,然后将所有其他数字相加。试试这个:
int k = 0;
相反
那么,当你
k=k+j
第一次,k将是0,而不是1。你也不需要做j=1
也就是说,您也可以使用快捷方式来表示k=k+j
k += j;
C程序员必须如此频繁地使用这种模式,以至于他们专门为它在语言中构建了一个快捷方式
在for循环中,C中的惯例是从零开始,然后工作到<最大值,以及:
for (i = 0; i < 5; i++)
(i=0;i<5;i++)的
我不知道为什么它会要求额外的时间,但是试着将循环设置为那样,看看它是否有效。您似乎正在将k(您保存和的数字)初始化为一,然后将所有其他数字相加。试试这个:
int k = 0;
相反
那么,当你
k=k+j
第一次,k将是0,而不是1。你也不需要做j=1
也就是说,您也可以使用快捷方式来表示k=k+j
k += j;
C程序员必须如此频繁地使用这种模式,以至于他们专门为它在语言中构建了一个快捷方式
在for循环中,C中的惯例是从零开始,然后工作到<最大值,以及:
for (i = 0; i < 5; i++)
(i=0;i<5;i++)的
我不知道为什么它会要求额外的时间,但请尝试将您的循环设置为那样,看看它是否有效。正如其他人所说,您正在错误地初始化
k
,但我怀疑导致问题的原因是您正在使用scanf(“%d\n”,&j))代码>而不是scanf(“%d”和&j)代码>scanf()
忽略匹配前的空格。正如其他人所说,您正在错误地初始化k
,但我怀疑导致问题的原因是您正在使用scanf(“%d\n”,&j)代码>而不是scanf(“%d”和&j)代码>scanf()
忽略匹配前的空格。最初k=1
。然后将数字1
,2
,3
,4
,5
添加到其中。它们加起来是1+1+2+3+4+5
,也就是16
您通常应该考虑初始化变量
i
不需要在for
循环之前初始化
j
不需要初始化,因为它将从输入中读取
k
需要正确初始化。但是因为它有特定的用途,你应该称它为sum
,而不是k
。当你总结事情时,你应该从0
开始
此外,您应该检查对scanf
的调用是否成功。在这种情况下,函数返回1
if (scanf("%d", &j) == 1) {
sum += j;
} else {
fprintf(stderr, "Invalid input.\n");
break; /* exit the for loop. */
}
最初k=1
。然后将数字1
,2
,3
,4
,5
添加到其中。它们加起来是1+1+2+3+4+5
,也就是16
您通常应该考虑初始化变量
i
不需要在for
循环之前初始化
j
不需要初始化,因为它将从输入中读取
k
需要正确初始化。但是因为它有特定的用途,你应该称它为sum
,而不是k
。当你总结事情时,你应该从0
开始
此外,您应该检查对scanf
的调用是否成功。在这种情况下,函数返回1
if (scanf("%d", &j) == 1) {
sum += j;
} else {
fprintf(stderr, "Invalid input.\n");
break; /* exit the for loop. */
}
这就是您想要的,k在0处初始化,并在没有作为结束行的\n的情况下执行scanf输入:
int main() {
int i;
int j=0;
int k=0;
for (i=1; i<= 5; i++){
scanf("%d", &j);
k = k+j;
}
printf("%d\n", k);
}
intmain(){
int i;
int j=0;
int k=0;
对于(i=1;i这是您想要的,k初始化为0,并在没有作为结束线的\n的情况下执行scanf输入:
int main() {
int i;
int j=0;
int k=0;
for (i=1; i<= 5; i++){
scanf("%d", &j);
k = k+j;
}
printf("%d\n", k);
}
intmain(){
int i;
int j=0;
int k=0;
对于(i=1;i该'\n'字符是不必要的。我怀疑您混淆了printf和scanf语法:p该'\n'字符是不必要的。我怀疑您混淆了printf和scanf语法:p您是从k=1
开始的,而不是k=0
。为什么要在scanf
调用中添加新行?您是从k=1
,而不是k=0
。为什么要在scanf
呼叫中添加新行?谢谢大家的帮助!不。没有第六次迭代。从程序显示int k=1;
的那一刻起,额外的1
就在k
中。谢谢大家的帮助!不。没有第六次迭代。添加从程序显示int k=1;
的那一刻起,onal1
就在k
中。