我寫的代碼是計算到某個數字n的總和,如果不是自然數就寫不是,或者如果沒有輸入數字就說沒有輸入程式停止作業,所有已完成,但它根本不會在 if 回圈下方加載此部分,我該如何解決該問題并放置回傳或其他選項?
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;
}
uj5u.com熱心網友回復:
您需要檢查scanf的回傳值以查看掃描是否成功。它回傳掃描值的數量。此外,錯誤訊息應列印到標準錯誤流。試試這個:
#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;
}
uj5u.com熱心網友回復:
你的程式邏輯是錯誤的:
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 之前,不要關心輸入驗證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378632.html
上一篇:嘗試使用opencv和tkinter錄制視頻時獲取6kbavi檔案
下一篇:C上的Strtok實作
