C语言程序设计 案例学习:计算平均成绩
c语言输入10个同学的成绩总分和平均值

c语言输入10个同学的成绩总分和平均值C语言输入10个同学的成绩总分和平均值一、前言在学习编程语言的过程中,C语言是一个非常基础且重要的语言。
在C 语言中,输入输出是非常基础的内容之一,学会如何输入和处理数据是我们学习编程的第一步。
本文将以输入10个同学的成绩总分和平均值为题,深入探讨C语言中的输入输出操作,并共享我对这个主题的个人理解。
二、基本概念在C语言中,我们可以通过scanf()函数来实现数据的输入。
scanf()函数是一个输入函数,可以将用户输入的数据存储到指定的变量中。
在本题中,我们需要输入10个同学的成绩,分别存储到不同的变量中。
三、具体操作在C语言中,我们可以使用循环来反复输入数据,以实现输入10个同学的成绩。
我们需要定义一个数组来存储这10个同学的成绩,然后通过循环依次输入每个同学的成绩。
我们可以使用循环再次遍历数组,求得这10个同学的成绩总和。
通过平均值公式,我们可以求得这10个同学的成绩平均值。
四、代码示例```c#include <stdio.h>int main() {int scores[10];int sum = 0;double average = 0.0;// 输入10个同学的成绩for (int i = 0; i < 10; i++) {printf("请输入第%d个同学的成绩:", i + 1);scanf("%d", &scores[i]);}// 计算成绩总和for (int i = 0; i < 10; i++) {sum += scores[i];}// 计算平均值average = (double) sum / 10;// 输出成绩总和和平均值printf("这10个同学的成绩总和为:%d\n", sum);printf("这10个同学的成绩平均值为:%.2f\n", average);return 0;}```五、总结回顾通过以上的代码示例,我们了解了如何在C语言中输入10个同学的成绩总分和平均值。
编程从键盘输入10个学生的成绩,输出平均成绩和低于平均分的学生成绩。

从编程键盘输入10个学生的成绩,输出平均分和低于平均分的。
从编程键盘输入10个学生的成绩,输出平均分和低于平均分的。
1#include <stdio.h>int main(){double score[10];inti;for(i=0;i<10;i++)scanf("%lf",&score[i]);for(i=0;i<10 ;i++)if(score[i] < 60)printf("%g ",score[i]);return 0;}从编程键盘输入10个学生的成绩,输出平均分和低于平均分的。
2#include<stdio.h>void main(){int nscore[10]={0};inti,j,ntemp;for(i=0;i<10;i++){scanf("%d",&nscore[i]);}/*冒泡法排序*/for(i=0;i<10;i++){for(j=0;j<10-i-1;j++){if(nscore[j]<nscore[j+1]) /*两两比较,小的放后放,一次循环后最小数在最后*/{ntemp=nscore[j];nscore[j]=nscore[j+1];nscore[j+1]=n temp;}}}printf("由大到小排列为:\n")for(i=0;i<10;i++){printf("%d",nscore[i]);}printf("\n");}从编程键盘输入10个学生的成绩,输出平均分和低于平均分的。
3这个可以使用冒泡法做!从编程键盘输入10个学生的成绩,输出平均分和低于平均分的。
4#include <stdio.h>#define max 10struct student {char no[10];char name[10];float score[3];}stu[max];float ave_course[3] = {0};float ave_student[max] = {0};int max_ave_i = 0; 存储平均分最高的学生索引intmax_course_i[3] = {0}; 存储单科分数,最高的学生索引录入学生成绩void input(int n) {int i;for(i=0; i<n; i++) {scanf("%s %s",stu[i].no,stu[i].name);scanf("%f %f %f",&stu[i].score[0], &stu[i].score[1],&stu[i].score[2]);}}计算平均成绩void average(intn){int i,j;float max_ave = 0.0f;float max_course[3] = {0};计算每门课的平均成绩for(i=0; i<n; i++) {for(j=0; j<3; j++) {ave_course[j] +=stu[i].score[j];if(max_course[j]<stu[i].score[j]){max_ course[j]<stu[i].score[j];max_course_i[j] =i;}}}for(j=0; j<3; j++) {ave_course[j] /= n;}计算每个学生的平均成绩for(i=0; i<n; i++) {for(j=0; j<3; j++) {ave_student[i] += stu[i].score[j];}ave_student[i] /= 3;if(max_ave < ave_student[i]) {max_ave =ave_student[i];max_ave_i = i;}}}void main () {inti,j;printf("请输入学生的学号姓名语文数学英语");input(max);average(max);printf("\n课程的平均成绩是: %6.2f %6.2f %6.2f\n",ave_course[0],ave_course[1],a ve_course[2]);printf("\n学生的平均成绩是:\n");for(i=0; i<max; i++) {printf(" %s %s %6.2f\n", stu[i].no, stu[i].name, ave_student[i]);}printf("平均分,最高的学生:\n");printf(" 学号=%s, 姓名=%s, 平均分=%6.2f:\n", stu[max_ave_i].no, stu[max_ave_i].name,ave_student[max_ave_i]);printf("语文,最高分的学生:\n");i=max_course_i[0];printf(" 学号=%s, 姓名=%s, 成绩=%6.2f:\n", stu[i].no, stu[i].name,stu[i].score[0]);printf("数学,最高分的学生:\n");i=max_course_i[1];printf(" 学号=%s, 姓名=%s, 成绩=%6.2f:\n", stu[i].no, stu[i].name,stu[i].score[1]);printf("英语,最高分的学生:\n");i=max_course_i[2];printf(" 学号=%s, 姓名=%s, 成绩=%6.2f:\n", stu[i].no, stu[i].name,stu[i].score[2]);getchar();getchar();}从编程键盘输入10个学生的成绩,输出平均分和低于平均分的。
用键盘输入10名学生的成绩,显示其中的最低分,最高分及平均成绩,要求利用指标.

