本文目录一览:
- 1、关于C语言的一个问题
- 2、c语言算奖金的小问题
- 3、用c语言实现下列要求
- 4、C语言小白学习过程中的问题
- 5、c语言错误
关于C语言的一个问题
你好!!
你定义的变量是 long 类型,在计算的时候,却使用小数在计算,类型不匹配,数据会丢失
你把 long 类型改成 double 类型,输入类型 %ld 改成 %lf
把 getch 函数改成 getchar ,让程序停住
完整的修改后代码:
#includestdio.h
int main()
{
double i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
printf("input lirun:\n");
scanf("%lf",i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if(i=100000)
bonus=i*0.1;
else if(i=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i=400000)
bonus=bonus2+(i-200000)*0.02;
else if(i=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%lf\n",bonus);
getchar();
return 0;
}
c语言算奖金的小问题
#includeiostream.h
int main()
{
long int i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+400000*0.03;
bonus10=bonus6+600000*0.015;
cini;
if(i=100000)
bonus=i*0.1;
else if(i=200000i=100000)
bonus=bonus1+(i-100000)*0.075;
else if(i=400000i=200000)
bonus=bonus2+(i-200000)*0.05;
else if(i=600000i=400000)
bonus=bonus4+(i-400000)*0.03;
else if(i=1000000i=600000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
coutbonusendl;
system("PAUSE"); 改完的
用c语言实现下列要求
# include stdio.h
int main( )
{
int i;
double bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+100000*0.05;
bon6=bon4+100000*0.03;
bon10=bon6+400000*0.015;
printf("请输入当月利润i:");
scanf("%d",i);
printf("i=%d\n",i);
if(i=100000){
bonus=i*0.1;
}else if(i=200000){
bonus=bon1+(i-100000)*0.075;
}else if(i=400000){
bonus=bon2+(i-200000)*0.05;
}else if(i=600000){
bonus=bon4+(i-400000)*0.03;
}else if(i=1000000){
bonus=bon6+(i-600000)*0.015;
}else{
bonus=bon10+(i-1000000)*0.01;
}
printf("奖金总数为:%10.2f\n",bonus);
return 0;
}
【答题不易,请采纳谢谢】
C语言小白学习过程中的问题
不是溢出,是bonus这个变量没有初始化,profit的值是通过scanf用户输入的,但是bonus没有初始化,当profit=200000时,会执行(bonus)=bonus+(profit-100000.0)*0.075这句代码,因为bonus变量没有初始化,结果就会很奇怪(数值非常大或者其他的情况)。除了这个问题以外scanf和printf函数的调用也有些小问题,profit变量是double类型的,scanf或者printf遇到double类型的应该用%g或者%lf而不是%f,%f是用于float类型变量的,用%f会有编译器警告(能编译成功但是有警告),而且数据也会不准确。
c语言错误
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
2.程序源代码:
#include "stdio.h"
void main()
{
long int i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
scanf("%ld",i);
if(i=100000)
{
bonus=i*0.1;
else if(i=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
}