本文目录一览:
关于C语言的一个问题
你好!! 你定义的变量是 long 类型,在计算的时候,却使用小数在计算,类型不匹配,数据会丢失 你把 long 类型改成 double 类型,输入类型 %ld 改成 %lf 把 getch 函数改成 getchar ,让程序停住 完整的修改后代码:
#include<stdio.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语言算奖金的小问题
#include<iostream.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;
cin >> i;
if(i=100000)
bonus=i*0.1;
else if(i=200000 && i=100000)
bonus=bonus1+(i-100000)*0.075;
else if(i=400000 && i=200000)
bonus=bonus2+(i-200000)*0.05;
else if(i=600000 && i=400000)
bonus=bonus4+(i-400000)*0.03;
else if(i=1000000 && i=600000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
cout << bonus << endl;
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,求应发放奖金总数?
- 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
- 程序源代码:
#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);
}