用键盘输入10名学生的成绩,显示其中的最低分,最高分及平均成绩,要求利用指标.用键盘输入10名学生的成绩,显示其中的最低分,最高分及平均成绩,要求利用指标.#include<stdio.h>void main(){int a[10],i,max,min,sum=0;for(i=0;i<10;i++){printf("\n请输入学生成绩:");scanf("%d",&a[i]);}max=min=a[0];for(i=0;i<10;i++){ if(a[i]>max)max=a[i];else if(a[i]<min)min=a[i];sum+=a[i];}printf("\n最高分=%d最低分=%d平均分=%.2f\n",max,min,sum/10.0);}用VB程式设计输入10名学生某一门课的成绩,求出其中的最高分,最低分和所有学生的平均分.Option Base 1Dim score(10) As IntegerDim max As Integer, min As Integer, average As SinglePrivate Sub Form_Load()For i = 1 To 10score(i) = Val(InputBox("请输入第 " & Str(i) & "个学生的成绩","成绩统计", ""))Text1.Text = Text1.Text & Str(score(i))Next is = 0: max = score(1): min = score(1)For i = 1 To 10If score(i) > max Then max = score(i)If score(i) < min Then min = score(i)s = s + score(i)Next iaverage = s / 10Text2.Text = maxText3.Text = Format(average, "0.00")Text4.Text = minEnd Sub通过键盘输入10名学生的c语言成绩,输出最高分与最低分#include <stdio.h>#define N 10int main(){ int i, j, tmp, a[N]= {0}; printf("请输入10名学生C语言成绩(空格隔开):\n");for(i = 0 ; i < N; i++) scanf("%d", &a[i]); for(i = 0 ; i < N-1;i++) { for(j = 0; j < N-i-1; j++) { if(a[j] < a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } printf("%d %d\n", a[0], a[9]); return 0;}定义一个包含10个元素的整型阵列存10名学生的成绩从键盘输入阵列元素显示其中的最低分最高分及平均分并输#include <stdio.h>int main(){int value[10],*p,high=0,low=0,average=0,i;p = value;for(i=0; i<10; i++){scanf("%d",&value[i]);if(i==0)high=low=value[i];else{if(value[i] > high)high = value[i];if(value[i] < low)low = value[i];}average+=value[i];p++;}average/=10;printf("high:%d low:%d average:%d\n",high,low,average);}VB程式设计求100个学生的平均成绩,最高分,最低分X = Val(InputBox("输入学生成绩"))Max = XMin = XS = XFor i = 2 To 100X = Val(InputBox("输入学生成绩"))If Max < X Then Max = XIf Min > X Then Min = XS = S + XNextPrint "平均成绩"; S / 100Print "最高分"; MaxPrint "最低分"; Min输入10个同学的成绩输出其中的最高分和最低分(用C语言)这个很容易的啊,我很久没写C的了,只能告诉你流程定义一个数组,长度10,然后输入分数,对阵列进行排序,阵列第一个和最后一个就是你要的结果了使用一维阵列,输入10名学生的成绩,找出最高分和最低分#include<stdio.h>int max(int stu[10]) {int tem = 0;int i = 0;for(i = 0; i < 10; i++) {if(stu[i] >= stu[i+1])tem = stu[i];}return tem;}int min(int stu[10]) {int tem = 0;int i = 0;for(i = 0; i < 10; i++) {if(stu[i] < stu[i+1])tem = stu[i];}return tem;}int main() {int maxs,mins = 0;int stu[10] = {10,22,33,44,55,66,77,88,99,100}; 初始化之际弄maxs = max(stu);mins = min(stu);printf("max:%d min:%d\n",maxs,mins);return 0;}c语言——利用指标法,输入10个学生每人5门课的成绩,利用函式找到每门课的最高分和最低分# include <stdio.h># include <stdlib.h>float maxMark(float *q){float max;int i;max=q[0];for(i=1;i<5;i++){if (q[i]>max) max=q[i];}return max;}float minMark(float *q)float min;int i;min=q[0];for(i=1;i<5;i++){if (q[i]<min) min=q[i];}return min;}void main(){int i,j;float *q;float a[10][5],max,min,Mark[5][10]; for(i=0;i<10;i++){printf("第%d个学生\n",i+1);for(j=0;j<5;j++){printf("第%d门成绩:",j+1); scanf("%f",&a[i][j]);}}for(j=0;j<10;j++)for(i=0;i<5;i++){Mark[i][j]=a[j][i];}for(i=0;i<5;i++)q=Mark[i];max=maxMark(q);printf("第%d门成绩的最大值为:%0.2f\n",i+1,max);}for(i=0;i<5;i++){q=Mark[i];min=minMark(q);printf("第%d门成绩的最小值为:%0.2f\n",i+1,min);}}这次修改的完全正确了python完成程式输入m个成绩,输出最高分最低分平均成绩python完成程式输入m个成绩,输出最高分最低分平均成绩grades = []min_grade = Nonemax_grade = Nonesum_grade = 0.0m = int(raw_input("Input m: "))for i in range(m):grade = float(raw_input("Input grade %s: " % i))grades.append(grade)sum_grade += gradeif not min_grade or grade < min_grade:min_grade = gradeif not max_grade or grade > max_grade:max_grade = gradeave_grade = sum_grade / mprint "Max grade:", max_gradeprint "Min grade:", min_gradeprint "Average grade:", ave_gradeC语言设计一个班级20名学生姓名及成绩的输入输出,计算平均成绩,求最高分,最低分#include "stdio.h"main(){float student[20],ave,sum=0,max=0,min=100;int i;for(i=0;i<20;i++){printf("input %dth score:",i+1);scanf("%f",&student[i]);if(student[i]>max)max=student[i];if(student[i]<min)min=student[i];sum+=student[i];}ave=sum/20;printf("ave=%f,max=%f,min=%f\n",ave,max,min);}。
c语言编程计算班级成绩平均分

