c语言分步求利润问题,请帮忙改正一下我写的哪错了

Python023

c语言分步求利润问题,请帮忙改正一下我写的哪错了,第1张

我在这个程序发现了逻辑问题 #include"stdio.h" void main() { int lr,s=1,cdouble jtprintf("请输入收入的利润:\n")l: scanf("%d",&lr)if(lr<0)//加上大括号 不然goto l会一直执行 { printf("输入有误,请重新输入")goto l} else if(lr>100)//这个地方,如果lr>100那么c=100 在switch里是没有此项的,所以会报错 只要输入不超过100就对的 { c=100s=lr-100} else c=lr/10switch(c)//这个 { case 0:jt=lr*0.1breakcase 1:jt=1.0+(lr-10)*0.075breakcase 2: case 3:jt=1.0+0.75+(lr-20.0)*0.05breakcase 4: case 5:jt=1.0+0.75+1.0+(lr-40.0)*0.03breakcase 6: case 7: case 8: case 9:jt=1+0.75+1+1.2+(lr-60)*0.015break} jt=jt+s*0.01printf("%f",jt)} 不懂的地方追问 追问: s为什么要先赋初值,他到期与不扶植有什么区别 ,后面不是有一个s=lr-100的吗 回答: { c=100s=lr-100} 如果执行的是这个else if 不用 赋值 也不会出错 但是如果执行上面的 s是没有值的所有最后乘以一个不存在的值运行就会报错 追问: 那赋s=0不是更准确吗?,s不 赋值 是不是s的值是乱的 随即产生的数 回答: case 6: case 7: case 8: case 9:jt=1+0.75+1+1.2+(lr-60)*0.015break} jt=jt+s*0.01//如果s=0,jt的值还有什么意义? printf("%f",jt)} 追问: s是超过100的部分 如果没超过100的话jt=jt+s*0.01就是多余的,我是不知道怎么用switch语句对100以上的所有可能操作,所以才加了个if语句针对大于100的情况,可能在switch语句中有你说的c=100不能执行,、这个问题可以作稍微的改变就应该能行 回答: 原题是怎么写的?我帮你写出来?或者改一改?

#include <stdio.h>

#include <stdlib.h>

void main(void)

{

double money,bouns

printf("input the money, input a negitive number to leave:")

do{

scanf("%lf",&money)

if(money<=100000) bouns=money*0.1

else if(money<=200000) bouns=(money-100000)*0.075+100000*0.1

else if(money<=400000) bouns=(money-200000)*0.05+100000*0.075+100000*0.1

else if(money<=600000) bouns=(money-400000)*0.03+200000*0.05+100000*0.075+100000*0.1

else if(money<=1000000) bouns=(money-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1

else if(money>100000) bouns=(money-1000000)*0.01+400000*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1

printf("bouns is %.2lf\n",bouns)

}

while(money>=0)

}

#include <stdio.h>

#include <stdlib.h>

void main(void)

{

double money,bouns

int temp

printf("input the money, input a negitive number to leave:")

do{

scanf("%lf",&money)

temp=money/100000

switch(temp)

{

case 0: bouns=money*0.1break

case 1: bouns=(money-100000)*0.075+100000*0.1break

case 2:

case 3: bouns=(money-200000)*0.05+100000*0.075+100000*0.1break

case 4:

case 5: bouns=(money-400000)*0.03+200000*0.05+100000*0.075+100000*0.1break

case 6:

case 7:

case 8:

case 9: bouns=(money-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1break

default: bouns=(money-1000000)*0.01+400000*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1

}

#include<stdio.h>

void main(){

double num,rate=0.00417,sum=0

int i

scanf("%lf",&num)

while(num<=0){

printf("输入的存款金额必须大于0!\n")

scanf("%lf",&num)

}

for(i=1i<=5i++){

sum=((100+sum)*(1+rate))

}

printf("%.3f\n",sum)

}