當前位置:首頁 » 編程語言 » c語言綜合程序設計周信東
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言綜合程序設計周信東

發布時間: 2022-01-13 08:50:10

c語言程序設計 (學生選修課程設計)

這是我做的,你看是否滿意?可能有點大,但也沒辦法呀,你的題目也比較大,呵呵!所以,如果滿意,多給我追加點分!
#include
"stdio.h"
#include
"stdlib.h"
#include
"string.h"
typedef
struct
course
{
char
number[15],name[25];
int
kind,time,lessontime,practicetime,credit,term;
}type;
FILE
*fp1;
void
overview();
//瀏覽函數,負責瀏覽整個課程信息
void
seek();
//查詢函數,負責查詢課程信息
void
choose_course();//選課函數,負責讓用戶選課
void
out(type
temp);
void
input();
int
main()
{
int
n,i;
if((fp1=fopen("course_information.txt","wb"))==NULL)
{printf("創建文件失敗!\n");exit(0);}
printf("請輸入要存儲的課程數目:\n");
scanf("%d",&n);
printf("開始創建文件,請輸入課程信息:\n\n");
for(i=0;i<n;i++)
{
printf("請輸入第%d門課程的信息:\n",i+1);
input();
printf("\n");
}
printf("如想瀏覽整個課程信息,請輸入1;如想查詢課程信息,請輸入2;
如想進行選課,請輸入3;如想結束選修課系統,請輸入0!\n");
while((scanf("%d",&n))!=EOF)
{
if(n==1)
overview();
if(n==2)
seek();
if(n==3)
choose_course();
if(n==0)
exit(0);
printf("\n\n如想繼續操作,只要按規則輸入你要進行的操作即可!\n規則:如想瀏覽整個課程信息,請輸入1;如想查詢課程信息,請輸入2;如想進行選課,請輸入3!\n");
}
printf("歡迎您使用此程序進行選課,謝謝!\n");
fclose(fp1);
return
0;
}
void
input()
{
course
c_a;
printf("請輸入課程編碼:
");
scanf("%s",c_a.number);
printf("請輸入課程名:
");
scanf("%s",c_a.name);
printf("請輸入課程性質:限選課,請輸入1;選修課,請輸入2;必修課,請輸入3!
");
scanf("%d",&c_a.name);
printf("請輸入課程總學時:
");
scanf("%d",&c_a.time);
printf("請輸入課程授課時間:
");
scanf("%d",&c_a.lessontime);
printf("請輸入課程實驗或實踐時間:
");
scanf("%d",&c_a.practicetime);
printf("請輸入課程學分:
");
scanf("%d",&c_a.credit);
printf("請輸入課程所在的學期,比如第二學期,就輸入2即可。");
scanf("%d",&c_a.term);
fwrite(&c_a,sizeof(struct
course),1,fp1);//將一個結構體元素寫入文件中
}
void
out(type
temp)
{
printf("課程代碼:
%s\n課程名:
%s\n",temp.number,temp.name);
printf("課程名:
%s\n",temp.name);
if(temp.kind==1)
printf("課程性質:
Limited
optional
course\n");
else
if(temp.kind==2)
printf("課程性質:
Optional
course\n");
else
if(temp.kind==3)
printf("課程性質:
Required
Courses\n");
else
printf("該編碼系統不認識,即無對應的課程性質存在!\n");
printf("課程總學時:
%d\n課程授課學時:
%d\n實驗或上機學時:
%d\n學分:
%d\n課程開課學期:
%d\n\n",temp.time,temp.lessontime,temp.practicetime,temp.credit,temp.term);
}
void
overview()
{
rewind(fp1);
course
temp;
printf("整個課程信息如下:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
out(temp);
}
void
seek()
{
int
judge,credit=0,kind=0;
char
a='N';
course
temp;
printf("如想按學分查詢,請輸入1;如想按課程性質,請輸入2:\n");
scanf("%d",&judge);
rewind(fp1);
//將文件指針位置置為開頭
if(judge==1)
{
printf("請輸入要查詢的學分:\n");
scanf("%d",&credit);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(credit==temp.credit)
out(temp);
}
else
if(judge==2)
{
printf("請輸入你要查找課程的性質(限選課,請輸入1;選修課,請輸入2;必修課,請輸入3):");
scanf("%d",&kind);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(temp.kind==kind)
out(temp);
}
else
printf("不好意思,無此類查詢!\n");
}
void
choose_course()
{
rewind(fp1);
course
temp;
int
judge=1,n=0,time=0,credit=0;
char
choose[20][20];
r1:
printf("請開始填寫課程編號進行選課:\n");
while(judge==1)
{
printf("請輸入你所選課程的標號:
");
scanf("%s",choose[n]);
n++;
printf("如想繼續選課,請輸入1;如想提交,請輸入0!\n");
scanf("%d",&judge);
}
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{time=time+temp.time;credit=temp.credit;break;}
}
if(time<270||credit<40)
goto
r1;
printf("你所選的課為:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{out(temp);break;}
}
}

⑵ C語言綜合訓練程序設計要求

我現在寫上,好了傳上來。

OK了,先上圖看下。

#include<stdio.h>

#include<conio.h>

#defineMAX100

typedefstruct{

intsn;

charname[11];

intcj;

}student;

intread(student*strp);

voiddisp_max(student*strp,intn);

voiddisp_ave(student*strp,intn);

voiddisp_cj(student*strp,intn);

voidmain()

{

studentstu[MAX];

inti;

i=read(stu);

disp_max(stu,i);

disp_ave(stu,i);

disp_cj(stu,i);

getchar();

}

intread(student*strp){

FILE*fp;

inti;

if((fp=fopen("stuin.dat","r"))==NULL){

printf(" Cannotopenfile!");

getchar();

exit();

}

for(i=0;i<MAX;i++){

if(feof(fp))

break;

fscanf(fp,"%d%s%d",&strp[i].sn,strp[i].name,&strp[i].cj);

}

fclose(fp);

returni;

}

voiddisp_max(student*strp,intn){

inti,max=0;

for(i=0;i<n;i++){

if(strp[i].cj>max)

max=strp[i].cj;

}

printf(" Maxscoreis%d: ",max);

for(i=0;i<n;i++){

if(strp[i].cj==max)

printf(" %d%s%d",strp[i].sn,strp[i].name,strp[i].cj);

}

}

voiddisp_ave(student*strp,intn){

longtotal=0;

inti,big,small,equ;

floatave;

for(i=0;i<n;i++){

total+=strp[i].cj;

}

ave=total/n;

printf(" AVE:");

printf(" %dstudenttotalis%ld,aveis%f.",n,total,ave);

big=0,small=0,equ=0;

for(i=0;i<n;i++){

if(strp[i].cj>(int)ave)

big++;

elseif(strp[i].cj<(int)ave)

small++;

else

equ++;

}

printf(" >aveis%d,<aveis%d,=aveis%d.",big,small,equ);

}

voiddisp_cj(student*strp,intn){

inti,n1=0,n2=0,n3=0,n4=0,n5=0;

for(i=0;i<n;i++){

if(strp[i].cj>89)

n1++;

elseif(strp[i].cj>79)

n2++;

elseif(strp[i].cj>69)

n3++;

elseif(strp[i].cj>59)

n4++;

else

n5++;

}

printf(" score:");

printf(" Excellent=%dis%.2f%",n1,((float)n1/n)*100);

printf(" veryGood=%dis%.2f%",n2,((float)n2/n)*100);

printf(" good=%dis%.2f%",n3,((float)n3/n)*100);

printf(" pass=%dis%.2f%",n4,((float)n4/n)*100);

printf(" Fail=%dis%.2f%",n5,((float)n5/n)*100);

}

測試文件內容

stuin.dat

1001stuname189

1002stuname278

1003stuname365

1013stuname1389

1015stuname1581

1100stuname10087

⑶ c語言程序設計(周信東版)的綜合程序設計如下:編寫程序,從鍵盤輸入某樓6家住戶某月的水電消耗及水費和電費

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
char user[4];
char waterNum[4];
char elecNum[4];
char inlinebuf[32];
char outlinebuf[32];
char pbuf[256];
FILE *fp1;
FILE *fp2;

int WaterNum=0;
int ElecNum=0;
int length =0;
int m=0;
int n=0;
int weishuflag=0;
int flagnum=0;
int i=0;
int j=0;

float waterPrice=0.0;
float elecPrice=0.0;

if((fp1=fopen("./input.dat","r"))==NULL)
{
printf("open input data error!\n");
return -1;
}

if((fp2=fopen("./change.dat","w"))==NULL)
{
printf("open input data error!\n");
return -1;
}

fseek(fp1,0,SEEK_END);
length = ftell(fp1);
fseek(fp1,0,SEEK_SET);
memset(pbuf,0,sizeof(pbuf));

printf("the input data length == %d\n",length);
fread(pbuf,length,1,fp1);

fseek(fp2, 0, SEEK_SET);
sprintf(outlinebuf,"住戶\t\t水費\t\t電費\n");
fputs(outlinebuf, fp2);

while(length--)
{
if(pbuf[m]!='\n')
{
inlinebuf[n]=pbuf[m];
n++;
}
else
{
j = 0;
inlinebuf[n++]='\t'; //為處理每一行的最後一個數據(即用電量),需加入一個tab或空格鍵
inlinebuf[n] = '\0';//一行數據結束
while( inlinebuf[j] != '\0')
{
switch(flagnum)
{
case 0: //用戶
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
user[i]=inlinebuf[j];
i++;
}
else
{
user[i]='\0';
flagnum++;//表示之前獲取的是住戶,下兩個數據分別獲取用水量與用電量
i=0;
}
break;

case 1: //用水量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
waterNum[i]=inlinebuf[j];
i++;
}
else
{
waterNum[i]='\0';
weishuflag=i;//表示當前數據的位數,住戶、用水量、用電量均限制為三位數以內
flagnum++;//表示下個數據獲取的是用電量
if(weishuflag == 1)
{
WaterNum = waterNum[0] - 48;
}
else if(weishuflag == 2)
{
WaterNum = (waterNum[0] - 48)*10 + (waterNum[1] - 48);
}
else
{
WaterNum = (waterNum[0] - 48)*100 + (waterNum[1] - 48)*10 + (waterNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;

case 2: //用電量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
elecNum[i]=inlinebuf[j];
i++;
}
else
{
elecNum[i]='\0';
weishuflag=i;//表示當前數據的位數,住戶、用水量、用電量均限制為三位數以內
flagnum = 0;//表示一行三個數據獲取完畢
if(weishuflag == 1)
{
ElecNum = elecNum[0] - 48;
}
else if(weishuflag == 2)
{
ElecNum = (elecNum[0] - 48)*10 + (elecNum[1] - 48);
}
else
{
ElecNum = (elecNum[0] - 48)*100 + (elecNum[1] - 48)*10 + (elecNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;
default:
break;
}
j++;
}
waterPrice = (float)WaterNum * 1.5;
elecPrice = (float)ElecNum * 0.5;
printf("The user == %s,waterNum == %d,elecNum == %d\n",user,WaterNum,ElecNum);//列印用戶,用水量,用電量
printf("The user == %s,waterPrice == %.1f,elecPrice == %.1f\n\n",user,waterPrice,elecPrice);//列印用戶,水費,電費
sprintf(outlinebuf,"%3s \t\t%4.1f \t\t%4.1f\n",user,waterPrice,elecPrice);

fputs(outlinebuf, fp2);//寫入每一行數據(數據格式為 住戶 + 水費 + 電費)
memset(outlinebuf,0,sizeof(outlinebuf));
memset(inlinebuf,0,sizeof(inlinebuf));
n=0; //一行數據處理結束,開始新的一行
}
m++;
}

fclose(fp1);
fclose(fp2);
return 0;
}
input.dat(每一行數據分別為住戶 用水量 用電量,以空格或tab鍵隔開,且每行數據必須以回車結尾)
101 5 150
201 4 90
301 4 120
401 3 78
501 4 60
601 6 105
charge.dat (輸出文件格式如下)
住戶 水費 電費
101 7.5 75.0
201 6.0 45.0
301 6.0 60.0
401 4.5 39.0
501 6.0 30.0
601 9.0 52.5

⑷ C語言程序設計這門課程第三章綜合實例(初級)的知識點有哪些

C語言程序設計這門課第三章綜合實例(初級)的知識點包含【初級】第14講-打字游戲(上)-主界面,【初級】第15講-打字游戲(中)-退出遊戲,【初級】第16講-打字游戲(下)-開始游戲,。

⑸ 急求C語言綜合設計(編寫程序處理10個學生的信息......)

#include<stdio.h>
#include<string.h>
typedef struct node{
int num;
char name[20];
char sex;
int math;
int eng;
int pol;
}elemsn;
void claug(elemsn s[],int n)
{
int i;
double aug;
printf("name average gread\n");
printf("_______________________________\n");
for(i=0;i<n;i++)
{
int sum=0;
sum=s[i].math+s[i].eng+s[i].pol;
aug=(double)sum/3;
printf("%s\t\t%lf\n",s[i].name,aug);

}
}
int main()
{
elemsn s[10];
int i,nu,ma,en,po;
char n[20],sex;
printf("please input students information:\n");
printf("___________________________________\n");
for(i=0;i<10;i++)
{
printf("number:");
scanf("%d",&nu);
s[i].num=nu;
fflush(stdin);
printf("name:");
gets(n);
strcpy(s[i].name,n);
printf("sex:");
scanf("%c",&s);
s[i].sex=sex;
printf("gread:Math,English,Political\t");
scanf("%d%d%d",&ma,&en,&po);
s[i].math=ma;
s[i].eng=en;
s[i].pol=po;//結構體初始化值。
}//必須一個一個鍵入。
claug(s,10);
return 0;
}

⑹ 求C語言程序綜合設計

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>

typedef struct _student
{
char name[30];
int number;
int chinese, math;
int total;
} student;

int index = 0;
student ss[100];

void asort()
{
int i, j, k;

for (i = 0; i < index-1; ++i)
{
k = i;

for (j = i + 1; j < index; ++j)
{
if (ss[k].total < ss[j].total)
{
k = j;
}
}

if (k != i)
{
student s;
memcpy(&s, &ss[i], sizeof(student));
memcpy(&ss[i], &ss[k], sizeof(student));
memcpy(&ss[k], &s, sizeof(student));
}
}
}

void input()
{
printf("\n請輸入學生信息(姓名、學號、語文、數學成績)!結束輸入。\n");

while (1)
{
scanf("%s", ss[index].name);

if (ss[index].name[0] == '!')
break;

scanf("%d %d %d", &ss[index].number, &ss[index].chinese, &ss[index].math);
ss[index++].total = ss[index].chinese + ss[index].math;
}
}

void rank()
{
int i = 0, r = 1;
printf("\nNo: Total: Name:\n");

for (; i < index - 1; ++i)
{
printf("%d\t\t%d\t\t%s\n", r, ss[i].total, ss[i].name);

if (ss[i].total != ss[i+1].total)
++r;
}

printf("%d\t\t%d\t\t%s\n", r, ss[i].total, ss[i].name);
}
void find()
{
char nm[30];
int i;

printf("\n請輸入需要查找的學生名:\n");
scanf("%s", nm);

for (i = 0; i < index; ++i)
{
if (!strcmp(ss[i].name, nm))
break;
}

if (i < index)
printf("學號:%d\t姓名:%s\t語文成績:%d\t數學成績:%d\t總成績:%d\n",
ss[i].number, ss[i].name, ss[i].chinese, ss[i].math, ss[i].total);
else
printf("沒有找到合適的記錄!\n");
}

void statistic()
{
int min, max, i, tt;
float avg = 0., pr = 0.;
max = tt = 0;
min = 100;

for (i = 0; i < index; ++i)
{
tt += ss[i].chinese;

if (ss[i].chinese < min)
min = ss[i].chinese;

if (ss[i].chinese > max)
max = ss[i].chinese;

if (ss[i].chinese > 60)
++pr;
}

avg = (float)tt / index;

if (index == 1)
{
if (ss[0].chinese < 60)
pr = 0.;
else
pr = 100.;
}
else
pr = (pr / index) * 100;

printf("\n語文成績的平均分、及格率、最高分、最低分是:%0.2f %0.2f %d %d\n",
avg, pr, max, min);

avg = pr = 0.;
max = tt = 0;
min = 100;

for (i = 0; i < index; ++i)
{
tt += ss[i].math;

if (ss[i].math < min)
min = ss[i].math;

if (ss[i].math > max)
max = ss[i].math;

if (ss[i].math > 60)
++pr;
}

avg = (float)tt / index;

if (index == 1)
{
if (ss[0].math < 60)
pr = 0.;
else
pr = 100.;
}
else
pr = (pr / index) * 100;

printf("語文成績的平均分、及格率、最高分、最低分是:%0.2f %0.2f %d %d\n",
avg, pr, max, min);
}

void display()
{
int i = 0;
printf("\n學號\t姓名\t語文成績\t數學成績\t總成績\n");

for (;i < index; ++i)
{
printf("%d\t%s\t%d\t\t%d\t\t%d\n", ss[i].number, ss[i].name,
ss[i].chinese, ss[i].math, ss[i].total);
}
}

void menu()
{
int choice;

while (1)
{
puts("\n\n請輸入你想進行的操作:\n");
puts("1. 添加學生 2. 總分排名 3. 查找信息");
puts("4. 顯示統計 5. 成績表 0. 退出程序");

do
scanf("%d", &choice);
while (choice < 0 || choice > 5);

if (choice == 0) break;

switch (choice)
{
case 1:
input();
asort();
break;
case 2:
rank();
break;
case 3:
find();
break;
case 4:
statistic();
break;
case 5:
display();
break;
}
}
}

int main(void)
{
menu();
return 0;
}

⑺ c語言程序設計

#include <stdio.h>
#include <string.h>
#define N 4

struct student
{
char name[20];
int temp;
int Chinese;
int English;
int Score;
};

int Initliaze(struct student stu[],int inum); //初始化
int Input(struct student stu[],int inum); //賦值
int Output(struct student stu[],int inum); //輸出
int Order(struct student stu[],int inum); //排序

void main()
{
struct student stu[N];
Initliaze(stu,N);
Input(stu,N);
Output(stu,N); //輸出總值
printf("\n");
Order(stu,N);
Output(stu,N); //輸出排序後的值
printf("\n");
}
int Initliaze(struct student stu[],int inum) //對數字進行初始化
{
for(int i=0;i<inum;i++)
{
strcpy(stu[i].name, " ");
stu[i].temp=0;
stu[i].Chinese=0;
stu[i].English=0;
stu[i].Score=0;
}
return 0;
}
int Input(struct student stu[],int inum)
{
int i;
for(i=0;i<inum;i++)
{
printf("請輸入姓名,學號,語文成績,英語成績:");
scanf("%s",stu[i].name);
scanf("%d%d%d",&stu[i].temp,&stu[i].Chinese,&stu[i].English);

stu[i].Score = stu[i].Chinese + stu[i].English;
}

return 0;
}
int Output(struct student stu[],int inum)
{
printf("\n 姓名 學號 語文 英語 總分\n");
for(int i=0;i<inum;i++)
printf(" %s %d %d %d %d \n",stu[i].name,stu[i].temp,stu[i].Chinese,stu[i].English,stu[i].Score);
return 0;
}
int Order(struct student stu[],int inum)
{
struct student add;
for(int i=0;i<inum-1;i++)
{
for(int j=i+1;j<inum;j++)
{
if(stu[i].Score<stu[j].Score)
{
add=stu[i];
stu[i]=stu[j];
stu[j]=add;
}
}
}
return 0;

}

⑻ 程序設計綜合題 C語言

第一個

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 學號 */
char name[20];
char sex[4];
char yuan;
int ban;
char neartime[10];/* 最近更新時間 */
};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************************************************************************");
printf("\t1登記學生資料\t\t\t\t\t2刪除學生資料\n");
printf("\t3查詢學生資料\t\t\t\t\t4修改學生資料\n");
printf("\t5保存學生資料\t\t\t\t\t0退出系統\n");
printf("********************************************************************************\n");
}

void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:輸入錯誤!\n");
}

void Nofind()
{
printf("\n=====>提示:沒有找到該學生!\n");
}

void printc() /* 本函數用於輸出中文 */
{
printf("學號\t 姓名 性別 學院 班級\n");
}

void printe(Node *p)/* 本函數用於輸出英文 */
{
printf("%-12s%s\t%s\t%c\t%d\n",p->data.num,p->data.name,p->data.sex,p->data.yuan,p->data.ban);
}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 該函數用於定位連表中符合要求的接點,並返回該指針 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按學號查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}

void Add(Link l) /* 增加學生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 將指針置於最末尾 */
while(1)
{
printf("請你輸入學號(以'0'返回上一級菜單:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:學號為'%s'的學生已經存在,若要修改請你選擇'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("請你輸入姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入性別:");
scanf("%s",p->data.sex);
getchar();
printf("請你輸入學院:");
scanf("%c",&p->data.yuan);
getchar();
printf("請你輸入班級:");
scanf("%d",&p->data.ban);
getchar();
/* 信息輸入已經完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1; }

}

void Qur(Link l) /* 查詢學生 */
{
int sel;
char findmess[20];
Node *p;

if(!l->next)
{
printf("\n=====>提示:沒有資料可以查詢!\n");
return;

}
printf("\n=====>1按學號查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/* 學號 */
{
printf("請你輸入要查找的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}
void Del(Link l) /* 刪除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以刪除!\n");
return;
}
printf("\n=====>1按學號刪除\n=====>2按姓名刪除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("請你輸入要刪除的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("請你輸入要刪除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}

void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以修改!\n");
return;
}
printf("請你輸入要修改的學生學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("請你輸入新學號(原來是%s):",p->data.num);
scanf("%s",p->data.num);
printf("請你輸入新姓名(原來是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("請你輸入新性別(原來是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("請你輸入新的學院:",p->data.yuan);
scanf("%c",&p->data.yuan);
getchar();
printf("請你輸入新的班級(原來是%d):",p->data.ban);
scanf("%d",&p->data.ban);
getchar();
printf("\n=====>提示:資料修改成功!\n");
shoudsave=1;
}
else
Nofind();

}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d條記錄已經保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}

void main()
{
Link l;/* 連表 */
FILE *fp; /* 文件指針 */
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;
printf("\t\t\t\t學生成績管理系統\n\t\t\t\t-------建築電氣及智能化0801\n");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件還不存在,是否創建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已經打開,正在導入記錄......\n");

while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 將文件的內容放入接點中 */
{
p->next=NULL;
r->next=p;
r=p; /* 將該接點掛入連中 */
count++;
}
}

fclose(fp); /* 關閉文件 */
printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count);

while(1)
{
menu();
printf("請你選擇操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已經退出系統,再見!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加學生 */
case 2:Del(l);break;/* 刪除學生 */
case 3:Qur(l);break;/* 查詢學生 */
case 4:Modify(l);break;/* 修改學生 */
case 5:Save(l);break;/* 保存學生 */
case 9:printf("\t\t\t==========幫助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}

第二個:

#include<stdio.h>

//定義結構體
struct student
{
int number;
char name[20];
float score1;
float score2;
float score3;
float ave;
};

//單個學員錄入函數
void input(struct student *st)
{
printf("\n學號: ");
scanf("%d",&st->number);
printf("姓名: ");
fflush(stdin);
gets(st->name);
printf("三門課成績:\n成績1: ");
scanf("%f",&st->score1);
printf("成績2: ");
scanf("%f",&st->score2);
printf("成績3: ");
scanf("%f",&st->score3);
st->ave=(st->score1+st->score2+st->score3)/3;
}

//顯示學員信息函數
void display(struct student *st,int n)
{
int i;
printf("\n\t學號\t姓名\t平均成績\n");
for(i=0; i<n; i++)
{
printf("\t%d\t%s\t%5.2f\n",st->number,st->name,st->ave);
st++;
}
}

//排序函數,大到小
void sorting(struct student stu[],int n)
{
struct student temp;
int i,j;
for(i=0; i<n-1; i++)
{
for(j=0; j<n-i-1; j++)
{
if(stu[j].ave<stu[j+1].ave)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}

//插入函數
void insertinfo(struct student stu[], struct student *st1, int n)
{
int i,j;
for(i=0; i<n; i++)
{
if(stu[i].ave<st1->ave)
break;
}
for(j=n; j>i; j--)
stu[j]=stu[j-1];
stu[i]=*st1;
}

//刪除學員信息函數
void deleteinfo(struct student stu[], int num, int n)
{
int i,j;
for(i=0; i<n; i++)
{
if(stu[i].number==num)
break;
}
for(j=i; j<n; j++)
stu[j]=stu[j+1];
}

void main()
{
struct student stu[50],stu1;
char ch;
int i=0,num;

//通過調用函數錄入學員的信息
printf(" 請輸入學員信息: \n\n");
do
{
input(&stu[i++]);
printf("是否繼續(Y/N)? ");
fflush(stdin);
ch=getchar();
}while(ch=='Y'||ch=='y');

//顯示學員信息
printf("\n排序前學員的信息如下: \n");
display(stu,i);

//排序函數
sorting(stu,i);

//顯示學員信息
printf("\n排序後學員的信息如下: \n");
display(stu,i);

//插入函數
printf("\n是否要插入新學員(Y/N)? ");
fflush(stdin);
ch=getchar();
while(ch=='Y'||ch=='y')
{
printf("\n請輸入要插入學員的信息: \n");
input(&stu1);
insertinfo(stu,&stu1,i);
i++;
printf("\n是否繼續插入新學員(Y/N)? ");
fflush(stdin);
ch=getchar();
}

//顯示學員信息
printf("\n插入後學員的信息如下: \n");
display(stu,i);

//刪除函數
printf("\n是否要刪除某個學員(Y/N)? ");
fflush(stdin);
ch=getchar();
while(ch=='Y'||ch=='y')
{
printf("\n請輸入要刪除學員的學號: \n");
scanf("%d",&num);
deleteinfo(stu,num,i);
i--;
printf("\n是否繼續刪除某個學員(Y/N)? ");
fflush(stdin);
ch=getchar();
}

//顯示學員信息
printf("\n刪除後學員的信息如下: \n");
display(stu,i);
}

⑼ C語言程序綜合編程

好巧啊,前幾天我們期末復習講到這一題了

1.改變語句const char username[10]="12345",的初始值可以改變學生的賬號

2.改變語句const int password=12345,的初始值可以改變學生的密碼