
高手请进!你好,请把我写一个C语言的编程题,本人不胜感激!
题目:该程序设计四个函数:ReadDat()从键盘读取100个学生成绩存放到数组aa中,学生相应的学号存放到bb数组中,jsSort()函数的功能是:对aa数组进行降序排...
题目:该程序设计四个函数:ReadDat()从键盘读取100个学生成绩存放到数组aa中,学生相应的学号存放到bb数组中,jsSort()函数的功能是:对aa数组进行降序排列。最后调用函数WriteDat()输出排序后的成绩和相应的学号。在main()函数中调用以上函数。
展开
3个回答
展开全部
#include<stdio.h>
void ReadDat(int a[],int b[]);
void jsSort(int a[],int b[]);
void WriteDat(int a[],int b[]);
//为了调试方便,将学生人数取为5,将其中的5改为100就合题意了.思路较简单,未加标注
void main()
{
int aa[100],bb[100];
ReadDat(aa,bb);
jsSort(aa,bb);
WriteDat(aa,bb);
}
void ReadDat(int a[],int b[])
{
int i;
for(i=0;i<5;i++)
{
printf("请输入第%d个学生的学号:\n",i+1);
scanf("%d",&b[i]);
printf("请输入第%d个学生的成绩:\n",i+1);
scanf("%d",&a[i]);
}
}
void jsSort(int a[],int b[])
{
int i,j,t1,t2;
for(i=0;i<5-1;i++)
for(j=0;j<5-1;j++)
{
if(a[j]<a[j+1]) //排序
{
t1=a[j];
a[j]=a[j+1];
a[j+1]=t1;
t2=b[j];
b[j]=b[j+1];
b[j+1]=t2;
}
}
}
void WriteDat(int a[],int b[])
{
int i;
printf("将序排列后的成绩:\n学号\t\t 成绩\n");
for(i=0;i<5;i++)
{
printf("%d %d\n",b[i],a[i]);
}
}
void ReadDat(int a[],int b[]);
void jsSort(int a[],int b[]);
void WriteDat(int a[],int b[]);
//为了调试方便,将学生人数取为5,将其中的5改为100就合题意了.思路较简单,未加标注
void main()
{
int aa[100],bb[100];
ReadDat(aa,bb);
jsSort(aa,bb);
WriteDat(aa,bb);
}
void ReadDat(int a[],int b[])
{
int i;
for(i=0;i<5;i++)
{
printf("请输入第%d个学生的学号:\n",i+1);
scanf("%d",&b[i]);
printf("请输入第%d个学生的成绩:\n",i+1);
scanf("%d",&a[i]);
}
}
void jsSort(int a[],int b[])
{
int i,j,t1,t2;
for(i=0;i<5-1;i++)
for(j=0;j<5-1;j++)
{
if(a[j]<a[j+1]) //排序
{
t1=a[j];
a[j]=a[j+1];
a[j+1]=t1;
t2=b[j];
b[j]=b[j+1];
b[j+1]=t2;
}
}
}
void WriteDat(int a[],int b[])
{
int i;
printf("将序排列后的成绩:\n学号\t\t 成绩\n");
for(i=0;i<5;i++)
{
printf("%d %d\n",b[i],a[i]);
}
}
展开全部
// StudentSystem.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void ReadDat(int aa[],int &iStudentNum,int bb[])
{
cout<<"输入分数,输入Break跳出循环\n";
char szNum[1024] = {0};
int iTempNum = 0;
char sz[1024];
for (int i = 0; i <= 100; i++)
{
do
{
sprintf(sz,"第%d的个学生分数为:",iStudentNum+1);
cout<<sz;
cin>>szNum;
if (strcmp(szNum,"break")==0)
{
cout<<"以跳出输入分数阶段\n";
iTempNum = -1;
break;
}
iTempNum = atoi(szNum);
if(iTempNum == 0 || iTempNum> 100)
{
if (strcmp(szNum,"0")!=0)
{
iTempNum = -1;
cout<<"请正确输入数字\n";
}
}
} while (iTempNum<0);
if (iTempNum == -1)
{
break;
}
aa[i] = iTempNum;
iStudentNum++;
bb[i] = iStudentNum;
}
}
void jsSort(int a[],int b[],const int )//&iStudentNum
{
int i,j,t1,t2;
for(i=0;i<5-1;i++)
for(j=0;j<5-1;j++)
{
if(a[j]<a[j+1]) //排序
{
t1=a[j];
a[j]=a[j+1];
a[j+1]=t1;
t2=b[j];
b[j]=b[j+1];
b[j+1]=t2;
}
}
}
void WriteDat(const int &iStudentNum,int aa[],int bb[])
{
char sz[1024];
for (int i = 0;i < iStudentNum;i++)
{
sprintf(sz,"分数: %d,学号:%d /n",aa[i],bb[i]);
cout<<sz;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int aa[100] = {0};
int bb[100] = {0};
int iStudentNum = 0;
ReadDat(aa,iStudentNum,bb);
jsSort(aa,bb,iStudentNum);
WriteDat(iStudentNum,aa,bb);
cout<<"按任意键结束程序";
getchar();
return 0;
}
排序直接借用的是2楼朋友的排序,简单测试了下,有个BUG 就是出现两个同样的数后
排序出错,懒的看改算法了,楼主凑活用吧
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void ReadDat(int aa[],int &iStudentNum,int bb[])
{
cout<<"输入分数,输入Break跳出循环\n";
char szNum[1024] = {0};
int iTempNum = 0;
char sz[1024];
for (int i = 0; i <= 100; i++)
{
do
{
sprintf(sz,"第%d的个学生分数为:",iStudentNum+1);
cout<<sz;
cin>>szNum;
if (strcmp(szNum,"break")==0)
{
cout<<"以跳出输入分数阶段\n";
iTempNum = -1;
break;
}
iTempNum = atoi(szNum);
if(iTempNum == 0 || iTempNum> 100)
{
if (strcmp(szNum,"0")!=0)
{
iTempNum = -1;
cout<<"请正确输入数字\n";
}
}
} while (iTempNum<0);
if (iTempNum == -1)
{
break;
}
aa[i] = iTempNum;
iStudentNum++;
bb[i] = iStudentNum;
}
}
void jsSort(int a[],int b[],const int )//&iStudentNum
{
int i,j,t1,t2;
for(i=0;i<5-1;i++)
for(j=0;j<5-1;j++)
{
if(a[j]<a[j+1]) //排序
{
t1=a[j];
a[j]=a[j+1];
a[j+1]=t1;
t2=b[j];
b[j]=b[j+1];
b[j+1]=t2;
}
}
}
void WriteDat(const int &iStudentNum,int aa[],int bb[])
{
char sz[1024];
for (int i = 0;i < iStudentNum;i++)
{
sprintf(sz,"分数: %d,学号:%d /n",aa[i],bb[i]);
cout<<sz;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int aa[100] = {0};
int bb[100] = {0};
int iStudentNum = 0;
ReadDat(aa,iStudentNum,bb);
jsSort(aa,bb,iStudentNum);
WriteDat(iStudentNum,aa,bb);
cout<<"按任意键结束程序";
getchar();
return 0;
}
排序直接借用的是2楼朋友的排序,简单测试了下,有个BUG 就是出现两个同样的数后
排序出错,懒的看改算法了,楼主凑活用吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
float aa[100];
int bb[100];
void ReadDat()
{
int i;
for(i=0; i<100; i++)
{
scanf("%f", &aa[i]);
bb[i] = i;
}
}
void jsSort()
{
int i,j,temp;
for(i=0; i<100; i++)
{
for(j=i; j<100; j++)
{
if (aa[i] < aa[j])
{
temp = aa[i];
aa[i] = aa[j];
aa[j] = temp;
temp = bb[i];
bb[i] = bb[j];
bb[j] = temp;
}
}
}
}
void WriteDat()
{
int i,j;
for (i=0; i<100; i++)
{
printf("student %d, score %f\n", bb[i]+1;, aa[i]);
}
}
void main()
{
ReadDat();
jsSort();
WriteDat();
}
#include <stdlib.h>
float aa[100];
int bb[100];
void ReadDat()
{
int i;
for(i=0; i<100; i++)
{
scanf("%f", &aa[i]);
bb[i] = i;
}
}
void jsSort()
{
int i,j,temp;
for(i=0; i<100; i++)
{
for(j=i; j<100; j++)
{
if (aa[i] < aa[j])
{
temp = aa[i];
aa[i] = aa[j];
aa[j] = temp;
temp = bb[i];
bb[i] = bb[j];
bb[j] = temp;
}
}
}
}
void WriteDat()
{
int i,j;
for (i=0; i<100; i++)
{
printf("student %d, score %f\n", bb[i]+1;, aa[i]);
}
}
void main()
{
ReadDat();
jsSort();
WriteDat();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询