关于c语言

2025-02-26 18:48:54
推荐回答(5个)
回答1:

有这样几个错误,你说的死机原因是因为scanf("%c",a);这行接受变量a的时候应该&a,即scanf("%c",&a); 还有要在输入两个数字后清空缓存区,防止接受到回车字符,即在scanf("%f,%f",&c,&d);这行下面加一行 fflush(stdin); 在printf("请以+,-,*,/,的方式输入你想计算的类型/n");这行的/n应该改为\n 改后代码如下,错误处加上了注释:
#include
#include
main()
{
char a;
float c,d;
printf("请输入要计算的数字\n");
scanf("%f,%f",&c,&d);
fflush(stdin); //清空缓存区
printf("请以+,-,*,/,的方式输入你想计算的类型\n");
scanf("%c",&a); //要以截地址的方式获取变量
switch(a)
{
case'+':printf("%f",c+d);break;
case'-':printf("%f",c-d);break;
case'*':printf("%f",c*d);break;
case'/':printf("%f",c/d);break;
}
getch();
}

回答2:

原因如下。语法错误,在输入a的语句中,少了取地址符&。同时DEV中,要将main函数定义为整型,即int main。同时还要在程序结束之前加语句return 0;另外,要想看到结果还要在在return 0语句上一行加语句system(“pause”);还有,程序中的getch()是多余的,这一般用在WIN-TC中。对了,DEV是兼容C和C++的编译器,所以你保存文件时,别忘了把保存文件类型设置为.C型。

回答3:

错误点:%c是需要加取地址符的(&),%s不加,我是在vc++6.0上编译的希望对你有所帮助
#include
void main()
{
char a;
float c,d;
printf("请输入要计算的数字和计算类型,中间以空格隔开\n");
scanf("%f %f %c",&c,&d,&a);
switch(a)
{
case '+':printf("%f\n",c+d);break;
case '-':printf("%f\n",c-d);break;
case '*':printf("%f\n",c*d);break;
case '/':printf("%f\n",c/d);break;
default:printf("%f\n",c/d); break;
}

}

回答4:

在第二个scanf 前面加上 fflush(stdin); 用来清除输入流里面的数据
一位scanf 是从输入流获取数据 第一个scanf 获取数据后并没用调用 fflush(stdin);
第二个scanf任然能获取数据
scanf(*,&*) 记得加& 第一个scanf 输入数据是 记得用‘,’隔开

回答5:

这样改一下:
#include
#include
main()
{
char a;
float c,d;
printf("请输入要计算的数字\n");
scanf("%f,%f",&c,&d);
printf("请以+,-,*,/,的方式输入你想计算的类型\n");
scanf("%c",&a);
scanf("%c",&a);
switch(a)
{
case'+':printf("%f",c+d);break;
case'-':printf("%f",c-d);break;
case'*':printf("%f",c*d);break;
case'/':printf("%f",c/d);break;
}
getch();
}