帮忙做一下这个C语言程序,谢谢

实验内容:
1:构造学生成绩表。
2:针对成绩表并按要求提取出数据。
3:对提取出的数据进行排序。
4:保存最后的排序结果到另一个文本文档。
对总分进行排序

学号:1024 语文:99 数学:98 总成绩:197
学号:1076 语文:97 数学:98 总成绩:195
学号:1000 语文:96 数学:98 总成绩:194
学号:1063 语文:96 数学:90 总成绩:186
学号:1034 语文:94 数学:84 总成绩:178
学号:1010 语文:85 数学:89 总成绩:174
学号:1068 语文:86 数学:87 总成绩:173
学号:1066 语文:93 数学:76 总成绩:169
学号:1074 语文:85 数学:75 总成绩:160
学号:1042 语文:85 数学:73 总成绩:158
学号:1086 语文:69 数学:86 总成绩:155
学号:1019 语文:81 数学:73 总成绩:154
学号:1081 语文:63 数学:90 总成绩:153
学号:1036 语文:70 数学:81 总成绩:151
学号:1027 语文:98 数学:50 总成绩:148
学号:1007 语文:100 数学:45 总成绩:145
学号:1094 语文:85 数学:58 总成绩:143
学号:1082 语文:92 数学:50 总成绩:142
学号:1057 语文:44 数学:97 总成绩:141
学号:1052 语文:100 数学:40 总成绩:140
学号:1058 语文:58 数学:80 总成绩:138
学号:1043 语文:74 数学:64 总成绩:138
学号:1040 语文:92 数学:46 总成绩:138
学号:1062 语文:42 数学:95 总成绩:137
学号:1072 语文:52 数学:83 总成绩:135
学号:1049 语文:78 数学:57 总成绩:135
学号:1041 语文:67 数学:68 总成绩:135
学号:1032 语文:37 数学:96 总成绩:133
学号:1038 语文:97 数学:35 总成绩:132
学号:1008 语文:84 数学:48 总成绩:132
学号:1037 语文:69 数学:62 总成绩:131
学号:1087 语文:71 数学:59 总成绩:130
学号:1001 语文:34 数学:93 总成绩:127
学号:1075 语文:77 数学:48 总成绩:125
学号:1096 语文:85 数学:39 总成绩:124
学号:1022 语文:91 数学:33 总成绩:124
学号:1061 语文:86 数学:35 总成绩:121
学号:1014 语文:69 数学:52 总成绩:121
学号:1011 语文:40 数学:80 总成绩:120
学号:1006 语文:98 数学:21 总成绩:119
学号:1017 语文:22 数学:96 总成绩:118
学号:1046 语文:75 数学:42 总成绩:117
学号:1026 语文:36 数学:81 总成绩:117
学号:1090 语文:95 数学:21 总成绩:116
学号:1085 语文:32 数学:81 总成绩:113
学号:1083 语文:40 数学:73 总成绩:113
学号:1054 语文:12 数学:99 总成绩:111
学号:1023 语文:13 数学:98 总成绩:111
学号:1064 语文:61 数学:48 总成绩:109
学号:1099 语文:23 数学:84 总成绩:107
学号:1065 语文:34 数学:72 总成绩:106
学号:1035 语文:46 数学:60 总成绩:106
学号:1029 语文:43 数学:63 总成绩:106
学号:1051 语文:86 数学:19 总成绩:105
学号:1095 语文:67 数学:35 总成绩:102
学号:1053 语文:48 数学:51 总成绩:99
学号:1044 语文:91 数学:5 总成绩:96
学号:1020 语文:24 数学:71 总成绩:95
学号:1091 语文:44 数学:50 总成绩:94
学号:1089 语文:31 数学:63 总成绩:94
学号:1005 语文:15 数学:79 总成绩:94
学号:1059 语文:43 数学:50 总成绩:93
学号:1097 语文:4 数学:88 总成绩:92
学号:1069 语文:21 数学:70 总成绩:91
学号:1015 语文:74 数学:17 总成绩:91
学号:1002 语文:26 数学:65 总成绩:91
学号:1079 语文:77 数学:13 总成绩:90
学号:1009 语文:21 数学:68 总成绩:89
学号:1067 语文:54 数学:34 总成绩:88
学号:1055 语文:30 数学:58 总成绩:88
学号:1080 语文:62 数学:22 总成绩:84
学号:1078 语文:49 数学:34 总成绩:83
学号:1047 语文:57 数学:25 总成绩:82
学号:1056 语文:20 数学:61 总成绩:81
学号:1048 语文:14 数学:65 总成绩:79
学号:1039 语文:66 数学:13 总成绩:79
学号:1092 语文:49 数学:29 总成绩:78
学号:1003 语文:56 数学:22 总成绩:78
学号:1088 语文:15 数学:59 总成绩:74
学号:1073 语文:37 数学:36 总成绩:73
学号:1077 语文:21 数学:47 总成绩:68
学号:1030 语文:34 数学:34 总成绩:68
学号:1071 语文:45 数学:18 总成绩:63
学号:1045 语文:61 数学:1 总成绩:62
学号:1021 语文:21 数学:38 总成绩:59
学号:1084 语文:19 数学:39 总成绩:58
学号:1050 语文:48 数学:10 总成绩:58
学号:1070 语文:36 数学:20 总成绩:56
学号:1031 语文:30 数学:26 总成绩:56
学号:1060 语文:28 数学:23 总成绩:51
学号:1013 语文:7 数学:43 总成绩:50
学号:1098 语文:15 数学:27 总成绩:42
学号:1028 语文:22 数学:12 总成绩:34
学号:1012 语文:9 数学:23 总成绩:32
学号:1093 语文:14 数学:16 总成绩:30
学号:1018 语文:6 数学:21 总成绩:27
学号:1004 语文:9 数学:6 总成绩:15
学号:1025 语文:2 数学:6 总成绩:8
学号:1016 语文:2 数学:6 总成绩:8
学号:1033 语文:2 数学:1 总成绩:3
Press any key to continue
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void ReadDat(int course1[], int course2[], int score[], int id[])
{
int tmpId = 1000, tmpScore = 0;
srand(time(0));//随机数种子,详见百度百科C语言随机数
for(int i = 1; i <= 100; i++)
{
tmpScore = (rand() % 100 + 1);
course1[i] = tmpScore;
tmpScore = (rand() % 100 + 1);
course2[i] = tmpScore;
score[i] = course1[i] + course2[i];
id[i] = tmpId++;
}
}
/*
插入排序法,维基百科的插入排序稍作修改
*/
void insertion_sort(int course1[], int course2[], int score[], int id[], int first, int last)
{
int i,j;
int tmpC1, tmpC2, tmpScore, tmpId;
for (i = first + 1; i <= last;i++)
{
tmpScore = score[i];
tmpId = id[i];
tmpC1 = course1[i];
tmpC2 = course2[i];
j=i-1;

while((j >= first) && (score[j] > tmpScore))
{
score[j+1] = score[j];
id[j+1] = id[j];
course1[j+1] = course1[j];
course2[j+1] = course2[j];
j--;
}
score[j+1] = tmpScore;
id[j+1] = tmpId;
course1[j+1] = tmpC1;
course2[j+1] = tmpC2;
}
}