以下是使用C 语言计算班级成绩平均分的示例代码:
#include <stdio.h>
int main() {
int n, i;
float sum = 0, avg;
printf("请输入班级人数:");
scanf("%d", &n);
float score[n];
printf("请输入%d个学生的成绩:\n", n);
for (i = 0; i < n; i++) {
scanf("%f", &score[i]);
sum += score[i];
}
avg = sum / n;
printf("平均分为:%.2f\n", avg);
return 0;
}
代码说明:
1. 首先使用`scanf` 函数从标准输入中读取班级人数`n`。
2. 定义一个长度为`n` 的浮点数数组`score`,用于存储学生的成绩。
3. 使用`for` 循环读取每个学生的成绩,并累加到`sum` 变量中。
4. 计算平均分,存储在`avg` 变量中。
5. 使用`printf` 函数输出平均分,保留两位小数。
6. 最后返回0,表示程序正常结束。
C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
c语言中average求平均值算法

c语言中average求平均值算法C语言中的average求平均值算法平均值,也称为平均数,是一组数据中各个数值的总和除以数据个数得到的值。
在C语言中,我们可以使用一种简单而有效的算法来计算平均值。
本文将介绍这个算法,并详细解释其原理和实现方法。
算法原理求平均值的算法原理很简单:将一组数据中所有数值相加,然后除以数据的个数。
用数学公式表示就是:平均值 = (数据1 + 数据2 + ... + 数据n) / n其中,数据1、数据2、...、数据n表示一组数据中的各个数值,n 表示数据的个数。
算法实现下面我们来实现一个简单的C语言函数来计算平均值。
假设我们有一个整数数组arr,大小为n,表示一组整数数据。
函数的返回值为平均值。
```cdouble average(int arr[], int n){int sum = 0;for (int i = 0; i < n; i++) {sum += arr[i];}return (double)sum / n;}```在这个函数中,我们首先定义一个变量sum并初始化为0,用于存储数据的总和。
然后使用for循环遍历数组arr,将每个数值累加到sum中。
最后,我们将sum除以n并强制转换为double类型,以保证返回值为浮点数。
示例代码为了更好地理解算法的实现,下面是一个完整的示例代码,其中包含了主函数和调用average函数的代码:```c#include <stdio.h>double average(int arr[], int n){int sum = 0;for (int i = 0; i < n; i++) {sum += arr[i];}return (double)sum / n;}int main(){int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);double avg = average(arr, n);printf("平均值为: %.2lf\n", avg);return 0;}```在这个示例代码中,我们定义了一个包含5个整数的数组arr,并将其传递给average函数,同时传递数组的大小n。
C语言计算一维数组的平均值

