⑴ c語言作業題4
#include "stdio.h"
#include "conio.h"
int a[1000];
int num[1000];
int main(void)
{
int n=0,i,j,k,tmp,m;
freopen("C:\\filein.txt","r",stdin);
while(scanf("%d",&a[n])!=EOF)
{
num[n]=a[n];
n++;
}
for(i=0;i<n;i++)//選擇排序
{
k=i;
for(j=i+1;j<n;j++)
{
if(num[j]>num[k])k=j;
}
tmp=num[i];
num[i]=num[k];
num[k]=tmp;
}
j=1;
for(i=1;i<n;i++)
{
if(num[i]!=num[i-1])
num[j++]=num[i];
}
m=j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(num[j]==a[i])break;
}
if(i)putchar(',');
printf("%d(%d)",a[i],j+1);
}
puts("");
freopen("C:\\fileout.txt","w",stdout);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(num[j]==a[i])break;
}
if(i)putchar(',');
printf("%d(%d)",a[i],j+1);
}
puts("");
return 0;
}
⑵ c語言作業
編譯器:codeblock
代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//define N 1000000
int main()
{
int shu[11];
int n,i,te,ans=1;
for(i=1;i<11;i++) shu[i]=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&te);
shu[te]++;
}
for(i=2;i<11;i++)
{
if(shu[ans]<shu[i]) ans=i;
}
printf("%d appears %d times\n",ans,shu[ans]);
return 0;
}
⑶ 學了一學期的C語言,要做大作業。 求一個500行C語言程序代碼。 可以在VC++6.0上運行的。
//戶籍管理系統, 應該能滿足你的要求。
//多給點財富吧
#include<stdio.h>
#include<stdlib.h>
typedef struct tagHuJiXinXi
{
char shfzhh[64]; //身份證號
char xm[16]; //姓名
char xb[8]; //性別
int nl; //年齡
char xl[64]; //學歷
char zhzh[64]; //住址
char dh[32]; //電話
}HuJiXinXi,*PtHuJiXinXi;
void readfromfile();
void writetofile();
void tuichu();
void add();
void outputone();
void outputall();
void sortbyage();
void myrealloc();
void findbyagerange();
void del();
void alter();
void find();
void showmenu();
void processmenu(int m);
PtHuJiXinXi pt;
int count=0,capacity=16;
int main()
{
int m;
pt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
readfromfile();
while(1)
{
showmenu();
scanf("%d",&m);
processmenu(m);
}
system("PAUSE");
return EXIT_SUCCESS;
}
void processmenu(int m)
{
switch(m)
{
case 0:
tuichu();
break;
case 1:
add();
break;
case 2:
del();
break;
case 3:
alter();
break;
case 4:
outputall();
break;
case 5:
sortbyage();
break;
case 6:
findbyagerange();
break;
case 7:
writetofile();
break;
case 8:
find();
break;
default:
printf("不可識別的命令。\n");
}
}
//實現存儲空間的自動擴充
void myrealloc()
{
if(count+1>=capacity)
{
int i;
capacity*=2;
PtHuJiXinXi temppt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
for(i=0;i<count;i++)
{
temppt[i]=pt[i];
}
free(pt);
pt=temppt;
}
}
void readfromfile()
{
char f[128];
FILE *inf;
HuJiXinXi hjxx;
printf("請輸入包含戶籍信息的文件的文件名,如果還沒有文件,請輸入omit(文件中每行一條戶籍信息,");
printf("格式:身份證號 姓名 性別 年齡 學歷 住址 電話)...\n");
gets(f);
if(!strcmp(f,"omit"))
{
return;
}
inf=fopen(f,"r");
if(NULL!=inf)
{
do
{
fscanf(inf,"%s %s %s %d %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,&hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
myrealloc();
pt[count++]=hjxx;
}while(!feof(inf));
fclose(inf);
printf("信息已成功載入。\n");
}
else
{
printf("文件名無效或文件無數據。\n");
}
}
void writetofile()
{
char f[128]={'\0'};
FILE *outf;
int i;
printf("請輸入保存戶籍信息的文件的文件名:\n");
scanf("%s",f);
outf=fopen(f,"w");
if(NULL!=outf)
{
for(i=0;i<count;i++)
{
fprintf(outf,"%s %s %s %d %s %s %s",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
if(count-1!=i)
{
fprintf(outf,"%s","\n");
}
}
fclose(outf);
printf("文件保存成功。\n");
}
else
{
printf("文件名無效。\n");
}
}
void showmenu()
{
char menu[]="菜單:\n0、退出\n1、添加一條信息\n2、刪除一條信息\n3、批量修改\n4、瀏覽全部信息\n5、按年齡排序 \n6、按年齡區間查詢\n7、保存到文件\n8、隨意查詢\n請選擇一個菜單:";
puts(menu);
}
void tuichu()
{
if(NULL==pt)
{
free(pt);
}
exit(0);
}
//判斷身份證號是否重復
int isshfzhhchf(char s[64])
{
int i,r=0;
for(i=0;i<count;i++)
{
if(!strcmp(pt[i].shfzhh,s))
{
r=1;
break;
}
}
return r;
}
void add()
{
myrealloc();
printf("添加一條戶籍信息。\n");
printf("請輸入身份證號 姓名 性別 年齡 學歷 住址 電話:\n");
scanf("%s %s %s %d %s %s %s",pt[count].shfzhh,pt[count].xm,pt[count].xb,&pt[count].nl,
pt[count].xl,pt[count].zhzh,pt[count].dh);
if(!isshfzhhchf(pt[count].shfzhh))
{
count++;
printf("添加成功。\n");
}
else
{
printf("身份證號重復,添加失敗。\n");
}
}
//輸出下標為n的一條戶籍信息
void outputone(int n)
{
if(n>=0 && n<count)
{
printf("第%d條戶籍信息:\n",n+1);
printf("%s %s %s %d %s %s %s。\n",pt[n].shfzhh,pt[n].xm,pt[n].xb,pt[n].nl,pt[n].xl,pt[n].zhzh,pt[n].dh);
}
else
{
printf("沒有第%d條戶籍信息存在。\n",n+1);
}
}
void outputall()
{
if(0==count)
{
printf("系統已空。\n");
}
else
{
int i;
for(i=0;i<count;i++)
{
outputone(i);
}
}
}
void sortbyage()
{
int i,j,px;
HuJiXinXi hjxx;
printf("子菜單:\n1、升序\n2、降序\n請選擇:");
scanf("%d",&px);
if(1==px || 2==px)
{
for(i=0;i<count-1;i++)
{
for(j=0;j<count-i-1;j++)
{
if(1==px)
{
if(pt[j].nl>pt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
else
{
if(pt[j].nl<pt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
}
}
printf("排序完成。\n");
}
else
{
printf("無法處理的子菜單命令。\n");
}
}
void findbyagerange()
{
int i,min,max,c=0;
printf("請輸入要查找的戶籍信息的最小年齡和最大年齡:");
scanf("%d %d",&min,&max);
printf("查詢結果如下:\n");
for(i=0;i<count;i++)
{
if(pt[i].nl>=min && pt[i].nl<=max)
{
outputone(i);
printf("符合你的要求。\n");
c++;
}
}
if(0==c)
{
printf("沒有符合你的要求的戶籍信息。\n");
}
}
//刪除一條戶籍信息
void del()
{
int i,n;
HuJiXinXi hjxx;
printf("請輸入要刪除的是第幾條戶籍信息:");
scanf("%d",&n);
if(n-1>=0 && n-1<count)
{
hjxx=pt[n-1];
for(i=n;i<count;i++)
{
pt[i-1]=pt[i];
}
printf("刪除成功。\n第%d條戶籍信息:\n",n);
printf("%s %s %s %d %s %s %s。",hjxx.shfzhh,hjxx.xm,hjxx.xb,hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
printf(",已刪除。\n");
count--;
}
else
{
printf("刪除失敗。\n不存在第%d條戶籍信息。\n",n);
}
}
//根據hjxx的值修改下標為n的戶籍信息
//對於pt[n]的對應欄位,如果在hjxx中是用*表示的,則不修改
void change(HuJiXinXi hjxx,int n)
{
//返回非0值,意味著hjxx.shfzhh(身份證號)不等於*,即需要修改pt[n].shfzhh欄位,以下都類似
if(strcmp(hjxx.shfzhh,"*"))
{
strcpy(pt[n].shfzhh,hjxx.shfzhh);
}
if(strcmp(hjxx.xm,"*"))
{
strcpy(pt[n].xm,hjxx.xm);
}
if(strcmp(hjxx.xb,"*"))
{
strcpy(pt[n].xb,hjxx.xb);
}
//不等於-1表示需要修改pt[n].nl(年齡)
if(-1!=hjxx.nl)
{
pt[n].nl=hjxx.nl;
}
if(strcmp(hjxx.xl,"*"))
{
strcpy(pt[n].xl,hjxx.xl);
}
if(strcmp(hjxx.zhzh,"*"))
{
strcpy(pt[n].zhzh,hjxx.zhzh);
}
if(strcmp(hjxx.dh,"*"))
{
strcpy(pt[n].dh,hjxx.dh);
}
}
//對戶籍信息進行批量修改
void alter()
{
int n;
HuJiXinXi hjxx;
char nl[16];
while(1)
{
printf("請輸入要修改第幾條戶籍信息(-1退出循環):");
scanf("%d",&n);
if(-1==n)
{
break;
}
else if(n-1>=0 && n-1<count)
{
printf("修改...\n");
outputone(n-1);
printf("請輸入將此戶籍信息修改後的新的姓名 性別 年齡 學歷 住址 電話(保持原值的用*代替):\n");
scanf("%s %s %s %s %s %s",hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因為只有nl(年齡)是int型,故對nl作特殊處理,-1表示修改時年齡保持原值不變(不修改)
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
strcpy(hjxx.shfzhh,"*");
change(hjxx,n-1);
printf("修改完成。\n");
}
else
{
printf("無法修改,不存在第%d條戶籍信息。\n",n);
}
}
}
//用於判斷pt[n]是否匹配hjxx的模式
int ismatch(HuJiXinXi hjxx,int n)
{
int r=1;
if(strcmp(hjxx.shfzhh,"*") && strcmp(hjxx.shfzhh,pt[n].shfzhh))
{
r=0;
}
if(r && strcmp(hjxx.xm,"*") && strcmp(hjxx.xm,pt[n].xm))
{
r=0;
}
if(r && strcmp(hjxx.xb,"*") && strcmp(hjxx.xb,pt[n].xb))
{
r=0;
}
if(r && -1!=hjxx.nl && hjxx.nl!=pt[n].nl)
{
r=0;
}
if(r && strcmp(hjxx.xl,"*") && strcmp(hjxx.xl,pt[n].xl))
{
r=0;
}
if(r && strcmp(hjxx.zhzh,"*") && strcmp(hjxx.zhzh,pt[n].zhzh))
{
r=0;
}
if(r && strcmp(hjxx.dh,"*") && strcmp(hjxx.dh,pt[n].dh))
{
r=0;
}
return r;
}
//按模式查詢戶籍信息
void find()
{
int i,c=0;
char nl[16];
HuJiXinXi hjxx;
printf("請輸入要查詢的戶籍信息的身份證號 姓名 性別 年齡 學歷 住址 電話(只需提供關鍵信息以用於查詢,不提供的信息請用*代替):\n");
scanf("%s %s %s %s %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因為只有nl(年齡)是int型,故對nl作特殊處理,-1表示查詢時不需比較年齡
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
for(i=0;i<count;i++)
{
if(ismatch(hjxx,i))
{
printf("找到第%d條滿足你的模式要求的戶籍信息如下:\n",c+1);
printf("%s %s %s %d %s %s %s。\n",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
c++;
}
}
if(!c)
{
printf("系統中沒有滿足你的模式要求的戶籍信息。\n");
}
}
⑷ 幫我寫一下C語言大作業吧,非常緊急,是關於猜價格游戲的。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void introction(){
printf("猜價格游戲,。。。。。\n");
}
int startgame(){
int price,player;
int i;
time_t t;
srand((unsigned)time(&t));
price=rand()%101+100;
printf("%d\n",price);
for(i=0;i<6;i++){
printf("請輸入價格:");
scanf("%d",&player);
if(player>price)
printf("高\n");
else if(player<price)
printf("低\n");
else{
printf("恭喜你!猜對了!\n");
return i;
break;
}
}
printf("很遺憾!沒有猜對!\n");
return -1;
}
double winingper(int winnum,int total){
double per,prinper;
if(total==0){
printf("你還沒有進行游戲!\n");
return -1;
}
per=(double)winnum/total;
prinper=per*100;
printf("你的勝率為:%.1lf % \n",prinper);
return prinper;
}
int average(int score,int num){
if(num==0){
printf("你還沒有進行游戲!\n");
return -1;
}
printf("你的平均分為:%d\n",score/num);
return score/num;
}
int gameover(){
exit(1);
}
void menu(){
printf("***********menu*************\n");
printf("1.游戲介紹\n");
printf("2.開始游戲\n");
printf("3.輸出勝率\n");
printf("4.輸出平均成績\n");
printf("5.\n");
printf("6.退出遊戲\n");
printf("****************************\n");
}
void main(){
int i,select,flag;
int count=0,wincount=0,score=0;
label:
menu();
scanf("%d",&select);
switch(select){
case 1:introction();goto label;
break;
case 2:flag=startgame();count++;
if(flag!=-1){
wincount++;
score+=(5-flag)*2;
}
goto label;
break;
case 3:winingper(wincount,count);goto label;
break;
case 4:average(score,count);goto label;
break;
case 5:goto label;
break;
case 6:exit(1);
break;
default:
printf("錯誤的選擇項!\n");
break;
}
}
⑸ 求C語言代碼範例
這是我復制的 http://..com/question/245178978.html?fr=uc_push&push=core&group=0 回答者: trialman | 五級 | 2011-3-29 15:47 | 檢舉
你真的很強!!!!!
問題1:
#include <stdio.h>
int main(){
int a,b,c;
char s[10];
float f;
i=i+1;
i++;
++i;
printf("please input integer a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
printf("please input a string\n");
scanf("%s",s);
printf("please input a float number\n");
scanf("%f",&f);
printf("the sum of a,b,c is :%d\n",a+b+c);
printf("the input string is :%s\n",s);
printf("the input float number is:%f\n",f);
return 1;
}
問題2:
#include <stdio.h>
int main(){
int a,b,c;
char s[10];
float f;
k=++i +j; /*把整型變數i和j的和賦給整型變數k,並同時讓i的值增加1.
*/
x=x<<1; /*把整型變數X值擴大一倍
*/
j-=--i; /*在變數i減去1後,將變數j減去變數i
*/
r=j%i; /*計算變數i除變數j的余數r*/
printf("please input integer a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
printf("please input a string\n");
scanf("%s",s);
printf("please input a float number\n");
scanf("%f",&f);
printf("the sum of a,b,c is :%d\n",a+b+c);
printf("the input string is :%s\n",s);
printf("the input float number is:%f\n",f);
return 1;
}
⑹ C語言大作業.
輸入十名顧客的信息到結構體數組中,最後統計這十名中購買商品總額最大的顧客,將他的信息列印輸出。
//並按照下列各式把信息存入到customer.txt中:
//0001 Kate 5 822.8
//0002 Jame 7 2761.9
//2011.1.11 11:37
#include<stdio.h>
#include<math.h>
#define CST_NUM 10//宏定義客戶數目
struct customer
{
int num;
char name[20];
int amount;
float value;
}cst[CST_NUM];//定義結構體customer,並聲明結構體數組cst[CST_NUM].
void printline(void);
void sort_cst(struct customer[],int);
void print_cst(struct customer[],int);
void main(void)
{
FILE *f1;//聲明文件指針
int h=sin(0);//為編譯器裝載float類型
int i;
for(i=0;i<CST_NUM;i++)//從鍵盤讀取客戶信息
{
printline();
printf("請輸入第%d名顧客的編號",i+1);
scanf("%d",&cst[i].num);
putchar('\n');
fflush(stdin);//清流
printf("請輸入第%d名顧客的姓名",i+1);
scanf("%s",cst[i].name);
putchar('\n');
fflush(stdin);//清流
printf("請輸入第%d名顧客的商品數量",i+1);
scanf("%d",&cst[i].amount);
putchar('\n');
printf("請輸入第%d名顧客的商品總額",i+1);
scanf("%f",&cst[i].value);
putchar('\n');
fflush(stdin);//清流
}
sort_cst(cst,CST_NUM);//客戶信息排序
print_cst(cst,CST_NUM);//將客戶信息輸出至屏幕
f1=fopen("customer.txt","w");//打開文件
fprintf(f1,"客戶編號 客戶姓名 商品數量 商品總額\n");
for(i=0;i<CST_NUM;i++)
{
fprintf(f1,"%5d%12s%10d%10.1f\n",cst[i].num,cst[i].name,cst[i].amount,cst[i].value);//存入客戶信息
}
fclose(f1);//關閉文件
getch();
}
void sort_cst(struct customer cst[],int cst_num)//自定義函數:客戶信息排序
{
int i,j;
struct customer temp;
for(i=0;i<cst_num;i++)
{
for(j=0;j<cst_num;j++)
{
if(cst[i].value>cst[j].value)
{
temp=cst[i];
cst[i]=cst[j];
cst[j]=temp;
}
} }
}
void print_cst(struct customer cst[],int cst_num)//自定義函數:客戶信息顯示
{
int i;
printline();
printf("客戶編號 客戶姓名 商品數量 商品總額\n");
for(i=0;i<cst_num;i++)
{
printf("%5d",cst[i].num);
printf("%12s",cst[i].name);
printf("%10d",cst[i].amount);
printf("%10.1f\n",cst[i].value);
}
printline();
}
void printline(void)//自定義函數:畫線
{
int i;
printf("\n");
for(i=0;i<50;i++)
{
printf("_");
}
printf("\n");
}
⑺ C語言大作業,C語言高手們救下小弟啊```
這是我在大學做過的課程設計,你看看:
/*
程序功能:
能完成每位學生的某門課程的平時成績和期末考試成績的錄入,
完成每位學生的總評成績計算(平時成績*30%+期末考試成績*70%)並生成數據文件,
生成分數段統計文件(不及格人數,60-69數,70-79人數,80-89人數,90-100人數,及格率),
通過學生成績的數據文件查詢學生成績(查詢條件自定)。
通過學生成績的分段統計文件輸出學生成績分段情況和及格率。
程序要求:
(1)能夠完成300人以內任何人數的成績處理。
(2)程序要有主控菜單
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stud
{
long num;
char name[20];
double score;
};
typedef struct stucode
{
struct stud student ;
struct stucode *next;
}L;
void menu();
void createlist(struct stucode **r);
void out(struct stucode *r);
void search1(struct stucode *r);
void search2(struct stucode *r);
void del(struct stucode **r);
void insert(struct stucode **r);
void sort(struct stucode **r);
void main()
{
char choose;
int flag=1;
struct stucode *r=NULL;
while(flag)
{
system("cls");
menu();
choose=getchar();
switch(choose)
{
case '1':
createlist(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '2':
search1(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '3':
search2(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '4':
del(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '5':
insert(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '6':
sort(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '7':
out(r);
printf("Testing function 7\nPress any key to continue\n");
getchar();
getchar();
break;
case '0':
flag=0;
printf("The end.\n");
break;
default: printf("\nWrong Selection!(選擇錯誤,請重選!)\n");getchar();getchar();
}
}
}
void createlist(struct stucode **r)
{
struct stucode *p,*t;
long n;
char a[20];
double s;
if(*r) *r=NULL;
printf(" \n請輸入:\n 學號(請按學號升序排列) 姓名 分數 (若要結束請輸入三個為零)\n");
scanf("%ld%s%lf",&n,a,&s);
if(n==0) return;
p=(L *)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
*r=p;
scanf("%ld%s%lf",&n,a,&s);
while(n)
{
t=p;
p=(L *)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
t->next=p;
scanf("%ld%s%lf",&n,a,&s);
}
}
void search1(struct stucode *r)
{
long x;
if(!r)
{
printf("沒有學生信息可查詢!\n");
return ;
}
printf(" 請輸入要查詢的學生信息的學生學號:\n");
scanf("%ld",&x);
while(r&&r->student.num!=x)
r=r->next;
if(r==NULL)
printf("Error! No such student !\n");
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);
}
void search2(struct stucode *r)
{
char m[20];
if(!r)
{
printf("沒有學生信息可查詢!\n");
return ;
}
printf(" 請輸入要查詢的學生信息的學生姓名:\n");
scanf("%s",m);
while(r&&strcmp(r->student.name,m))
r=r->next;
if(r==NULL)
printf("Error! No such student !\n");
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);
}
void del(struct stucode **r)
{
long k;
struct stucode *p=*r,*t;
if(!(*r))
{
printf("沒有學生信息可刪除 !\n");
return ;
}
printf(" 請輸入要刪除的學生信息的學生學號:\n");
scanf("%ld",&k);
if(p->student.num==k)
*r=(*r)->next,free(p);
else
{
while(p->next&&p->next->student.num!=k)
p=p->next;
if(p->next==NULL)
printf("Error! No such student !\n");
else
{
t=p->next;
p->next=p->next->next;
free(t);
}
}
}
void insert(struct stucode **r)
{
long n;
char a[20];
double s;
L *p,*t,*k;
printf(" 請輸入要插入的學生信息的學生學號 姓名 分數:\n");
scanf("%ld%s%lf",&n,a,&s);
p=(L *)malloc(sizeof(L));
p->student.num=n;
p->student.score=s;
strcpy(p->student.name,a);
if(!(*r))
{
*r=p;
(*r)->next=NULL;
return ;
}
if(p->student.num<(*r)->student.num)
p->next=(*r),(*r)=p;
else
{
t=*r;
k=t;
while(t->next&&t->next->student.num<=p->student.num)
t=t->next;
p->next=t->next;
t->next=p;
*r=k;
}
}
void sort(struct stucode **r)
{
struct stucode *t,*p,*q,*z;
if(!r)
{
printf("沒有學生信息可排序!\n");
return ;
}
if(!(*r)||!(*r)->next)
return;
t=*r;
p=t->next;
t->next=NULL;
while(p)
{
q=p->next;
if(p->student.score>t->student.score)
{
p->next=t;
t=p;
}
else
{
z=t;
while(z->next&&z->next->student.score>=p->student.score)
z=z->next;
p->next=z->next;
z->next=p;
}
p=q;
}
*r=t;
}
void out(struct stucode *r)
{
printf("\n\n");
if(!r)
{
printf("沒有學生信息可輸出!\n");
return ;
}
while(r)
{
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);
r=r->next;
}
printf("\n\n");
}
void menu()
{
printf("\n 學生信息管理系統\n");
printf("\n 菜單\n\n");
printf("\n 1建立鏈表並顯示\n");
printf("\n 2查找某學號的學生信息\n");
printf("\n 3查找某姓名的學生信息\n");
printf("\n 4刪除某學號的學生信息\n");
printf("\n 5插入新的學生信息\n");
printf("\n 6按分數降序排列輸出\n");
printf("\n 7輸出\n");
printf("\n 0退出\n");
printf("\n 請選擇您要執行的選項:\n");
}