void jsSort(int course1[], int course2[], int score[], int id[])//插入排序
{
insertion_sort(course1, course2, score, id, 1 ,100);
}

void WriteDat(int course1[], int course2[], int score[], int id[])
{
FILE *fp;//文件输出要使用的变量
fp = fopen("score.txt","w");//详见百度百科文件输入输出,这里w参数是写文件
for(int i = 100; i >= 1 ;i--)
{
printf("学号:%d 语文:%d 数学:%d 总成绩:%d\n", id[i], course1[i], course2[i], score[i]);//控制台输出
fprintf(fp,"学号:%d 语文:%d 数学:%d 总成绩:%d\n", id[i], course1[i], course2[i], score[i]); //文件输出
}
}

main()
{
int course1[105] = {0}, course2[105] = {0}, score[105] = {0}, id[105] = {0};
ReadDat(course1, course2, score, id);//构造分数表
jsSort(course1, course2, score, id);//插入排序法,详细请搜索百度百科“插入排序”
WriteDat(course1, course2, score, id);//控制台输出+文件输出
}追问

发现你这代码和楼上的哪位大大的99%相似啊,就是头文件不一样和最后的主函数不一样,哎!不知道这分改给谁啊,要是你能帮我排一下名就好了,比如学好1022,语文:90,数学:97,总成绩178,第一名这样。

追答

好了 不抄他的了 我自己写个得了

十四级的人了 抄别人让人笑话

