Chu279 2021-05-26 13:43 采纳率: 10%
浏览 30

求C语言题目!谢谢 第八题!

求C语言题目!谢谢 第八题!
  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-05-26 15:14
    关注

    第一个图中的都在主函数中实现了。

    第二张图中的要求也做出了修改,代码中有注释,你应该能看明白,具体如下,如有帮助,请采纳一下,谢谢。

    #include <stdio.h>
    #include <stdlib.h>
    #define STU 60  //最多的学生人数
    #define COURSE 3 //考试科目数
    //输入n个学生的3门课成绩
    void input(int score[][COURSE],int n)
    {
    	//1.键盘输入方法
    	for (int i = 0; i < n; i++)
    	{
    		printf("请输入第%d名学生的成绩:",i+1);
    		for (int j = 0; j < COURSE; j++)
    		{
    			scanf("%d",&score[i][j]);
    		}
    		//scanf("%d %d %d",&score[i][0],&score[i][1],&score[i][2]);
    	}
    	//2.随机生成成绩
    	/*for (int i = 0; i < n; i++)
    	{
    		for (int j = 0; j < COURSE; j++)
    			score[i][j] = rand()%100;
    	}*/
    }
    //需要输入学号时
    void input_2(int num[],int score[][COURSE],int n)
    {
    	//1.键盘输入方法
    	for (int i = 0; i < n; i++)
    	{
    		printf("请输入第%d名学生的学号和成绩:",i+1);
    		scanf("%d",&num[i]);
    		for (int j = 0; j < COURSE; j++)
    		{
    			scanf("%d",&score[i][j]);
    		}
    		//scanf("%d %d %d",&score[i][0],&score[i][1],&score[i][2]);
    	}
    	//2.随机生成成绩
    	/*for (int i = 0; i < n; i++)
    	{
    		num[i] = i+1;
    		for (int j = 0; j < COURSE; j++)
    			score[i][j] = rand()%100;
    	}*/
    }
    
    //当学生人数未知时
    void input_3(int num[],int score[][COURSE],int &n)
    {
    	n = 0;
    	while(true)
    	{
    		printf("请输入第%d名学生的学号和成绩:",n+1);
    		scanf("%d",&num[n]);
    		if (num[n] < 0)
    		{
    			break;
    		}
    		for (int j = 0; j < COURSE; j++)
    		{
    			scanf("%d",&score[n][j]);
    		}
    		n++;
    	}
    }
    
    
    //计算每个学生的平均分
    void averforstu(int score[][COURSE],float aver[],int n)
    {
    	for (int i = 0; i < n; i++)
    	{
    		int sum = 0;
    		for (int j = 0;j < COURSE;j++)
    		{
    			sum += score[i][j];
    		}
    		aver[i] = sum;
    	}
    }
    //输出n个学生的3门课成绩和个人平均分
    void output(int score[][COURSE],float aver[],int n)
    {
    	printf("            程序设计    英语    数学    平均分\n");
    	for (int i = 0; i < n; i++)
    	{
    		printf("第%d个学生       %d       %d      %d      %.2f\n",i+1,score[i][0],score[i][1],score[i][2],aver[i]);
    	}
    }
    
    int main()
    {
    	int score[STU][COURSE];
    	float aver[STU];
    	float averC[COURSE];   //每门课的平均分
    	int num[STU];          //存储学生的学号
    
    	int n = 3;  //学生人数
    	//(1)
    	input(score,n);
    	//(2)
    	averforstu(score,aver,n);
    	//(3)
    	output(score,aver,n);
    
    	//计算每门课的平均分
    	for (int i = 0; i < COURSE; i++)
    	{
    		averC[i] = 0.0;
    		for (int j = 0; j < n; j++)
    		{
    			averC[i] += score[i][j];
    		}
    		averC[i] = averC[i] / COURSE;
    	}
    	
    	//如果需要输入学生的学号,input函数需要修改一下,增加一个参数
    	//void input_2(int num[],int score[][COURSE],int n);
    	//学号录入用%d即可
    
    	//当学生人数未知时,input修改如下
    	//void input_3(int num[],int score[][COURSE],int &n);
    	getchar();
    	getchar();
    	return 0;
    }
    评论

报告相同问题?