回 帖 发 新 帖 刷新版面

主题:c高手请进~

题目是这个:
企业发放的奖金根据利润提成,利润1)低于或等于10万元时,奖金可提10%;2)利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元部分,可提成7.5%;3)20万到40万之间时,高于20万元的部分,可提成5%;4)40万到60万之间时,高于40万元的部分,可提成3%;5)60万到100万之间时,高于60万元的部分,可提成1.5%;6)超过100万元的部分按1%提成,从键盘上输入当月的利润,求应发放奖金总数。编程循环6次,输入上述6组不同范围的数据并求结果,将输入的6组数据和计算结果输出到文件OUT2.DAT中

代码是如下:
#include "stdio.h"

void writeData(int arr[],int n)
{
    FILE *p;
    int i;
    p=fopen("out2.dat","w");
    for(i=0;i<n;i++)
      {
      fprintf(p,"%d ",arr[i]);
      if((i+1)%10==0)
        fprintf(p,"\n");    
      }    
    fclose(p);
}

#include<stdio.h>
main()
{
    long int i;
    int n=0;
    int count=0;
    double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    double bon[6];
    while(n<6)
        {
        printf("请输入当月利润:");
        scanf("%ld",&i);
        bonus1=100000*0.1;
        bonus2=bonus1+100000*0.75;
        bonus4=bonus2+200000*0.5;
        bonus6=bonus4+200000*0.3;
        bonus10=bonus6+400000*0.15;
        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("应发放奖金总数 %.2f\n",bonus);
        n++;
        bon[count++]=bonus;
        writeData(bon,count);
        }
    printf("Output Finished!");
}
代码没错,可是输出的时候,out2.dat里面的东西不是我们输入的和计算出来的提成呀,怎么解决?

回复列表 (共2个回复)

沙发


#include <stdio.h>
#include <string.h>

void writeData(int test[],double arr[],int n)
{
    FILE *p;
    int i;
    p=fopen("out2.dat","w");
    for(i=0;i<n;i++)
    {
        char arrbuf[16] = {0},writebuf[512] = {0};
        sprintf(arrbuf,"%.2f",arr[i]);
        sprintf(writebuf,"当月利润:%d  应发放奖金:%s\n",test[i],arrbuf);
        fwrite(writebuf,sizeof(writebuf),1,p);
    }    
    fclose(p);
}

#include<stdio.h>
main()
{
    long int i;
    int n=0;
    int count=0;
    double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    double bon[6];
    int test[6];
    while(n<6)
    {
        printf("请输入当月利润:");
        scanf("%ld",&i);
        bonus1=100000*0.1;
        bonus2=bonus1+100000*0.75;
        bonus4=bonus2+200000*0.5;
        bonus6=bonus4+200000*0.3;
        bonus10=bonus6+400000*0.15;
        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("应发放奖金总数 %.2f\n",bonus);
        test[n] = i;
        n++;
        bon[count++]=bonus;
    }
    writeData(test,bon,count);
    printf("Output Finished!");
}

板凳

...............

我来回复

您尚未登录,请登录后再回复。点此登录或注册