学号: 10,数学: 53,语文: 94,总分:147,名次: 1
学号: 13,数学: 84,语文: 35,总分:119,名次: 2
学号: 12,数学: 22,语文: 92,总分:114,名次: 3
学号: 3,数学: 23,语文: 88,总分:111,名次: 4
学号: 17,数学: 84,语文: 25,总分:109,名次: 5
学号: 18,数学: 23,语文: 81,总分:104,名次: 6
学号: 19,数学: 0,语文: 96,总分: 96,名次: 7
........省略......
学号: 11,数学: 3,语文: 69,总分: 72,名次: 16
学号: 1,数学: 13,语文: 40,总分: 53,名次: 17
学号: 5,数学: 33,语文: 1,总分: 34,名次: 18
学号: 8,数学: 13,语文: 15,总分: 28,名次: 19
学号: 7,数学: 17,语文: 8,总分: 25,名次: 20
Press any key to continue

#include
#include
#include

#define MAX 20
struct student
{
int iid;
int iscore[2];
int sum;
}st[MAX],tmp;

int i,j;

void CreateData()
{
srand((unsigned)time(NULL));//随机数种子,详见百度百科C语言随机数
for(i = 0; i < MAX; i++)
{
st[i].iscore[0] = rand()%101; //随机生成 数学成绩
st[i].iscore[1] = rand()%101; //随机生成语文成绩
st[i].sum =st[i].iscore[0]+st[i].iscore[1]; //两者相加得总成绩
st[i].iid=i; 学号
}
}
void sort()
{
for (i=0;i<MAX-1;i++)
{
for (j=0;j<MAX-i-1;j++)
{
if (st[j].sum<st[j+1].sum)
{
tmp=st[j];
st[j]=st[j+1];
st[j+1]=tmp;
}
}
}
}

void Output()
{
FILE *fp=fopen("score.txt","w");
for (i=0;i<MAX;i++)
{
printf("学号:%3d,数学:%3d,语文:%3d,总分:%3d,名次:%3d\n",
st[i].iid,st[i].iscore[0],st[i].iscore[1],st[i].sum,i+1);
//将结果写入文件score.txt
fprintf(fp,"学号:%3d,数学:%3d,语文:%3d,总分:%3d,名次:%3d\n",
st[i].iid,st[i].iscore[0],st[i].iscore[1],st[i].sum,i+1);
}
fclose(fp); //关闭写文件指针
}

main()
{
CreateData();//随机数生成学生信息
sort(); //结构体数组排序
Output();//控制台输出+文件输出
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-11
亲,你看看这个可以么
1.构造成绩表,学号和成绩
2.你是什么要求呢
3.降序排列
4.输出到score.text

#include <cstdio>
#include <stdlib.h>
#include <time.h>
#include <iostream>

void ReadDat(int a[], int b[])
{
srand(time(0));
int score = 0;
for(int i = 1; i <= 100; i++)
{
score = (rand() % 100 + 1);
a[i] = score;
score = (rand() % 100 + 1);
b[i] = score;
}
}

void insertion_sort(int arrayA[], int arrayB[], unsigned int first, unsigned int last)
{
int i,j;
int tempA, tempB;
for (i = first + 1; i <= last;i++)
{
tempA = arrayA[i];
tempB = arrayB[i];
j=i-1;

while((j >= first) && (arrayA[j] > tempA))
{
arrayA[j+1] = arrayA[j];
arrayB[j+1] = arrayB[j];
j--;
}
arrayA[j+1] = tempA;
arrayB[j+1] = tempB;
}
}

void jsSort(int a[], int b[])//插入排序
{
insertion_sort(a, b, 1 ,100);
}

void WriteDat(int a[], int b[])
{
FILE *fp;
fp = fopen("score.txt","w");
for(int i = 100; i >= 1 ;i--)
{
printf("成绩:%d 学号:%d\n",a[i],b[i]);
fprintf(fp,"成绩:%d 学号:%d\n",a[i],b[i]);
}
}

int main()
{
int aa[105] = {0}, bb[105] = {0};
ReadDat(aa, bb);
jsSort(aa, bb);
WriteDat(aa, bb);
return 0;
}追问

不懂啊亲。运行出错哦。其实没说明要求,就是对学生的分值求总并排名,麻纺在帮忙解答一下啊

追答

运行出错? 报了什么错,什么运行环境?

追问

C语言的运行环境啊,错误是c:\program files\microsoft visual studio\vc98\include\eh.h(32) : fatal error C1189: #error : "eh.h is only for C++!"

追答

试试把头文件改成
#include
#include
#include

追问

改了后错误更多啦

追答

小问题,我是直接用g++库运行的
稍等,我改成visual studio

追问

我说大侠,还麻烦你一件事,就是帮忙把代码注释一下吧,我们老师真是脑壳有包,都没教个什么名堂,就叫我们做这东西,真心是不懂啊,为了表达我对您的感谢,我再加分吧

追答

#include "stdafx.h"
#include
#include
#include

void ReadDat(int course1[], int course2[], int score[], int id[])
{
int tmpId = 1000, tmpScore = 0;
srand(time(0));//随机数种子,详见百度百科C语言随机数
for(int i = 1; i = first) && (score[j] > tmpScore))
{
score[j+1] = score[j];
id[j+1] = id[j];
course1[j+1] = course1[j];
course2[j+1] = course2[j];
j--;
}
score[j+1] = tmpScore;
id[j+1] = tmpId;
course1[j+1] = tmpC1;
course2[j+1] = tmpC2;
}
}