C语言计算一维数组的平均值在C语言中,可以通过使用函数来计算一个一维数组的平均值。
函数的定义如下:```c#include <stdio.h>double calculateAverage(int array[], int size)int i;double sum = 0.0;for (i = 0; i < size; i++)sum += array[i];}double average = sum / size;return average;int maiint array[] = {1, 2, 3, 4, 5};int size = sizeof(array) / sizeof(array[0]);double average = calculateAverage(array, size);printf("Average: %.2f\n", average);return 0;```在上面的代码中,calculateAverage函数接受一个整数型的一维数组和数组的大小作为参数。
函数通过使用一个for循环,累加数组的每个元素,然后计算平均值,并将其作为浮点数返回。
在主函数中,创建一个包含一些整数的一维数组,然后通过调用calculateAverage函数来计算平均值,并将其打印出来。
这段代码的输出结果应该是:```Average: 3.00```你可以在calculateAverage函数中添加一些错误处理的代码来确保传入的数组和数组大小的有效性,例如检查传入的数组是否为空,以及数组大小是否小于等于0,这样可以增加代码的健壮性。
另外,还可以通过自定义类型来使代码更具可读性和可维护性。
例如,可以定义一个名为`IntArray`的结构体来保存数组和数组大小。
然后,可以将calculateAverage函数的参数改为接受`IntArray`类型的变量,这样在函数外部调用时,参数即可被命名,提高代码的可读性。
c语言课程设计优秀案例

