我的c语言程序为什么会执行不了?

原程序
#include <stdio.h>
int main(void)
{
char cType=0,dType=0;
float amount=0,rate=0;
printf("请输入客户类型、存款金额、存期类型:\n");
scanf("%c %f %c",&cType,&amount,&dType);
switch(dType)
{ case '1': rate = 1.5; break;
case '2': rate = 2; break;
case '3': rate = 3; break;
case '4': rate = 3.2; break;
case '5': rate = 3.5; break;
default: printf("没有这种存期\n"); return -1;
}
if(cType=='V') rate = rate *1.1;
if(amount>=100000) rate = rate *1.2;
printf("存款利率为:%.2f%%\n",rate);
return 0;
}

这段C语言代码有三个错误:

一、switch单词拼写错误少了c;

二、if(k = 'V')判断是双等于号==;

三、main函数最好没有返回值,这不是大错。

追问

能不能解释一下为什么deafult后面需要加return-1?

追答

最好是要,不然会往构造执行

追问

可是我用case3测试不输入没有这种存期输出的是0.000

追答

建议你在scanf后面一行设置断点,看输入后是什么值?感觉scanf没有输入对

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-24
程序语法上没有问题。如果你的编译器不支持汉字编码,则用 英文 ASCII 字符为好。
另外,注意输入数据 的 格式,格式不对会执行不了。
假定用英文:
#include <stdio.h>
int main(void)
{
char cType=0,dType=0;
float amount=0,rate=0;
printf("input c f c\n");
scanf("%c %f %c",&cType,&amount,&dType);
switch(dType)
{ case '1': rate = 1.5; break;
case '2': rate = 2; break;
case '3': rate = 3; break;
case '4': rate = 3.2; break;
case '5': rate = 3.5; break;
default: printf("no such dType\n"); return -1;
}
if(cType=='V') rate = rate *1.1;
if(amount>=100000) rate = rate *1.2;
printf("rate:%.2f%%\n",rate);
return 0;
}
输入: V 12345 3
输出: rate:3.30%
输入: 3 12345 3
输出: rate:3.00%
相似回答