为什么我在c编程中不能成功使用return选项?
Why can't I successfully use the return option in c programming?
我写的代码是求和到某个数n,如果不是自然数就写说不是,或者一个数没有输入就说没有输入和程序停止工作,所有这些都已完成,但它根本不会将这部分加载到 if 循环之下,我该如何修复它并放置 returns 或其他一些选项?
int main() {
int i, n, s = 0;
printf("input n: ");
scanf("%d", &n);
if (n<0) {
printf(" Not natural number");return 0;}
if (n != scanf("%d", &n)) {
printf("No number!");return 0;}
for (i = 1; i <= n; i++)
s = s + i * i;
printf("s is: %d", s);
return 0;
}
你的程序逻辑错误:
if (n<0) {
printf(" Not natural number");return 0;}
// here you call scanf again without any reason
// just remove the two lines below
if (n != scanf("%d", &n)) {
printf("No number!");return 0;}
你想要这个:
#include <stdlib.h>
#include <stdio.h>
int main() {
int i, n, s = 0;
printf("input n: ");
scanf("%d", &n);
if (n < 0) {
printf(" Not natural number"); return 0;
}
for (i = 1; i <= n; i++)
s = s + i * i;
printf("s is: %d", s);
return 0;
}
不要尝试使用 scanf
验证输入。这是做不到的。在你更精通 C 之前,不要关心输入验证。
您需要检查 scanf 中的 return 值以确定扫描是否成功。它 returns 扫描值的数量。此外,错误消息应打印到标准错误流。试试这个:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int c, i, n, s;
printf("input n: ");
c = scanf("%d", &n);
if (c != 1) {
fprintf(stderr, "No number!\n");
exit(EXIT_FAILURE);
} else if (n < 0) {
fprintf(stderr, "Not natural number\n");
exit(EXIT_FAILURE);
}
s = 0;
for (i = 1; i <= n; i++) {
s = s + i * i;
}
printf("s is: %d\n", s);
return 0;
}
我写的代码是求和到某个数n,如果不是自然数就写说不是,或者一个数没有输入就说没有输入和程序停止工作,所有这些都已完成,但它根本不会将这部分加载到 if 循环之下,我该如何修复它并放置 returns 或其他一些选项?
int main() {
int i, n, s = 0;
printf("input n: ");
scanf("%d", &n);
if (n<0) {
printf(" Not natural number");return 0;}
if (n != scanf("%d", &n)) {
printf("No number!");return 0;}
for (i = 1; i <= n; i++)
s = s + i * i;
printf("s is: %d", s);
return 0;
}
你的程序逻辑错误:
if (n<0) {
printf(" Not natural number");return 0;}
// here you call scanf again without any reason
// just remove the two lines below
if (n != scanf("%d", &n)) {
printf("No number!");return 0;}
你想要这个:
#include <stdlib.h>
#include <stdio.h>
int main() {
int i, n, s = 0;
printf("input n: ");
scanf("%d", &n);
if (n < 0) {
printf(" Not natural number"); return 0;
}
for (i = 1; i <= n; i++)
s = s + i * i;
printf("s is: %d", s);
return 0;
}
不要尝试使用 scanf
验证输入。这是做不到的。在你更精通 C 之前,不要关心输入验证。
您需要检查 scanf 中的 return 值以确定扫描是否成功。它 returns 扫描值的数量。此外,错误消息应打印到标准错误流。试试这个:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int c, i, n, s;
printf("input n: ");
c = scanf("%d", &n);
if (c != 1) {
fprintf(stderr, "No number!\n");
exit(EXIT_FAILURE);
} else if (n < 0) {
fprintf(stderr, "Not natural number\n");
exit(EXIT_FAILURE);
}
s = 0;
for (i = 1; i <= n; i++) {
s = s + i * i;
}
printf("s is: %d\n", s);
return 0;
}