c语言程序设计苏小红版第七章课后实验答案

c语言程序设计苏小红版第七章课后实验答案,第1张

不知道你说的是不是这一次实验

227  实验7:二维数组和函数综合编程练习

成绩排名次

某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:

(1)计算每个学生的总分和平均分;

(2)按总分成绩由高到低排出成绩的名次;

(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;

(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

思考题  请读者思考如下问题。

① 如果增加一个要求:要求按照学生的学号由小到大对学号、成绩等信息进行排序,那么程序如何修改呢?

② 如果要求程序运行后先打印出一个菜单,提示用户选择:成绩录入、成绩排序、成绩查找,在选择某项功能后执行相应的 *** 作,那么程序如何修改呢?

答案

#include  <stdioh>

#define STU 30

#define COURSE 3

void Input(long num[],int score[][COURSE],int n);

void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);

void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);

void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);

int  Search(long num[], int n, long x);

main()

{

int n, score[STU][COURSE], sum[STU], pos;

long num[STU], x;

float aver[STU];

printf("Please enter the total number of the students(n<=30):");

scanf("%d", &n); /输入参加考试的学生人数/

printf("Enter No and score as: MT  EN  PH\n");

Input(num, score, n); /输入学生成绩/

GetSumAver(score, n, sum, aver); /计算总分和平均分/

printf("Before sort:\n");

Print(num, score, n, sum, aver);

Sort(num, score, n, sum, aver); /排名次/

printf("After sort:\n");

Print(num, score, n, sum, aver);

printf("Please enter searching number:");

scanf("%ld", &x); /以长整型格式输入待查找学生的学号/

pos = Search(num, n, x); /名次查询/

if (pos != -1)

{

printf("position:\t  NO \t  MT \t  EN \t  PH \t  SUM \t AVER\n");

printf("%8d\t%4ld\t%4d\t%4d\t%4d\t%5d\t%50f\n",

    pos+1,num[pos], score[pos][0],score[pos][1],

    score[pos][2], sum[pos],aver[pos]);

}

else

{

printf("Not found!\n");

}

}

/ 函数功能:输入某班学生期末考试三门课程成绩

 函数参数:长整型数组num,存放学生学号

           整型数组score,存放学生成绩

   整型变量n,存放学生人数

 函数返回值:无

/

void Input(long num[], int score[][COURSE], int n)

{

int  i, j;

for (i=0; i<n; i++)

{

scanf("%ld", &num[i]);

for (j=0; j<COURSE; j++)

{

scanf("%d", &score[i][j]);

}

}

}

/ 函数功能:计算每个学生的总分和平均分

 函数参数: 整型数组score,存放学生成绩

    整型变量n,存放学生人数

整型数组sum,计算得到的每个学生的总分

实型数组aver,计算得到的每个学生的平均分

 函数返回值:无

/

void GetSumAver(int score[][COURSE], int n, int sum[], float aver[])

{

int i, j;

for (i=0; i<n; i++)

{

sum[i] = 0;

for (j=0; j<COURSE; j++)

{

sum[i] = sum[i] + score[i][j];

}

aver[i] = (float)sum[i] / COURSE;

}

}

/ 函数功能:按总分成绩由高到低排出成绩的名次

 函数参数:长整型数组num,存放学生学号

           整型数组score,存放学生成绩

整型变量n,存放学生人数

整型数组sum,存放每个学生的总分

实型数组aver,存放每个学生的平均分

 函数返回值:无

/

void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[])

{

int i, j, k, m;

int temp1;

long temp2;

float temp3;

for (i=0; i<n-1; i++)

{

k = i;

for (j=i+1; j<n; j++)

{

if (sum[j] > sum[k])  k = j;

}

if (k != i)

{

temp1 = sum[k];  sum[k] = sum[i];  sum[i] = temp1;

temp2 = num[k];  num[k] = num[i];  num[i] = temp2;

temp3 = aver[k];  aver[k] = aver[i];  aver[i] = temp3;

for (m=0; m<COURSE; m++)

{

temp1 = score[k][m];

score[k][m] = score[i][m];

score[i][m] = temp1;

}

}

}

}

