为什么我在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;
}