我写了个C语言程序,想要输入完一次后再重新执行一次,但结束后就变成不断地循环了,求大神指点!

2024-11-22 16:01:39
推荐回答(5个)
回答1:

#include
#include
#define pull(a,b) a+b
#define sub(a,b) a-b
#define mut(a,b) a*b
#define devide(a,b) a/b
#define sp(a,b) a%b
void
main()
{int a,b,i,x,c;
char t;
c=1;
while(c==1)
{printf("四则运算式单式计算器");
printf("请输入运算类型:\n1、加法 2、减法 3、乘法 4、除法 5、求余数\n");
scanf("%d",&x);
printf("请输入要运算的两个数a和b:");
scanf("%d %d",&a,&b);
switch(x)
{case 1 : i=pull(a,b);break;
case 2 : i=sub(a,b);break;
case 3 : i=mut(a,b);break;
case 4 : i=devide(a,b);break;
case 5 : i=sp(a,b);break;
}
printf("运算结果为:%d\n",i);
printf("退出请输入Y,重新输入请输入N");
getchar();
scanf("%c",&t);
if(t=='n'||t=='N')
{c=1;continue;
}
else if(t=='y'||t=='Y')
{c=0;
printf("谢谢使用!");
break;
getchar();
getchar();
}
}
}

1.你要接收y或者n ,t要定义为字符型,接收用:
scanf("%c",&t);

2.在使用scanf("%c",&t);之前还必须用getchar接收掉缓冲区中的 \n符,可以参考一下

回答2:

#define pull(a,b) a+b
#define sub(a,b) a-b
#define mut(a,b) a*b
#define devide(a,b) a/b
#define sp(a,b) a%b
void main()
{
int a,b,i,x,c;
char t;
c=1;
while(c==1)
{
printf("四则运算式单式计算器");
printf("请输入运算类型:\n1、加法 2、减法 3、乘法 4、除法 5、求余数\n");
scanf("%d",&x);
printf("请输入要运算的两个数a和b:");
scanf("%d %d",&a,&b);
switch(x)
{
case 1 : i=pull(a,b);
break;
case 2 : i=sub(a,b);
break;
case 3 : i=mut(a,b);
break;
case 4 : i=devide(a,b);
break;
case 5 : i=sp(a,b);
break;
}
printf("运算结果为:%d\n",i);
printf("退出请输入Y,重新输入请输入N:\n");
scanf("%s",&t);

if(t=='n'||t=='N')
{
c=1;
//continue;
}
else if(t=='y'||t=='Y')
{
c=0;
printf("谢谢使用!");
break;
getchar();
getchar();
}
}
}

回答3:

有几个建议
1.宏定义的时候,后面的定义内容最好也用()括起来
2.scanf的参数必须是地址,&
3.switch中间最好要有default。不然不能处理错误
4.这个宏定义果然有点多。。。。

回答4:

scanf("%d",t);

改成scanf("%d",&t);

回答5:

发现了一个问题 t应该是字符型,你定义成了整型