/ 函数功能: 打印名次表,表格内包括学生编号、各科分数、总分和平均分

 函数参数: 长整型数组num,存放学生学号

整型数组score,存放学生成绩

整型变量n,存放学生人数

整型数组sum,存放每个学生的总分

实型数组aver,存放每个学生的平均分

 函数返回值:无

/

void Print(long num[], int score[][COURSE], int n,

int sum[], float aver[])

{

int  i, j;

printf("  NO \t|   MT \t  EN \t PH \t SUM \t AVER\n");

printf("----------------------------------------------------\n");

for (i=0; i<n; i++)

{

printf("%ld\t| ", num[i]);

for (j=0; j<COURSE; j++)

{

printf("%4d\t", score[i][j]);

}

printf("%5d\t%50f\n", sum[i], aver[i]);

}

}

/ 函数功能:在学号数组中顺序查找学生的学号

 函数参数:长整型数组num,存放学生学号

           整型变量n,存放学生人数

长整型变量x,存放待查找学生的学号

 函数返回值:找到时,返回学生学号在学号数组中的下标位置,否则返回值-1

/

int Search(long num[], int n, long x)

{

int  i;

for (i=0; i<n; i++)

{

if (num[i] == x)  return(i);

}

return (-1);

}

cpp : Defines the entry point for the console application

//

#include "stdafxh"

#include <windowsh>

#include <stdioh>

#include <malloch>

#include <winbaseh>

#include <processh>

void Search()

{

char temp[100];

char buffer[2];

char result[100];

printf("请输入要查询的单词:\n");

scanf("%s",&temp);

buffer[0]=temp[0];

buffer[1]='\0';

int ret=GetPrivateProfileString(buffer,temp,0,result,100,"/dateini");

if(ret>0)

printf("%s\n\n\n\n\n",result);

else

printf("对不起,没有您要查找的单词\n\n\n\n\n");

}

void InsertItem()

{

char temp[100];

char buffer[2];

char result[100];

printf("请输入要插入的单词:\n");

scanf("%s",&temp);

printf("请输入单词的解释:\n");

getchar();

scanf("%s",&result);

buffer[0]=temp[0];

buffer[1]='\0';

int ret=WritePrivateProfileString(buffer,temp,result,"/dateini");

if(ret=0)

printf("插入失败。\n\n\n\n\n");

else

printf("插入成功。\n\n\n\n\n");

}

int main(int argc, char argv[])

{

int index;

main:

printf("MENU\n\n");

printf(" 1 英译汉\n");

// printf("2 汉译英\n");

printf(" 2 插入新的词条\n");

// printf(" 3 删除已有词条\n");

printf(" 3 清空屏幕\n");

printf(" 4 退出\n\n");

printf("\n");

do{

printf("请选择 *** 作(1~4):\n");

scanf("%d",&index); /输入选择项/

}while(index<0||index>5); /选择项不在0~4之间重输/

switch(index)

{

case 1:

Search();

goto main;

break;

case 2:

InsertItem();

goto main;

break;

case 3:

system("cls");

goto main;

break;

case 4:

return 0;

break;

default:

break;

}

return 0;

}

输出:

MENU

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

请选择 *** 作(1~4):

1

请输入要查询的单词:

bad

adj 劣质的,有害的,坏的,不利的,不健康的,严重的

MENU

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

请选择 *** 作(1~4):

2

请输入要插入的单词:

cat

请输入单词的解释:

插入成功。

MENU

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

请选择 *** 作(1~4):

1

请输入要查询的单词:

cat

MENU

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

请选择 *** 作(1~4):

4

Press any key to continue

以上就是关于c语言程序设计苏小红版第七章课后实验答案全部的内容,包括:c语言程序设计苏小红版第七章课后实验答案、c语言程序设计(第二版)张磊版课后答案、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9418049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存