回覆列表
-
1 # 你的小心幹
-
2 # 影片好笑
首先,你scanf的方法就錯了,因為如果輸入不是數字的話,scanf("%d",&n);會讀入亂碼的。應該這樣:#include<stdio.h>#include<string.h>int main(){ char str[1000]; scanf("%s",str); bool shishuzi=true; for(int i=0;i<strlen(str);i++) if(str[i]<"0" || str[i]>"9") { printf("不是數字!\n"); shishuzi=false; break; } if(shishuzi==true) printf("是數字!\n");return 0;}這個是多位的,如果只要一位數的話,稍微改改就可
1、使用 if(scanf("%d",&h)!=1) 來判斷printf("it"s not a number!\n");因為scanf是從快取中讀取輸入的資料如果輸入的不是數字,就會返回0,如果是數字就會返回1;一般人不知道scanf還有返回值,就可以看看標頭檔案中scanf的定義了。2、例程:
#include <stdio.h>int main(){int h;while(!scanf("%d",&h)){fflush(stdin);printf("\n輸入錯誤,請重新輸入:\n");}}
//其中fflush(stdin)是清理快取,就像我上面說的scanf是從快取取數的,