这个C语言小程序是求银行存款本息和的,其中有位错误求大神指教。

#include<stdio.h>
#include<math.h>
#include<windows.h>
int main()
{int n;
double a,b,p1,p2,p3,ph,p5,r;
scanf("%d,%lf",&n,&r);
p1=r*pow(1+4.14%,5);
a=r*(1+4.68%*2);
b=r*(1+5.4%*3);
p2=a*(1+5.4%*3);
p3=b*(1+4.68%*2);
ph=r*pow(1+0.72%,20);
p5=r*(1+5.85%*5);
switch(n)
{case n=1:printf("%f",p1);break;
case n=2:printf("%f",p2);break;
case n=3:printf("%f",p3);break;
case n=4:printf("%f",ph);break;
case n=5:printf("%f",p5;break;
default:printf("请输入正确数值");
}
Sleep(5000);
}
差了 一个return 0 除此之外还有错误
一楼的方法试了不行啊。应该不止一个错误。

你求的是银行存款本息问题,所以你使用的值是百分制,%在C语言里不能直接写,先转换成小数吧。%是取模符号。
其次,你的switch中的case 值错了,switch接受的字符型和整型,直接在case后接要比较的值。
结尾差了一个return 0;
在你的程序代码中完全用不着sleep(5000),不需要,所以也不用头文件<windows.h>
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-12
试试这段编译没出错,有些弄不明白程序的主要功能,没有注释!

#include<stdio.h>
#include<math.h>
int main()
{
int n;
float a,b,p1,p2,p3,ph,p5,r;
scanf("%d ,%1f",&n,&r);
p1=r*pow(1+0.0414,5);
a=r*(1+0.0468*2);
b=r*(1+0.054*3);
p2=a*(1+0.054*3);
p3=b*(1+0.0468*2);
ph=r*pow(1+0.0072,20);
p5=r*(1+0.0585*5);
switch(n)
{
case 1:printf("%f",p1);break;
case 2:printf("%f",p2);break;
case 3:printf("%f",p3);break;
case 4:printf("%f",ph);break;
case 5:printf("%f",p5);break;
default: printf("请输入正确数值");
}
return 0;
}本回答被提问者采纳
第2个回答  2012-10-11
#include<stdio.h>
#include<math.h>
#include<time.h>
int main()
{char n;
double a,b,p1,p2,p3,ph,p5,r;
scanf("%c,%lf",&n,&r);
p1=r*pow(1+0.0414,5);
a=r*(1+0.0468*2);
b=r*(1+0.054*3);
p2=a*(1+0.054*3);
p3=b*(1+0.0468*2);
ph=r*pow(1+0.072,20);
p5=r*(1+0.0585*5);
switch(n)
{case '1':printf("%f",p1);break;
case '2':printf("%f",p2);break;
case '3':printf("%f",p3);break;
case '4':printf("%f",ph);break;
case '5':printf("%f",p5);break;
default:printf("dhoijkfpo");
}
sleep(5000) ;
getch();
}
我用的是wintc ,那个p1=r*pow(1+0.0414,5);里面的数不要用浮点型,要用你定义的double型,还有switch对应的值是字符型,,你要将N定义为字符型,,‘1’ ‘2’ ‘3代表的就是字符,#include<time.h> wintc中引用的是这个头文件!!!你改改看!!!毕竟我在wintc下执行的!!
switch(n)
{case '1':printf("%f",p1);break;
case '2':printf("%f",p2);break;
case '3':printf("%f",p3);break;
case '4':printf("%f",ph);break;
case '5':printf("%f",p5);break;
default:printf("dhoijkfpo");
}
这段你要定义为整形也行,那你必须要改为:
switch(n)
{case 1:printf("%f",p1);break;
case 2:printf("%f",p2);break;
case 3:printf("%f",p3);break;
case 4:printf("%f",ph);break;
case 5:printf("%f",p5);break;
default:printf("dhoijkfpo");
}
第3个回答  2012-10-11
靠,真没见过这样的switch函数。嘿嘿,不知道你用的对不对。
一直见的都是
switch(n)

case 1:.....;break;
case 2:.....;break;
default:....;

不能写n=1,n=2。。的吧,哈哈!再说了,n=1是给n赋值1,判断n是否等于1也应该用n==1啊追问

哥们试了不行啊。

追答

编译提示什么?语法问题还是算法问题?

追问

过不了编译这关,悲剧啊!

追答

什么问题你就不能一下说完么。。。编译提示what了?

第4个回答  2012-10-11
case n=1还是case 1?记得不用写n=的
相似回答