【发布时间】:2017-06-16 22:20:41
【问题描述】:
所以,我还是个编码新手,我的朋友很好地教了我很多东西,我想快速学习它,然后他给了我这个练习,让我在家里学习 他给了我这个关于预订桌号的问题,所以我试着去做.. 但是我在这部分检查表号是否是数字时遇到了麻烦......我在谷歌上搜索如何,但他们只举例说明如何用单个字符来做......所以,我做了一个帐户然后在这里问xD 顺便说一句,表的最大数量是 25。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
bool checkDigit(char tablenum){
char digit[3];
int n;
int value = tablenum;
if(tablenum>0 && tablenum<10)
n=1;
if(tablenum>9 && tablenum < 26)
n=2;
for(int i=0;i<n;i++){
digit[i] = value%10;
value /= 10;
}
if(n==1){
printf("digit 0 = %d\nisdigit = %d\n",tablenum,isdigit(tablenum)); //just checking the isdigit value
if(isdigit(digit[0])!=0){
puts("It's digit");
return true;
}
else{
puts("It's not digit");
return false;
}
}
if(n==2){
printf("digit 0 = %d isdigit 0 = %d \ndigit 1 = %d isdigit 1 = %d\n",digit[0],isdigit(digit[0]),digit[1],isdigit(digit[1])); //checking the values too
if(isdigit(digit[0]) != 0 && isdigit(digit[1]) != 0){
puts("It's digits!");
return true;
}
else{
puts("It's not digits!");
return false;
}
}
else{
printf("It's not digit!")
return false;
}
}
int main(){
int num;
bool itsdigit;
do{
scanf("%d",&num);fflush(stdin);
itsdigit = checkDigit(num);
} while(itsdigit != 1 );
getchar();
return 0;
}
输入=“25”“1”“0”“测试”
输出 = "这是一个数字" "这是一个数字" "这不是一个数字" "
由于表只有1到25
当我输入“1”时,它显示正确的数字,但当它输入 isdigit() 时,我一直得到 0。
我想知道什么时候错了,请给出解释。 之前谢谢!
【问题讨论】:
-
与您的问题无关,但您真的不应该使用
stdin之类的输入流调用fflush。它在 C 规范中明确标记为 未定义的行为。 -
这段代码看起来非常复杂。
-
我认为你应该先从一些更简单的问题开始。
-
那不是 C 或者它不完整。如果你编译为 C++,请更改标签!
-
num是一个int(一个数字),因此它不可能包含"test"。你需要读一个 string 但那是你水平的另一个故事....
标签: c++