
找c语言高手帮忙编程,急求。明天要交了,是c++
要求:
(1) 排序用一个函数实现。
(2) 打印的成绩单表项包括:序号、数学、英语、 C语言程序设计、总分、平均分。
财富值还可再加。 展开
/*
序号 学号 数学 英语 C语言 总分 平均
=====================================================
01 48774 99.00 83.00 97.00 279.00 93.00
02 38614 93.00 95.00 89.00 277.00 92.33
03 46780 85.00 98.00 85.00 268.00 89.33
04 45879 82.00 91.00 82.00 255.00 85.00
05 48119 84.00 65.00 100.00 249.00 83.00
06 47904 86.00 91.00 71.00 248.00 82.67
07 34321 90.00 61.00 96.00 247.00 82.33
08 40283 67.00 94.00 78.00 239.00 79.67
09 37520 92.00 78.00 64.00 234.00 78.00
10 43979 95.00 62.00 74.00 231.00 77.00
11 41508 70.00 64.00 97.00 231.00 77.00
12 57573 81.00 67.00 81.00 229.00 76.33
13 38471 78.00 61.00 87.00 226.00 75.33
14 56229 67.00 94.00 63.00 224.00 74.67
15 49458 68.00 80.00 65.00 213.00 71.00
16 32868 67.00 73.00 61.00 201.00 67.00
=====================================================
没有找到平均成绩为86.00的学生。
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 16
typedef struct student {
unsigned ID;
double grade[5];
}stu;
void total(stu classA[], int n) {
int i,j;
for(i = 0; i < n; ++i) {
classA[i].grade[3] = 0;
for(j = 0; j < 3; ++j)
classA[i].grade[3] += classA[i].grade[j];
classA[i].grade[4] = classA[i].grade[3]/3;
}
}
void sort(stu classA[], int n) {
int i,j,k;
stu t;
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j)
if(classA[k].grade[3] < classA[j].grade[3])
k = j;
if(k != i) {
t = classA[i];
classA[i] = classA[k];
classA[k] = t;
}
}
}
void show(stu classA[], int n) {
int i,j;
printf("序号\t学号\t数学\t英语\tC语言\t总分\t平均\n");
for(i = 0; i < 53; ++i) printf("=");
printf("\n");
for(i = 0; i < n; ++i) {
printf("%02d\t%u\t",i + 1,classA[i].ID);
for(j = 0; j < 5; ++j) printf("%.2lf\t",classA[i].grade[j]);
printf("\n");
}
for(i = 0; i < 53; ++i) printf("=");
printf("\n");
}
int find(stu classA[], int n,double score) {
int low = 0,high = n - 1;
int mid = (low + high)/2;
while(low <= high) {
if(int(classA[mid].grade[4]) == (int)score) return mid;
if(classA[mid].grade[4] > 85)
low = mid + 1;
else high = mid - 1;
mid = (low + high)/2;
}
return -1;
}
int main() {
stu myClass[N];
int i,j,res;
double score = 86.0;
srand((unsigned)time(NULL));
for(i = 0; i < N; ++i) {
myClass[i].ID = rand() + RAND_MAX;
for(j = 0; j < 3; ++j)
myClass[i].grade[j] = rand()%40 + 61;
}
total(myClass,N);
sort(myClass,N);
show(myClass,N);
res = find(myClass,N,score);
if(res < 0) printf("没有找到平均成绩为%.2lf的学生。\n",score);
else printf("学号为%u的学生的平均成绩为%.2lf分。\n",myClass[res].ID,score);
return 0;
}
#include<iostream>
using namespace std;
int a[10][5];
double b[10];
void sort()
{
int tmp;
double tmp1;
for ( int i = 0; i < 9; i++ )
for ( int j = i+1; j < 10; j++ )
if ( a[i][4] < a[j][4] )
{
tmp = a[i][0]; a[i][0] = a[j][0]; a[j][0] = tmp;
tmp = a[i][1]; a[i][1] = a[j][1]; a[j][1] = tmp;
tmp = a[i][2]; a[i][2] = a[j][2]; a[j][2] = tmp;
tmp = a[i][3]; a[i][3] = a[j][3]; a[j][3] = tmp;
tmp = a[i][4]; a[i][4] = a[j][4]; a[j][4] = tmp;
tmp1 = b[i]; b[i] = b[j]; b[j] = tmp1;
}
}
void print()
{
for ( int i = 0; i < 10; i++ )
cout << a[i][0] << '\t' << a[i][1] << '\t' << a[i][2] << '\t' << a[i][3] << '\t' << a[i][4] << '\t' << b[i] << endl;
}
void find( int l, int r )
{
if ( l > r ) return;
int m = ( l + r )/2;
if ( b[m] == 85 )
cout << a[m][0] << endl;
else
if ( b[m] < 85 ) {
r = m-1;
find(l, r);
}
else {
l = m+1;
find(l, r);
}
}
int main()
{
for ( int i = 0; i < 10; i++ )
{
cin >> a[i][0] >> a[i][1] >> a[i][2] >> a[i][3];
a[i][4] = a[i][1] + a[i][2] + a[i][3];
b[i] = a[i][4]/3.0;
}
sort();
print();
find(0, 9);
system("pause");
return 0;
}
你编好后上传一下源文件吧,谢谢了!
look my name and jia me
//
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#define SNUM 10 // 学生个数和结构体
struct student
{
int num;
int math;
int english;
int c;
int sum;
int average;
};
struct student s[SNUM];
// 声明函数
void sum(student s[]); // 总成绩函数
void average(student s[]);// 平均成绩函数
void sort(student s[]); // 排序算法函数
void search(student s[]); // 查找函数
void print(student s[]); // 打印成绩函数
int main(int argc, char* argv[])
{
int i;
for(i=0; i<SNUM; i++)
{
printf("请输入第%d个学生的信息:序号--数学--英语--c语言(以空格键回车键或者隔开)\n",i+1);
scanf("%d%d%d%d", &s[i].num, &s[i].math, &s[i].english, &s[i].c);
}
sum(s);
average(s);
sort(s);
search(s);
print(s);
getchar();
return 0;
}
void sum( student s[])
{
int i;
for(i=0; i<SNUM; i++)
s[i].sum=s[i].math+s[i].english+s[i].c;
}
void average(student s[])
{
int i;
for(i=0; i<SNUM; i++)
s[i].average=(s[i].math+s[i].english+s[i].c)/3;
}
void sort(student s[])
{
int i,j,k;
struct student temp;
for(i=0; i<SNUM; i++)
{
k=i;
for(j=i+1;j<SNUM;j++)
if(s[k].sum<s[j].sum)
k=j;
if(k!=i)
{
temp=s[i];
s[i]=s[k];
s[k]=temp;
}
}
}
void search(student s[])
{
int mid,low,high,found;
low=0;
high=9;
found=0;
while(low<=high)
{
mid=(high+low)/2;
if(s[mid].average==85)
{
found=1;
break;
}
else if(85>s[mid].average)
high=mid-1;
else
low=mid+1;
}
if(found==1)
printf("平均分为85分的学生序号为:%d\n", s[mid].num);
else
printf("平均分为85分的学生不存在\n");
}
void print(student s[])
{
int i;
printf("序号-数学-英语-c语言--平均分--总分\n");
for(i=0; i<SNUM; i++)
printf("%4d%5d%5d%5d%5d%5d\n",s[i].num,s[i].math,s[i].english,s[i].c,s[i].average,s[i].sum);
}
// 您好,我是直接使用vc6.0进行编辑和编译的,程序通过,可以使用,请参考!希望采纳!