C++程序设计,成绩排序

C++程序设计,成绩排序,第1张

#include <stdlib.h>

#include <iostream>

#include "time.h"

using namespace std

struct STU{

char id[11],name[15]

int score[5]

double ave

STU *next

}

void getdata(STU (*p)[45]){//输入信息

int i,j,k,t

for(i=0i<4i++)

for(j=0j<45j++){

for(k=0k<5p[i][j].score[k++]=rand()%101)

for(t=1000000000+i*45+j,k=9k>=0p[i][j].id[k--]=t%10+'0',t/=10)

p[i][j].id[10]='\0'

p[i][j].name[0]='S',p[i][j].name[1]='T',p[i][j].name[2]='U'

p[i][j].name[3]=p[i][j].id[7],p[i][j].name[4]=p[i][j].id[8]

p[i][j].name[5]=p[i][j].id[9],p[i][j].name[6]='\0'

}

}

void ave(STU (*p)[45]){//求5门功课平均值并存入ave

for(int i=0i<4i++)

for(int j=0j<45j++){

for(int s=0,k=0k<5s+=p[i][j].score[k++])

p[i][j].ave=s/5.0

}

}

int main(int argc,char *argv[]){

STU stu[4][45],t,*hp

int i,j,k,n,m

srand((unsigned)time(NULL))

getdata(stu)

ave(stu)

for(k=0k<4k++)//冒泡

for(i=0i<45i++)

for(j=0j<44j++)

if(stu[k][j].ave<stu[k][j+1].ave)

t=stu[k][j],stu[k][j]=stu[k][j+1],stu[k][j+1]=t

for(k=0k<4k++){//选择(已经排过了,再排有意义?这题!)并输出

cout <<"CLASS" <<k+1 <<":\n  "//不要输出时删除此行

for(m=i=0i<45i++){

for(n=i,j=n+1j<45j++)

if(stu[k][n].ave<stu[k][j].ave)

n=j

if(n!=i)

t=stu[k][n],stu[k][n]=stu[k][i],stu[k][i]=t

cout <<stu[k][i].ave <<(++m%9 ? "\t" : "\n  ")//不要输出时删除此行

}

cout <<endl//不要输出时删除此行

}

if((hp=new STU[4*45])==NULL){//按要求创建链表

cout <<"Application memory failure, exit...\n"

return 0

}

for(m=i=0i<4i++)//把数据拷贝到链表

for(j=0j<45hp[m++]=stu[i][j++])

for(m=4*45,i=0i<mi++){//按平均值由大到小排序

for(k=i,j=k+1j<mj++)

if(hp[k].ave<hp[j].ave)

k=j

if(k!=i)

t=hp[k],hp[k]=hp[i],hp[i]=t

if(i)

hp[i-1].next=hp+i

}

//以下打出前10个结点看看,若不需要则删除到return 0之前

cout <<"   STUID\tNAME\tSCORE1\tSCORE2\tSCORE3\tSCORE4\tSCORE5\tAVE\n"

cout <<"====================================================================\n"

for(STU *p=hpp!=hp+10p=p->next){

cout <<p->id <<'\t' <<p->name <<'\t' <<p->score[0] <<'\t' <<p->score[1]

cout <<'\t' <<p->score[2] <<'\t' <<p->score[3]  <<'\t' <<p->score[4]

cout <<'\t' <<p->ave <<endl

}

return 0

}

代码格式和运行样例图片:

这段程序是一个功能函数,传过来的参数是x、y、z,然后进行逻辑处理。

主要的逻辑部分其实就是两个选择型结构,比较容易处理。

3. 程序流程图和N-S图分别如下:

上图为程序流程图

上图为N-S图

4. 如果有什么不清楚的地方,欢迎追问,可以相互讨论一下。

1. 首先,编写一段简单的C语言程序,输出百分号,程序代码如下图所示

#include <stdio.h>

void main()

{

printf("输出百分号:%   \n")

}

2.然后,进行编译运行,结果如下,发现并没有输出所要的结果。

3. 对刚才的代码作下修改,如下所示:(即在输出函数中书写俩个百分号)

#include <stdio.h>

void main()

{

printf("输出百分号:%%   \n")

}

4. 最后,在运行测试一下,结果如下图所示:(可以看到输出了百分号)

从上面的分析中,知道,如果要打印输出一个百分号,只需要书写两个百分号就可以了。同理,如果要输出两个百分号,那么书写四个百分号就可以了,依此类推。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/11039483.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存