void jsSort(int course1[], int course2[], int score[], int id[])//插入排序
{
insertion_sort(course1, course2, score, id, 1 ,100);
}

void WriteDat(int course1[], int course2[], int score[], int id[])
{
FILE *fp;//文件输出要使用的变量
fp = fopen("score.txt","w");//详见百度百科文件输入输出,这里w参数是写文件
for(int i = 100; i >= 1 ;i--)
{
printf("学号:%d 语文:%d 数学:%d 总成绩:%d\n", id[i], course1[i], course2[i], score[i]);//控制台输出
fprintf(fp,"学号:%d 语文:%d 数学:%d 总成绩:%d\n", id[i], course1[i], course2[i], score[i]); //文件输出
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int course1[105] = {0}, course2[105] = {0}, score[105] = {0}, id[105] = {0};
ReadDat(course1, course2, score, id);//构造分数表
jsSort(course1, course2, score, id);//插入排序法,详细请搜索百度百科“插入排序”
WriteDat(course1, course2, score, id);//控制台输出+文件输出
system("pause");
return 0;
}

追问

哎,越看越不明白啦,这是C语言编写的吗?怎么没有主函数main()呢,还有就是运行还是出错啊(#include "stdafx.h"),提示c:\program files\microsoft visual studio\myprojects\cbaogao\cbg.c(1) : fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory

追答

你VS新建项目是不是这样的:
文件->新建->项目->C++->在已安装模板里选“Win32项目”,输入名称、位置->下一步->控制台应用程序,空项目->完成。
这个程序复制进去直接可以运行

因为是VS项目所以#include "stdafx.h"这个头文件是系统默认生成的
int _tmain(int argc, _TCHAR* argv[]) 就是VS的main函数

追问

感谢您的回答,我不知道VS的项目怎么建,我到目前为止只接触了一点C语言的东西,建工程是以VC++6.0为编译工具。在这里我很抱歉,虽然您的回答真的很用心很有质量,但我太菜啦,看不懂也运行不起,所以我把分给楼下的大大啦。为了感谢您的付出,麻烦您回答一下这两个问题吧,一样的问题。
,谢谢

追答

我真是服了你了,一开始我就问什么运行环境,居然说是C语言的运行环境,到了最后告诉我是VC++6.0,我以前说了visual studio你为什么不指出,折腾我把代码改来改去。
这也就算了,那个十四级的货不是明摆着复制我答案吗,不管他回答什么,在同一个回答里这样露骨地复制我,你都能选他为满意。
他居然也知道十四级的人了,抄别人让人笑话,说要自己写一个。请问您这是自己写吗,这框架怎么跟我一模一样啊,您连注释也不改改。
少年,代码不会写没有关系,是非不分我就跟你没什么可说的了。
为什么你连发3次没人理你?谁高兴写那么长的代码。我可以说如果我不回答,那个十四级的货也懒得回答,可能到现在也没人鸟你。
已举报!!!坐等管理员处理,十四级的,这点分数你肯定是要吐出来的。

追问

我真的很抱歉!我也说过我真的很菜,刚接触C语言,不知道什么visual studio,我认为C语言环境就是VC++6.0,然而你写的东西我真的没怎么看懂,他的第一个回答,我知道是复制了你的答案,我对他说过是复制你的答案,事后,他追加的答案基本上我可以看懂,如冒泡法,结构体等我是可以看懂的。对于采纳了他的答案这事情上,请允许我做点解释。对于一个提问者来说,答案最浅显易懂当然就最好啦,不然的到一个答案看不懂那不就白问了吗

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网