我需要添加两个数字。这里的约束是我还必须检查输入不是字母表。我使用isdigit()函数来检查这个。但是当我运行代码时,即使输入是数字,它也会执行else块。
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
void main()
{
int a,b,c;
clrscr();
scanf("%d\n",&a);
scanf("%d",&b);
c=a+b;
if(isdigit(a) && isdigit(b))
{
printf("%d",c);
printf("\n");
}
else
{
printf("Inavild Output");
}
getch();
}
答案 0 :(得分:1)
函数isdigit
期望字符的整数表示(它是ascii值)。您正在给出实数整数值,在检查ascii表时,其值可能不是数字。
答案 1 :(得分:0)
首先,如果您想从用户那里获取输入,则需要使用char或string变量。它更加清晰。喜欢:
char input_a;
char input_b;
其次,如果您想要的是添加数字而不是为其添加Ascii表示的结果,则无法直接添加char值。因此,在确保input_a和input_b实际上是数字后,需要完成c = a + b行。
第三,您需要将input_a和input_b转换为它们所代表的值。那么你的&#34;如果&#34;看起来像这样(注意有很多方法可以将char转换为int):
if(isdigit(input_a) && isdigit(input_b))
{
int a = atoi(input_a);
int b = atoi(input_b);
int c = a + b;
printf("%d",c);
printf("\n");
}
答案 2 :(得分:0)
int isdigit(int argument)
将整数参数作为参数并检查 如果是数字,则参数是否为数字,如果是,则返回1(true)
参数不是数字,然后返回0(false)
。如果您将
int a = 65
传递给该函数,它会将值转换为 它等效ASCII值并返回结果false(0)
。因为65
相当于'A'
,'A'
不是数字。
你可以这样检查。if(scanf("%d",&a) == 1 && scanf("%d",&b) == 1)
。如果输入为数字,则计算并打印result,
如果输入不是数字,则打印Inavild Output.
#include<stdio.h>
#include<conio.h>
void main()
{
int a,b,c;
clrscr();
if(scanf("%d",&a) == 1 && scanf("%d",&b) == 1) //if numbers read condition will be true
{
c=a+b;
printf("%d",c);
printf("\n");
}
else
{
printf("Inavild Output");
}
getch();
}