严凯 发表于 2020-12-10 10:25:29

算法

#include<stdio.h>
int main()
{
        int n,a[]={0},i,f=0,g=0;
        float c=0,d=0,y,k;
        scanf("%d",&n);    //输入有几个成绩
        for(i=0;i<n;i++)
        {
                scanf("%d",&a);   //输入成绩
        getchar();   //吸收回车
        }
        a='\0';
        for(i=0;i<n;i++)
        {
                if(a>=60)
                {
                f++;    //及格数
                }
                if(a>=85)
                {
                        g++;    //优秀数
                }
        }
        c=(float)f/n;//及格率
        d=(float)g/n;//优秀率
        y=c*1000;    //将小数转变成整数
        k=d*1000;    //同上
        printf("%2.0f%\n",y);       //输出两位整数且不带小数
        printf("%2.0f%\n",k);       //同上   
        return 0;
}








//题目的要求是,先用一行来输入n(人数),然后每一行输入一个数表示其中一个人的成绩,然后输入及格率xx%(比如85%),优秀率xx%(69%)

严凯 发表于 2020-12-10 10:26:13

我的问题在于,我输入n为7,然后下面七行,每一行输入了一个数,然后没有反应

心驰神往 发表于 2020-12-10 10:46:33


int n,a[]={0},i,f=0,g=0;
      float c=0,d=0,y,k;
      scanf("%d",&n);
改成
int n,i,f=0,g=0;
      float c=0,d=0,y,k;
      scanf("%d",&n);
       inta;
试试

严凯 发表于 2020-12-10 11:08:28

心驰神往 发表于 2020-12-10 10:46

int n,a[]={0},i,f=0,g=0;
      float c=0,d=0,y,k;


不行,会报错,系统说a【n】必须要是含有常量的表达式

心驰神往 发表于 2020-12-10 11:11:38

本帖最后由 心驰神往 于 2020-12-10 11:20 编辑

严凯 发表于 2020-12-10 11:08
不行,会报错,系统说a【n】必须要是含有常量的表达式

我用的Devc++可以,有截图吗

严凯 发表于 2020-12-10 11:20:08

我这个2010vc++学习版不行,这个动态数组不行

心驰神往 发表于 2020-12-10 11:23:12

行吧

严凯 发表于 2020-12-10 11:23:43

来个人吧,我不行了{:10_285:}

xieglt 发表于 2020-12-10 11:57:39

动态分配数组,包含头文件 #include <stdlib.h>

      int n,i,f=0,g=0;
      int *a = 0;
      float c=0,d=0,y,k;
      scanf("%d",&n);    //输入有几个成绩
      a = (int *)malloc(n*sizeof(int));
      ....
      free(a);

严凯 发表于 2020-12-10 13:44:58

顶一下顶一下怎么没有人来呀

jitianmoshen 发表于 2020-12-10 14:04:59

本帖最后由 jitianmoshen 于 2020-12-10 14:07 编辑

严凯 发表于 2020-12-10 13:44
顶一下顶一下怎么没有人来呀

用楼上的malloc方法啊,VS系列都不支持变长数组(VLA),而且变长数组不安全

严凯 发表于 2020-12-10 14:21:02

jitianmoshen 发表于 2020-12-10 14:04
用楼上的malloc方法啊,VS系列都不支持变长数组(VLA),而且变长数组不安全

现在不是变长数组的问题,你看看我的源程序,为什么没有输出

jitianmoshen 发表于 2020-12-10 14:48:47

#include<stdio.h>
int main()
{
    int n,a,i,f=0,g=0;
    float c=0,d=0,y,k;
    scanf("%d",&n);    //输入有几个成绩
    for(i=0;i<n;i++)
    {
      scanf("%d",&a);   //输入成绩
    }
    for(i=0;i<n;i++)
    {
      if(a>=60)
      {
      f++;    //及格数
      }
      if(a>=85)
      {
            g++;    //优秀数
      }
    }
    c=(float)f/n;//及格率
    d=(float)g/n;//优秀率
    y=c*100;    //将小数转变成整数
    k=d*100;    //同上
    printf("%2.0f%%\n",y);       //输出%要输入两个连续的%%
    printf("%2.0f%%\n",k);       //同上   
    return 0;
}

严凯 发表于 2020-12-10 14:52:25

jitianmoshen 发表于 2020-12-10 14:48


漂亮!谢谢,但是我的代码和你的代码到底是因为哪里不同而结果不同

jitianmoshen 发表于 2020-12-10 14:57:00

严凯 发表于 2020-12-10 14:52
漂亮!谢谢,但是我的代码和你的代码到底是因为哪里不同而结果不同

int a,你的a[] = {0},数组长度没有定义,

严凯 发表于 2020-12-10 15:01:02

当时,我觉得,我这个没有定义应该没有事,我后面有一个a='\0',但是为什么不行
页: [1]
查看完整版本: 算法