大一求教编程题

题目描述

你们的助教CorpseCorpse由于平时摸鱼太多,总是不能早早地完成作业,这件事情被mymy学姐发现了,她为了督促CorpseCorpse好好学习想统计一下CorpseCorpse交作业的情况,mymy学姐知道统计这种重复性工作用电脑来做再方便不过了,她想请你设计一个程序帮她进行统计。

输入
共两行。

第一行,一个正整数n,表示CorpseCorpse总共需要交作业的次数。

第二行,n个整数x0,x1……xn−1,表示CorpseCorpse每次交作业距离ddl的天数(正整数,例如1,表示提前上交了1天;负整数,例如-3,表示在ddl之后3天才交上作业;0,表示正好在ddl当天交上了作业)。

输出
如果CorpseCorpse准时(包括提前)交作业的次数大于等于总次数的90%,则输出一行一个浮点数(保留两位小数,四舍五入),表示他交作业(包括每一次)的平均提前的时间。

如果CorpseCorpse准时(包括提前)交作业的次数小于总次数的90%大于等于总次数的50%,则输出一行一个正百分数(保留整数,向下取整),表示他准时交作业的次数的比例。

如果CorpseCorpse晚交作业的次数比例大于50%,则输出三行,第一行“My, please help Corpse!”(输出不包含引号),第二行一个正百分数(保留整数,向下取整),表示他晚交作业的次数的比例,第三行一个负浮点数(保留两位小数,四舍五入),表示他晚交作业的这些次晚交的平均天数。

题目来源及自己的思路

相关代码

include<stdio.h>

include<math.h>

int main(){

int n;
scanf("%d",&n);
int a=0;
int x[n];
double t;
double b;
for(a=0;a<n;a++){
      scanf("%d",&x[a]);
 }
for(a=0;a<n;a++){
    if(x[a]>=0) t++;
 }
b=t/n;
if(b>=0.9){
      double xt;
      for(a=0;a<n;a++){
        xt+=x[a];
    }
      xt=xt/n;
      xt=(int)(xt*100+0.5);
      xt=(double)(xt)/100;
      printf("%.2f",xt);
 }
else if(b>=0.5&&b<0.9){
      double yt;
      yt=100*(t/n);
      printf("%d%%",yt);
 }
else if(b<0.5){
    printf("My, please help Corpse!\n");
      double zt;
      n=(double)n;
      zt=100*(n-t)/n;
     printf("%d%%\n",zt);
     double lt;
     int z;
     for(a=0;a<n;a++){
         if(x[a]<0){
             lt+=x[a];
             z++;
        }
    }
    lt=lt/z;
      lt=(int)(lt*100-0.5);
      lt=(double)lt/100;
      printf("%.2f\n",lt);
 }
return 0;

}

你期待的结果是什么?实际看到的错误信息又是什么?

为什么不管输什么都不输出任何东西?

阅读 1.9k
2 个回答

t是不是少了个初始值0

因为你的n是整数。你给他变成浮点型吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题