通过使用给定的源代码,我试图进行一些算术运算。给定的输入是:
1
234*34
由于234
与*
和34
之间没有空格,因此scanf
无法正确读取它。我应该怎么做才能使scanf
读取此输入并给出正确答案,而又不要在输入数字之间留出空格?
#include <stdio.h>
int arithematic(){
int a,c,t,i=0,k,l;
char b[100];
scanf("%d%s%d",&a,&b[0],&c);
if(b[0] =='+')
t = a+c;
if(b[0] == '-')
t=a-c;
if(b[0]=='*')
t=a*c;
k=a;
l=c;
while(k>0||l>0)
{
k/=10;l/=10;
i++;
}
printf("%d\n",a);
printf("%s",b);
printf("%d\n",c);
while(i>0)
{
printf("-");
i--;
}
printf("\n%d\n",t);
}
int main(void)
{
int n;
scanf("%d",&n);
while(n--)
{
arithematic();
printf("\n");
}
}
答案 0 :(得分:0)
将scanf("%d%s%d",&a,&b[0],&c);
替换为scanf("%d %1[+-*/]%d",&a,b,&c);
。 %1[+-*/]
的含义是仅消耗一个字符,该字符属于四个运算符的集合。前面的空格是消耗可选的空白。