问答详情
源自:6-12 综合练习

有大神告诉我下我这代码哪里错了吗

#include <stdio.h>
int all(int score[])
{
   int i;
   int sum=0;
   for(i=0;i<10;i++)
   {
       sum+=score[i];
   }
   return sum;
}
int most(int score)
{
    int i,j;
    for(i=8;i>=0;i--)
    {
        for(j=0;j<=i;j++)
        {
            if(score[j]>score[j+1])
            {
                int temp;
                temp=score[j+1];
                score[j+1]=score[j];
                score[j]=temp;
            }
        }
    }
    printf("排列之后顺序为\n");
    for(i=0;i<10;i++)
    {
        if(i!=9)
        printf("%d,",arr[i]);
        else
        printf("%d",arr[i]);
    }
    printf("最低分为%d",arr[1]);
    printf("最高分为%d",arr[9]);
}
int main()
{
    int score[N]={67,98,75,63,82,79,81,91,66,84};
    most();
    printf("考试总分为%d,平均分为%d",(all),(all)/10);
    return 0;
}

提问者:拎着自己飞呀 2017-11-05 21:41

个回答

  • 岚丨澜
    2017-11-06 13:09:34
    已采纳

    你的程序本身有几个问题,首先,你在定义函数的时候score后面没有中括号[],这样后面 你打score[i]他会提示找不到指针(编译报错说的,我也不懂);其次,你在定义得到most函数中用了未定义的arr[];再次,你most函数中第一个for循环条件写错“;”写成“,”;还有你输出总分和平均分的时候用的方式不对,你用(all)他会输出all的ASCLL码(我也不清楚,反正输出一串不相干的数,应该是这样),所以我用了定义值得方式;哦还有,你不等号打错了;这些是程序本身的问题,还有就是输出问题,降序排列score[j]<score[j+1]才执行换位,最小的是score[9],最大的是score[0],嗯,应该就这些吧=-=。

  • 岚丨澜
    2017-11-07 14:25:07

    这是我做这道题时敲的代码。

  • 岚丨澜
    2017-11-07 14:23:35

    #include <stdio.h>
    int i,j;
    int sum,num;
    int main()
    {
        int score[10]={67,98,75,63,82,79,81,91,66,84};
        for(i=9;i>=0;i--)
        {
            for(j=0;j<=i;j++)
            {
                if(score[j]<score[j+1])
                {
                    int tamp;
                    tamp=score[j];
                    score[j]=score[j+1];
                    score[j+1]=tamp;
                }
            }
        }
        printf("成绩降序排序为\n");
        for(i=0;i<10;i++)
        {
            printf("%d ",score[i]);
            sum+=score[i];
        }
        num=sum/10;
        printf("\n成绩总分为\n%d",sum);
        printf("\n成绩平均分为\n%d",num);
        printf("\n成绩最高分和最低分分别为\n%d,%d",score[0],score[9]);
        return 0;
    }


  • 岚丨澜
    2017-11-07 13:50:33

    我也是才自学入门的,一起努力吧

  • 岚丨澜
    2017-11-07 13:49:26

    你看看你复制粘贴的时候出了什么问题吧,还有我把sum和num定义在函数外表示他们俩是全局变量,如果定义在定义的函数里,输出的时候它会显示找不到sum和num的值

  • 岚丨澜
    2017-11-07 13:47:30

    http://img.mukewang.com/5a01486a0001a39808610468.jpghttp://img3.mukewang.com/5a0148cd00018f4a11720483.jpg我用慕课网和vs2013都没问题啊

  • 岚丨澜
    2017-11-06 12:06:52

    #include <stdio.h>
    int num;
    int sum = 0;
    int all(int score[])
    {
    	int i;
    	for (i = 0; i < 10; i++)
    	{
    		sum += score[i];
    	}
    	num = sum / 10;
    	return sum;
    }
    int most(int score[])
    {
    	int i, j;
    	for (i = 9;i>=0; i--)
    	{
    		for (j = 0; j <= i; j++)
    		{
    			if (score[j] <score[j+1])
    			{
    				int temp;
    				temp = score[j+1];
    				score[j+1] = score[j];
    				score[j] = temp;
    			}
    		}
    	}
    	printf("排列之后顺序为\n");
    	for (i = 0; i < 10; i++)
    	{
    		if (i!=9)
    			printf("%d,", score[i]);
    		else
    			printf("%d", score[i]);
    	}
    	printf("最低分为%d", score[9]);
    	printf("最高分为%d", score[0]);
    }
    int main()
    {
    	int score[10]={67,98,75,63,82,79,81,91,66,84};
    	most(score);
    	all(score);
    	printf("考试总分为%d,平均分为%d",sum,num);
    	return 0;
    }