c语言课程设计优秀案例C语言是一门广泛应用于计算机科学领域的编程语言,它具有高效、简洁、可移植等特点,因此在计算机科学领域中得到了广泛的应用。
在C语言课程设计中,学生需要通过实践来掌握C语言的基本语法和编程思想,同时也需要通过设计优秀的案例来提高自己的编程能力。
下面是10个优秀的C语言课程设计案例。
1. 学生成绩管理系统这个案例要求学生设计一个学生成绩管理系统,可以实现学生信息的录入、查询、修改和删除,同时还可以计算学生的平均成绩、最高成绩和最低成绩等统计信息。
2. 简单计算器这个案例要求学生设计一个简单的计算器,可以实现加、减、乘、除等基本运算,同时还可以实现括号、小数点和负数等高级运算。
3. 迷宫游戏这个案例要求学生设计一个迷宫游戏,可以实现玩家在迷宫中寻找出口的过程,同时还可以实现随机生成迷宫、计时和计分等功能。
4. 图书管理系统这个案例要求学生设计一个图书管理系统,可以实现图书信息的录入、查询、修改和删除,同时还可以实现借书和还书等功能。
5. 简单的文件管理器这个案例要求学生设计一个简单的文件管理器,可以实现文件的创建、删除、复制和移动等基本操作,同时还可以实现文件夹的创建和删除等高级操作。
6. 简单的网络聊天程序这个案例要求学生设计一个简单的网络聊天程序,可以实现用户之间的文字聊天和文件传输等功能,同时还可以实现用户登录和注册等操作。
7. 简单的音乐播放器这个案例要求学生设计一个简单的音乐播放器,可以实现音乐的播放、暂停、停止和跳转等基本操作,同时还可以实现音乐列表的管理和歌词显示等高级功能。
8. 简单的游戏开发这个案例要求学生设计一个简单的游戏,可以实现玩家的移动、攻击和防御等基本操作,同时还可以实现关卡设计和游戏难度调整等高级功能。
9. 简单的人工智能程序这个案例要求学生设计一个简单的人工智能程序,可以实现基本的语音识别、图像识别和自然语言处理等功能,同时还可以实现机器学习和深度学习等高级功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.6案例学习:计算平均成绩
【例5-18】输入3个学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。
(1)问题分析:
有3个学生,每个学生有4门课,学生的成绩包括3行4列。
求每个学生的平均成绩即在数组中做行求和,求每门课程的平均成绩即在数组中做列求和。
因此可以用4行5列的数组存放,其中最后一列用于存放每个学生的各门课的平均成绩,最后一行用于存放各门课的平均成绩,例如:
C1C2C3C4S_AVER
S167.068.076.088.074.8
S287.089.091.092.089.8
S393.094.089.099.093.8
C_AVER82.383.785.393.0
(2)参考程序如下:
/*程序名:5_18.c*/
/*程序功能:计算学生的平均成绩*/
#include<stdio.h>
#define M3
#define N4
int main()
{
int i,j;
float score[M+1][N+1]={0};/*定义数组,各元素初值为0*/
printf("array a:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
printf("input the mark of%dth courseof%dth student:",j+1,i+1);
scanf("%f",&score[i][j]);
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
score[i][N]+=score[i][j];/*求第i个学生的总成绩*/
score[M][j]+=score[i][j];/*求第j门课的总成绩*/
}
score[i][N]/=N;/*求第i个学生的平均成绩*/
}
for(j=0;j<N;j++)/*求第j门课的平均成绩*/
score[M][j]/=M;
printf("NO.C1C2C3C4AVER\n");
for(i=0;i<M;i++)/*输出每个学生的各科成绩和平均成绩*/
{
printf("stu%d\t",i+1);
for(j=0;j<N+1;j++)
printf(“%6.1f\t”,score[i][j]);
printf(“\n”);
}
printf("-----------------------------------------------------------");
printf(“\naver_c”);
for(j=0;j<N;j++)/*输出每门课的平均成绩*/
printf(“%6.1f\t”,score[M][j]);
printf(“\n”);
return0;
}
运行结果:
按要求输入三个学生的四门课的成绩
NO C1C2C3C4S_AVER
Stu167.068.076.088.074.8
Stu287.089.091.092.089.8
Stu393.094.089.099.093.8
----------------------------------------------------
C_AVER82.383.785.393.0
二维数组score用来存放学生各门课的成绩,定义时行数及列数要比学生人数和课程门数多1,即最后一列用于存放每个学生的各门课的平均成绩,最后一行用于存放各门课的平均成绩。
【例5-19】2008年北京奥运会开幕式运动员入场(按国家名排序)。
(1)问题分析:
通过明确地列出所提供的输入数据、要求的输出和输入到输出相关的算法分析要求说明。
a.确定输入项。
输入项是若干个字符串。
b.确定期望的输出。
c.列出输入输出相关的算法。
(2)选择一个全面的解决方案算法
每个国家的名字是一个字符串,可以使用二维字符数组来实现。
前面讲过,可以把二维数组看作是一种特殊的一维数组,它的元素又是一个一维数组。
这样可以定义一个二维字符数组,每一行是一个字符串,代表一个国家的名字。
然后可以使用冒泡法排序算法对国家名进行排序。
(3)参考程序如下:
/*程序名:5_19.c*/
/*程序功能:字符串排序*/
#define N10
#include<stdio.h>
#include<string.h>
int main()
{
char name[N][20],temp[20];/*定义一个二维数组和一个一维数组*/
int i,j,n;
printf(“请输入n:\n”);
scanf(“%d”,&n);
printf(“请输入国家名:\n”);
for(i=0;i<n i++)
gets(name[i]);
for(i=0;i<n;i++)/*冒泡法排序*/
for(j=0;j<n–i-1;j++)
if(strcmp(name[j],name[j+1])>0)
{
strcpy(temp,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],temp);
}
printf(“排序后的国家名为:”);/*输出*/
for(i=0;i<n;i++)
printf(“%s\n”,name[i]);
return0;
}
程序运行结果如下:
请输入n:
5
请输入国家名:
China
Greece
Australia
Kenya
Brazil
排序后的国家名为:
Australia
Brazil
China
Greece
Kenya
程序中name[N][20]用来存放国家名,语句gets(name[i])表示从键盘输入5个国家名,可以将name[5][20]看成5个元素的一维数组name[i],它的元素又是一个一维数组,存放的是一个国家的名字。
采用冒泡法从小到大进行排序,在比较两个字符串时,使用字符串比较函数strcpy();最后将排好序的国家名输出。