实验七、指针---10071 求平均成绩
1、【问题描述】某班期末考试后要统计本班某门课程得平均成绩、最高成绩与最低成绩,您
得任务就是编程序实现
这一功能。
一个班得人数不超过30人,要求实现求最高成绩,最低成绩与平均成绩得功能用一个
函数完成,并用参数返回最高成绩,最低成绩与平均成绩。
ﻫ【输入形式】一组测试数据,第一行为一个整数N,表示本班有N个人(N<=30),接下来得N行中每行一个整ﻫ数,表示一个人得成绩。
ﻫ【输出形式】输出一行。
该行包含三个数,分别就是:最高成绩、最低成绩与平均成绩。
成绩之间由空格分隔,ﻫ其中平均成
ﻫ8
90
绩为实数,并精确到小数点后两位。
ﻫ【样例输入】5ﻫ
85
3ﻫ76ﻫ
62ﻫ【样例输出】906279、20
【样例说明】某班有5个学生,她们得成绩分别就是90、83、76、85、62。
ﻫ该班得最高成绩、最低成绩与平均成绩分别为90、62以及79、20。
ﻫ【评分标准】本题共2个测试点,每个测试点1、0分,共2、0分。
#include<stdio、h>
#define MAX 30
int max_all(int score[]);
intmin_all(int score[]);
int max(int a,int b);
int min(int a,int b);
float average(int score[]);
int i,number;
int main(void)
{
ﻩint score[MAX];
scanf("%d",&number);
for(i=0;i<number;i++)
ﻩscanf("%d",&score[i]);
ﻩprintf("%d %d%、2f",max_all(score),min_all(score),average(score));
return0;
}
int max_all(int*score)//求最高成绩
{
ﻩint max_number=score[0];
ﻩfor(i=1;i<number;i++)
ﻩﻩmax_number=max(max_number,score[i]);
return max_number;
}
int min_all(intscore[])//求最低成绩
{
ﻩint min_number=score[0];
ﻩfor(i=1;i<number;i++)
ﻩﻩmin_number=min(min_number,score[i]);
ﻩreturnmin_number;
}
int max(int a,intb)
{
ﻩreturn a>b?a:b;
}
int min(inta,int b)
{
return a<b?a:b;
}
float average(int score[]) //求平均成绩
{
int sum=0;
for(i=0;i<number;i++)
ﻩsum+=score[i];
return sum*1、0/number;
}
实验七、指针---10072 字符串排序
2、【问题描述】按字典顺序输出某班所有人得名单。
ﻫ【输入形式】一组测试数据,第一行
为一个整数N,表示本班有N个人(N<=30),接下来得N行中每行一个人名
(人名均由小写字母组成,并且名字长度小于20)。
ﻫ【输出形式】按字典顺序排列得人员名单。
每个人名占一行。
【样例输入】5ﻫzhangsanﻫliyangﻫ wangxiao
liqingﻫwuhui
【样例输出】liqingﻫ liyangﻫwangxiao
wuhuiﻫzhangsan
【样例说明】某班有5个人,名字为zhangsan、liyang、wangxiao、liqing、
wuhui,ﻫ按字典得排列顺序为:liqing、liyang、wangxiao、wuhui、zhangsan。
【评分标准】本题共2个测试点,每个测试点1、0分,共2、0分。
#include <stdio、h>
#include<string、h>
#define MAX_NUMBER 30
#defineMAX_SIZE20
int number,i;
void sort(char name[MAX_NUMBER][MAX_SIZE]);
voidsa[],char b[]);
intmain(void)
{
ﻩchar name[MAX_NUMBER][MAX_SIZE];
scanf("%d",&number);
ﻩgetchar();
ﻩfor(i=0;i<number;i++)
ﻩﻩscanf("%s",name[i]);
sort(name);
ﻩfor(i=0;i<number;i++)
ﻩputs(name[i]);
return0;
}
void sort(char name[MAX_NUMBER][MAX_SIZE])
{
int j;
ﻩfor(j=0;j<number-1;j++)
ﻩfor(i=0;i<number-j-1;i++)
ﻩif(strcmp(name[i],name[i+1])>0)
ﻩﻩs[i],name[i+1]);
}
voidsa[],char b[])
{
char temp[MAX_SIZE];
strcpy(temp,a);
strcpy(a,b);
ﻩstrcpy(b,temp);
}
实验七、指针---10073字符串比较
3、【问题描述】按字符串比较过程对给定得两个字符串进行比较,若相等则结果为0,若不等则结果为对应不等
字符得差。
按要求实现对给定字符串得比较。
要求程序中用函数实现两个字符串得比较。
int stringcmp(char *str1 ,char *str2 )ﻫ【输入形式】第一行为一个整数N,表示测试数据得组数,接下来得N行中每行包含两个字符串,字符串之间由ﻫ空格分隔。
ﻫ【输出形式】输出共N行,每行为对应输入一行得两个字符串得比较结果。
ﻫ【样例输入】3ﻫHa ppyHelpﻫ Help Help
HelpHappyﻫ【样例输出】- 4
0ﻫ 4
【样例说明】测试3组字符串。
第1组为“Happy”与"Help",第2组为“Help”与“Help”,第3组为“Help”与ﻫ“Happy”,比较结果分别为-4、0与4。
【评分标准】本题共2个测试点,每个测试点1、0分,共2、0分。
#include<stdio、h>
#include <string、h>
intstringcmp(char *str1,char *str2);
intmain(void)
{
ﻩintnumber,i,cmp[100];
ﻩchar str1[100],str2[100];
scanf("%d",&number);
for(i=0;i<number;i++)
ﻩ{
ﻩscanf("%s%s",str1,str2);
cmp[i]=stringcmp(str1,str2);
ﻩ}
ﻩfor(i=0;i<number;i++)
ﻩprintf("%d\n",cmp[i]);
return0;
}
int stringcmp(char *str1,char *str2)
{
ﻩint j;
for(j=0;str1[j]==str2[j]&&str1[j]!='\0';j++)ﻩcontinue;
if((str1[j-1]=='\0')&&(str1[j]=='\0'))
ﻩreturn0;
ﻩelse
ﻩﻩreturn str1[j]-str2[j];
}。