所以,我还是新编码,我的朋友很好地教我很多,我想快速学习,然后他给我这个练习在我家学习 他给了我关于预订餐桌号码的问题,所以我试着去做.. 但是我在这部分检查表格号码时遇到了问题,如果它是一个数字或者没有...我在谷歌上搜索如何,但他们只举例说明如何用单个字符做..所以,我做了一个帐户然后问这里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。
我想知道这有什么不对,请解释一下。 谢谢你!
答案 0 :(得分:2)
您有多个问题。
让我们先仔细看看这两行:
checkDigit(num);
itsdigit = checkDigit;
第一行调用 checkDigit
,但会抛弃结果。
第二行不调用该函数,而编译器会让它衰减到函数的指针并将该指针赋给itsdigit
。你的编译器应该抱怨它。
此外,isdigit
当字符为数字时返回1
,它只需要返回非零的内容。< / p>
最后,在digits
数组中,您不存储字符,您可以存储整数值。如果isdigit(1)
为真,isdigit('1')
将为假。仅仅因为您使用类型char
并不会自动在变量中存储字符。考虑到你读取一个整数,并将其数字存储在digits
数组中,不需要检查数字是否实际为数字。当然,数字将是数字。
答案 1 :(得分:0)
你可能想要这个:
bool IsOnlyDigits(const char text[])
{
int length = strlen(text);
for (int i = 0; i < length; i++)
{
if (!isdigit(text[i]))
return false;
}
return true;
}
int main() {
char num[50];
scanf("%s", num);
if (IsOnlyDigits(num))
puts("It's digits!");
else
puts("It's not digits!");
fflush(stdout);
getchar();
return 0;
}
免责声明:非错误检查和非边界检查代码。为简洁省略#include
。已经在Visual Studio 2015下进行了测试,似乎在这里工作正常。
输入和输出示例:
123
It's digits!
12a
It's not digits!
abc
It's not digits!
要理解这一点,您需要了解字符串和数组。请阅读C教科书中相应的章节。
答案 2 :(得分:0)
您可以改为创建char或int类型的数组,遍历数组并使用isdigit()函数检查是否有任何字符实例是数字。
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char arr[10];
cin>>arr;
for(int i=0;i<strlen(arr);i++){
if(isdigit(arr[i])){
cout<<arr[i]<<" is a digit\n";
}
else {
cout<<arr[i]<<" is not a digit\n";
}
}
return 0;
}