當前位置:首頁 » 編程語言 » c語言班級文件
擴展閱讀
c語言系列使用方法 2022-07-05 20:04:11

c語言班級文件

發布時間: 2022-05-18 22:13:26

1. c語言--班級管理系統

#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct scorenode)
#define DEBUG
#include <string.h>
struct scorenode
{int number;/*學號*/
char name[10];/*姓名*/
float yuwen;/*語文成績*/
float yingyu;/*英語成績*/
float shuxue;/*數學成績 */
struct scorenode *next;
};
typedef struct scorenode score;
int n,k;/*n,k為全局變數,本程序中的函數均可以使用它*/
/*==============================================================================================*/
score *creat2311(void)
/*函數creat2311,功能:創建鏈表,此函數帶回一個指向鏈表頭的指針*/
{
score*head;
score *p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
n=0;
p1=p2=p3=(score *)malloc(LEN);head=p3; /*開辟一個新單元*/
printf("請輸入學生資料,輸0退出!\n");
repeat1: printf("請輸入學生學號(學號應大於0):");/*輸入學號,學號應大於0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&p1->number);}
/*輸入學號為字元或小於0時,程序報錯,提示重新輸入學號*/
if(p1->number==0)
goto end;/*當輸入的學號為0時,轉到末尾,結束創建鏈表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat1;
/*當輸入的學號已經存在,程序報錯,返回前面重新輸入*/
}
}
}
}
printf("請輸入學生姓名:");
scanf("%s",&p1->name);/*輸入學生姓名*/
printf("請輸入語文成績(0~100):");/*輸入語文成績,成績應在0-100*/
scanf("%f",&p1->yuwen);
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("輸入錯誤,請重新輸入語文成績");/*輸入錯誤,重新輸入語文成績直到正確為止*/
scanf("%f",&p1->yuwen);}
printf("請輸入英語成績(0~100):");/*輸入英語成績,成績應在0-100*/
scanf("%f",&p1->yingyu);
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");/*輸入錯誤,重新輸入英語成績直到正確為止*/
scanf("%f",&p1->yingyu);}
printf("請輸入數學成績(0~100):");/*輸入數學成績,成績應在0-100*/
scanf("%f",&p1->shuxue);
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&p1->shuxue);}/*輸入錯誤,重新輸入數學成績直到正確為止*/
head=NULL;
while(p1->number!=0)
{
n=n+1;
if(n==1)
head=p1;
else

p2->next=p1;
p2=p1;
p1=(score *)malloc(LEN);
printf("請輸入學生資料,輸0退出!\n");
repeat2:printf("請輸入學生學號(學號應大於0):");
scanf("%d",&p1->number);/*輸入學號,學號應大於0*/

while(p1->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&p1->number);}
/*輸入學號為字元或小於0時,程序報錯,提示重新輸入學號*/
if(p1->number==0)
goto end;/*當輸入的學號為0時,轉到末尾,結束創建鏈表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat2;
/*當輸入的學號已經存在,程序報錯,返回前面重新輸入*/
}
}
}

}
printf("請輸入學生姓名:");
scanf("%s",&p1->name);/*輸入學生姓名*/
printf("請輸入語文成績(0~100):");
scanf("%f",&p1->yuwen);/*輸入語文成績,成績應在0-100*/
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("輸入錯誤,請重新輸入語文成績");
scanf("%f",&p1->yuwen);}/*輸入錯誤,重新輸入語文成績直到正確為止*/
printf("請輸入英語成績(0~100):");
scanf("%f",&p1->yingyu);/*輸入英語成績,成績應在0-100*/
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");
scanf("%f",&p1->yingyu);}/*輸入錯誤,重新輸入英語成績直到正確為止*/
printf("請輸入數學成績(0~100):");
scanf("%f",&p1->shuxue);/*輸入數學成績,成績應在0-100*/
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&p1->shuxue);}/*輸入錯誤,重新輸入數學成績直到正確為止*/

}
end: p1=head;
p3=p1;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;

if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交換前後結點中的學號值,使得學號大者移到後面的結點中*/

strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交換前後結點中的姓名,使之與學號相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交換前後結點中的語文成績,使之與學號相匹配*/

fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交換前後結點中的英語成績,使之與學號相匹配*/

fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交換前後結點中的數學成績,使之與學號相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向鏈表頭*/
}
p2->next=NULL;/*鏈表結尾*/
printf("輸入的學生數為:%d個!\n",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *load2311(score *head)
/*函數load2311,功能:從文件讀入學生記錄*/
{ score *p1,*p2;
int m=0;
char filepn[10];
FILE *fp;

printf("請輸入文件路徑及文件名:");
scanf("%s",filepn);/*輸入文件路徑及名稱*/
if((fp=fopen(filepn,"r+"))==NULL)
{
printf("不能打開文件!\n");
return 0;
}
fscanf(fp," 考試成績管理系統 \n");
fscanf(fp,"作者:周純鋼 班級: 信息023 學號:11 \n");
fscanf(fp,"-----------------------------------------\n");
fscanf(fp,"|學號\t|姓名\t|語文\t|英語\t|數學\t|\n");
fscanf(fp,"-----------------------------------------\n");/*讀入表格域*/
printf(" 考試成績管理系統 \n");
printf(" 作者:周純鋼 班級: 信息023 學號:11 \n");
printf("-----------------------------------------\n");
printf("|學號\t|姓名\t|語文\t|英語\t|數學\t|\n");
printf("-----------------------------------------\n");/*列印表格域*/
m=m+1;
if(m==1)
{

p1=(score *)malloc(LEN); /*開辟一個新單元*/
fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件讀入與顯示*/
head=NULL;
do
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(score *)malloc(LEN); /*開辟一個新單元*/
fscanf(fp,"%d%s%f%f%f\n",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件讀入與顯示*/
}while(!feof(fp));
p2->next=p1;
p1->next=NULL;
n=n+1;
}printf("-----------------------------------------\n");/*表格下線*/
fclose(fp);/*結束讀入,關閉文件*/

return (head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *add2311(score *head,score *stu)
/*函數add2311,功能:追加學生資料,並且將所有學生資料按學號排序*/
{
score *p0,*p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
p3=stu=(score *)malloc(LEN);/*開辟一個新單元*/
printf("\n輸入要增加的學生的資料!");
repeat4: printf("請輸入學生學號(學號應大於0):");
scanf("%d",&stu->number);
/*輸入學號,學號應大於0*/
while(stu->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&stu->number);}/*輸入錯誤,重新輸入學號*/
/******************************************************/
if(stu->number==0)
goto end2;/*當輸入的學號為0時,轉到末尾,結束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat4;
/*當輸入的學號已經存在,程序報錯,返回前面重新輸入*/
}
}
}
}

/******************************************************/
printf("輸入學生姓名:");
scanf("%s",stu->name); /*輸入學生姓名*/
printf("請輸入語文成績(0~100):");
scanf("%f",&stu->yuwen); /*輸入語文成績,成績應在0-100*/
while(stu->yuwen<0||stu->yuwen>100)
{getchar();
printf("輸入錯誤,請重新輸入語文成績");
scanf("%f",&stu->yuwen);} /*輸入錯誤,重新輸入語文成績直到正確為止*/
printf("請輸入英語成績(0~100):");
scanf("%f",&stu->yingyu);/*輸入英語成績,成績應在0-100*/
while(stu->yingyu<0||stu->yingyu>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");
scanf("%f",&stu->yingyu);}/*輸入錯誤,重新輸入英語成績直到正確為止*/
printf("請輸入數學成績(0~100):");
scanf("%f",&stu->shuxue);/*輸入數學成績,成績應在0-100*/
while(stu->shuxue<0||stu->shuxue>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&stu->shuxue);}/*輸入錯誤,重新輸入數學成績直到正確為止*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*當原來鏈表為空時,從首結點開始存放資料*/
else/*原來鏈表不為空*/
{
if(p1->next==NULL)/*找到原來鏈表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*將它與新開單元相連接*/
}
else
{
while(p1->next!=NULL)/*還沒找到末尾,繼續找*/
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;

p1=head;
p0=stu;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;

if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交換前後結點中的學號值,使得學號大者移到後面的結點中*/

strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交換前後結點中的姓名,使之與學號相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交換前後結點中的語文成績,使之與學號相匹配*/

fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交換前後結點中的英語成績,使之與學號相匹配*/

fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交換前後結點中的數學成績,使之與學號相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向鏈表頭*/
} end2:
printf("現在的學生數為:%d個!\n",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *search2311(score *head)
/*函數search2311,功能:查詢學生成績*/
{int number;
score *p1,*p2;
printf("輸入要查詢的學生的學號,");
scanf("%d",&number);
while(number!=0)
{
if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}
printf("-----------------------------------------\n");
printf("|學號\t|姓名\t|語文\t|英語\t|數學\t|\n");
printf("-----------------------------------------\n");/*列印表格域*/
p1=head;
while(number!=p1->number&&p1->next!=NULL)
{p2=p1;p1=p1->next;}
if(number==p1->number)
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
printf("-----------------------------------------\n");}/*列印表格域*/
else
printf("%d不存在此學生!\n",number);

printf("輸入要查詢的學生的學號,");
scanf("%d",&number);
}
printf("已經退出了!\n");
return(head);}
/*==============================================================================================*/
/*==============================================================================================*/
score *del2311(score *head)/*函數del2311,功能:刪除學生資料*/
{
score *p1,*p2;
int number;
printf("輸入要刪除的學生的學號(輸入0時退出):");
scanf("%d",&number);
getchar();
while(number!=0)/*輸入學號為0時退出*/
{

if(head==NULL)
{
printf("\n沒有任何學生資料!\n");
return(head);
}

p1=head;

while(number!=p1->number&&p1->next!=NULL)
/*p1指向的不是所要找的首結點,並且後面還有結點*/
{
p2=p1;p1=p1->next;
} /*p1後移一個結點*/

if(number==p1->number)
/*找到了*/
{
if(p1==head)
head=p1->next;
/*若p1指向的是首結點,把地二個結點地址賦予head*/
else
p2->next=p1->next;
/*否則將下一個結點地址 賦給前一結點地址*/
printf("刪除:%d\n",number);n=n-1;
}
else
printf("%d不存在此學生!\n",number);
/*找不到該結點*/

printf("輸入要刪除的學生的學號:");
scanf("%d",&number);
getchar();
}
#ifdef DEBUG
printf("已經退出了!\n");
#endif
printf("現在的學生數為:%d個!\n",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
void print2311(score *head)
/*函數print2311,功能:顯示學生成績*/
{
score *p;
if(head==NULL)
{printf("\n沒有任何學生資料!\n");}
else
{printf("%d\n",n);
printf("-----------------------------------------\n");
printf("|學號\t|姓名\t|語文\t|英語\t|數學\t|\n");

printf("-----------------------------------------\n");/*列印表格域*/
p=head;
do
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue);
printf("-----------------------------------------\n");/*列印表格域*/
p=p->next;}while (p!=NULL);/*列印完成了*/
}
}
/*==============================================================================================*/
/*==============================================================================================*/
score *statistics2311(score *head)
/*函數statistics2311,功能:統計學生成績*/
{
float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;
score *p;
int x,y=0,i=0;
p=head;
printf("1個人總分和平均分\t2單科平均分\t3總分最高分\t4總分最低分\n");
scanf("%d",&x);
getchar();
switch(x)
/*用switch語句實現功能選擇*/
{
case 1: if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}/*鏈表為空*/
else
{
printf("---------------------------------------------------------\n");
printf("|學號\t|姓名\t|語文\t|英語\t|數學\t|總分\t|平均分\t|\n");
printf("---------------------------------------------------------\n");/*列印表格域*/
while(p!=NULL)
{
sum1=p->yuwen+p->yingyu+p->shuxue; /*計算個人總分*/
ave1=sum1/3;/*計算個人平均分*/

printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue,sum1,ave1);
/*列印結果*/
printf("---------------------------------------------------------\n");/*列印表格域*/
p=p->next;}
}
return(head); break;
case 2: if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}/*鏈表為空*/
while(p!=NULL)
{
sum1=sum1+p->yuwen;
sum2=sum2+p->yingyu;
sum3=sum3+p->shuxue;/*計算總分*/
y=y+1;
ave1=sum1/y;
ave2=sum2/y;
ave3=sum3/y;/*計算平均分*/
p=p->next;/*使p指向下一個結點*/
}
printf("語文平均分是%.1f\n",ave1);
printf("英語平均分是%.1f\n",ave2);
printf("數學平均分是%.1f\n",ave3);/*列印結果*/
return(head); break;
case 3:
if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}/*鏈表為空*/
max=p->yuwen+p->yingyu+p->shuxue;
while(i<n)
{
i=i+1;
sum1=p->yuwen+p->yingyu+p->shuxue; /*計算個人總分*/
if(max<sum1)
max=sum1;
p=p->next;
}

printf("總分最高分:%.1f",max);
printf("\n");
return(head); break;

case 4: if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}/*鏈表為空*/
while(p!=NULL)
{
min=p->yuwen+p->yingyu+p->shuxue;
while(p!=NULL)
{sum2=p->yuwen+p->yingyu+p->shuxue;

if(min>sum2)
min=sum2;
p=p->next;
}
}

printf("總分最低分:%.1f",min);
printf("\n");
return(head); break;

default :printf("輸入錯誤,請重試!\n");
}
return(head);

}

/*==============================================================================================*/
/*==============================================================================================*/
save2311(score *p1)
/*函數save2311,功能:保存學生的資料*/
{
FILE *fp;

char filepn[20];/*用來存放文件保存路徑以及文件名*/

printf("請輸入文件路徑及文件名:");
scanf("%s",filepn);
if((fp=fopen(filepn,"w+"))==NULL)
{
printf("不能打開文件!\n");
return 0;
}
fprintf(fp," 考試成績管理系統 \n");
fprintf(fp," 作者:周純鋼 班級: 信息023 學號:11 \n");
fprintf(fp,"-----------------------------------------\n");
fprintf(fp,"|學號\t|姓名\t|語文\t|英語\t|數學\t|\n");
fprintf(fp,"-----------------------------------------\n");
/*列印表格域*/
while(p1!=NULL)
{
fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);

p1=p1->next;/*下移一個結點*/

}
fclose(fp);
printf("文件已經保存!\n");
return 0;
}
/*==============================================================================================*/
/*==============================================================================================*/
score *taxis2311(score *head)
/*定義排序函數。此函數帶回一個指向鏈表頭的指針*/
{ score *p,*max;
int i,j,x;
float fen;
char t[10];
if(head==NULL)
{printf("\n沒有任何學生資料,請先建立鏈表!\n");return(head);}/*鏈表為空*/
max=p=head;

for(i=0;i<80;i++)
printf("*");
printf("1按學生學號排序\t2按學生姓名排序\t3按語文成績排序\n");
printf("4按英語成績排序\t5按數學成績排序\t\n");
for(i=0;i<80;i++)
printf("*");

printf("請選擇操作:");
scanf("%d",&x);/*選擇操作*/
getchar();
switch(x) /*用switch語句實現功能選擇*/
{case 1 :
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p;
p=p->next;

if(max->number>p->number)
{
k=max->number;
max->number=p->number;
p->number=k;
/*交換前後結點中的學號值,使得學號大者移到後面的結點中*/

strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
/*交換前後結點中的姓名,使之與學號相匹配*/
fen=max->yuwen;
max->yuwen=p->yuwen;
p->yuwen=fen;
/*交換前後結點中的語文成績,使之與學號相匹配*/

fen=max->yingyu;
max->yingyu=p->yingyu;
p->yingyu=fen;
/*交換前後結點中的英語成績,使之與學號相匹配*/

fen=max->shuxue;
max->shuxue=p->shuxue;
p->shuxue=fen;
/*交換前後結點中的數學成績,使之與學號相匹配*/
}
}
max=head;p=head;/*重新使max,p指向鏈表頭*/
}
print2311(head);break;/*列印值排序後的鏈表內容*/
case 2 : for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p;
p=p->next;
if(strcmp(max->name,p->name)>0)/*strcmp=>字元串比較函數*/
{
strcpy(t,max->name);/*strcpy=>字元串復制函數*/
strcpy(max->name,p->name);
strcpy(p->name,t);
/*交換前後結點中的姓名,使得姓名字元串的值大者移到後面的結點中*/
k=max->number;
max->number=p->number;
p->number=k;
/*交換前後結點中的學號值,使之與姓名相匹配*/ fen=max->yuwen;
max->yuwen=p->yuwen;
p->yuwen=fen;
/*交換前後結點中的語文成績,使之與姓名相匹配*/
fen=max->yingyu;
max->yingyu=p->yingyu;
p->yingyu=fen;
/*交換前後結點中的英語成績,使之與姓名相匹配*/
fen=max->shuxue;
max->shuxue=p->shuxue;
p->shuxue=fen;
/*交換前後結點中的數學成績,使之與姓名相匹配*/
}
}
p=head;
max=head;
}
print2311(head);
break;
case 3 : for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->yuwen>p->yuwen)
{
fen=max->yuwen;
max->yuwen=p->yuwen;
p->yuwen=fen;
/*交換前後結點中的語文成績,使得語文成績高者移到後面的結點中*/

k=max->number;
max->number=p->number;
p->number=k;
/*交換前後結點中的學號,使之與語文成績相匹配*/
strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
/*交換前後結點中的姓名,使之與語文成績相匹配*/
fen=max->yingyu;
max->yingyu=p->yingyu;
p->yingyu=fen;
/*交換前後結點中的英語成績,使之與語文成績相匹配*/
fen=max->shuxue;
max->shuxue=p->shuxue;
p->shuxue=fen;
/*交換前後結點中的數學成績,使之與語文成績相匹配*/
}
}
p=head;
max=head;
}
print2311(head);
break;
case 4 : for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->yingyu>p->yingy

2. 求c語言班級點名程序,高手們來幫幫忙啊

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct Student
{
char name[20];
bool IsRead;
}Student;
int main()
{
int i;
int select;
int mark=1;
//下面中你還可以加入一些學生,記得初始化的IsRead都是false
Student student[]=
{
{"張三",false},
{"李四",false},
{"王五",false},
{"劉六",false},
{"趙七",false}
};

printf("歡迎進入點門系統,以下是全班的花名冊:\n");
for (i=0;i<sizeof(student)/sizeof(Student);i++)
printf("%s ",student[i].name);
printf("\n");

do
{
printf("請選擇:\n1.點名\n2.顯示沒有點到的學生名字\n3.退出點名系統\n");
scanf("%d",&select);
system("cls");//如果是Linux系統,把cls改成clear。如果是其他系統請把這行注釋掉,清頻
if(1==select)
{
mark = 1;
while (1)
{
for(i=0;i<sizeof(student)/sizeof(Student);i++)
mark=mark*(student[i].IsRead? 1:0);
if(mark)
{
printf("你已經把全班點了個遍\n");
break;
}
srand(time(NULL));
i = rand()%(sizeof(student)/sizeof(Student));
if(!student[i].IsRead)
{
printf("點名:%s\n",student[i].name);
student[i].IsRead = true;
break;
}
}
}
else if (2==select)
{
for(i=0;i<sizeof(student)/sizeof(Student);i++)
{
if(!student[i].IsRead)
printf("%s ",student[i].name);
}
printf("\n");
}
else if(3==select)
{
printf("謝謝使用\n");
return 0;
}
}while(true);

return 0;
}

這可是我一個字一個字的打出來的,專門為你寫的!~

3. C語言 文件初學

問題比較多啊,你自己好好看看吧。

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

voidinput(structbookcard*stu);
voidoutput(structbookcard*stu);

structbookcard
{
intcardnum;
charstudentname[10];
intclassnum;
};

voidmain()
{
structbookcardstu[5];
input(stu);
output(stu);
return;
}

voidinput(structbookcard*p)
{
inti=0;
FILE*file;
file=fopen("file.bin","w+");
if(file==NULL)
{
printf("error ");
exit(-1);
}
printf("input5 ");
printf(" 姓名 班級 ");
while(i<5)
{
printf("%d ",i+1);
(p+i)->cardnum=i+1;
scanf("%s%d",p[i].studentname,&(p[i].classnum));
fwrite(&p[i],sizeof(structbookcard),1,file);
i++;
}
fclose(file);
return;
}

voidoutput(structbookcard*stu)
{
inti=0;
printf("output ");
FILE*file;
file=fopen("file.bin","r");
if(file==NULL)
{
printf("error ");
exit(-1);
}
while(i<5)
{
fread(&stu[i],sizeof(structbookcard),1,file);
if(stu[i].cardnum%2==1)
printf("%d %s %d ",stu[i].cardnum,stu[i].studentname,stu[i].classnum);
i++;
}
fclose(file);
return;
}

4. 用C語言編程序:有若干個班級,每個班的學生人數不等,每個學生含姓名、分數數據。編寫一個程序,輸入各

你好!

程序要求也不少,什麼時間交作業,可以嘗試幫你完成,有個類似的,你看看

5. 編寫一個C語言程序,顯示自己的學號,姓名,班級和電子郵箱

此類程序,沒有額外要求情況下,直接列印即可。

學號:12345

姓名:趙手快

班級:一年一班

電子郵箱:[email protected]

那麼直接輸出:

intmain()
{
printf("學號:12345 ");
printf("姓名:趙手快 ");
printf("班級:一年一班 ");
printf("電子郵箱:[email protected] ");
}

這樣就是符合需求的了。

6. C語言 c++ 編寫程序,將你的學號,姓名,班級分3行寫入一個文件。

FILE*fp=fopen(path,mode);
fprintf(fp,"%d %s %s ",iNum,szName,szClass);
fclose(fp);

不考慮各種異常處理,核心代碼就這三行。變數該聲明的聲明,該定義的定義,塞到main里,完活。如果C++也要這么寫,用ios是開玩笑。

話說別人上課時你在撩妹還是LOL?

7. C語言怎麼輸出txt文件內相同姓名,不同學號的學生

你好親,#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
printf("輸入學生的信息,分別是班級,姓名,學號:");
FILE * student = fopen( "student.txt","wb+");
if( student == NULL )
{
printf("文件打開失敗!");
system("pause");
return 0;
}
char a[100] ;
gets(a);
fwrite( a,(strlen(a)+1)*sizeof(char),1,student);
char szbuffer[100];
fseek(student,0L,0);
fread( szbuffer,(strlen(a)+1)*sizeof(char),1,student);
printf("寫入的student.txt文件的內容為:%s\n",szbuffer);
fclose(student);
system("pause");
return 0;
}
這個題目考察的是fread和fwrite ,本來文本不應該用這兩個函數.但是既然用了,要注意的是中間的文件指針,用fread的時候,需要fseek回到起始點,否則會出現亂碼,經本人探測證明是對的.

8. C語言程序設計--班級檔案管理系統

給,已經編譯運行確認了:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 10
int M=0;
struct student
{
char num[13];
char name[20];
char sex;
char address[30];
int age;
};

typedef struct LB
{
struct student XINXI;
struct LB *next;
}LB_1,*LB_2;

void CAIDANG()
{
printf(" \t \t \t (歡迎使用本班級檔案管理系統)\t\t\t\t\n");
printf("★*★*★*★*★*★*★*★*★*★ 歡迎進入我們的系統 ★*★*★*★*★*★*★*★*★*★\n\n");

printf("1.錄入學生資料\t\t\t\t\t4.查詢學生信息\n\n");
printf("2.修改學生信息\t\t\t\t\t5.刪除學生信息\n\n");
printf("3.保存學生信息\t\t\t\t\t0.退出檔案系統\n\n");
printf(" \n");
printf("★*★*★*★*★*★*★*★*★*★ 歡迎進入本系統 ★*★*★*★*★*★*★*★*★*★\n");
}
/*文本顏色*/
void color()
{
textbackground(8);
textcolor(9);
clrscr();
}
void Wrong()
{
printf("\n對不起您的輸入錯誤!\n");
}

void SORRY()
{
printf("\n對不起該同學現沒有任何信息!\n");
}

void printe(LB_1 *p)/* 本函數用於輸出英文 */
{
printf(" %-2s %s\t %s\t%s\t %d\t \n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age);
}
/* 該函數用於定位鏈表中符合要求的接點,並返回該指針 */
LB_1 *Locate(LB_2 l,char findmess[],char nameornum[])
{
LB_1 *r;
if(strcmp(nameornum,"num")==0) /* 按學號查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->XINXI.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->XINXI.name,findmess)==0)
return r;
r=r->next;
}
} return 0;
}
/*以下是增加學生信息的函數*/
void TIANJIA(LB_2 l)
{
LB_1 *p,*r,*s;
char num[13];
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->XINXI.num,num)==0)
{
printf("(必看提示):學號為'%s'的學生已有信息,若要修改請你輸入'2 修改'!\n",num);
printe(s);
printf("\n");
return;
}
s=s->next;
} p=(LB_1 *)malloc(sizeof(LB_1));
strcpy(p->XINXI.num,num);
printf(" 請你輸入學號:");
scanf("%s",p->XINXI.num);
getchar();
printf(" 請你輸入姓名:");
scanf("%s",p->XINXI.name);
getchar();
printf(" 請你輸入性別:");
scanf("%s",p->XINXI.sex);
getchar();
printf(" 請你輸入地址:");
scanf("%s",p->XINXI.address);
getchar();

printf(" 請你輸入年齡:");
scanf("%d",&p->XINXI.age);
getchar();

/* 下面是把指針變數轉到鏈表的下一個結點中以便循環的時候使用 */
p->next=NULL;
r->next=p;
r=p; M=1;
}
}
/*以下是刪除學生信息的函數*/
void SHANCHU(LB_2 l)
{
int sel;
LB_1 *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n******(必看提示):對不起,現文件中沒有信息:所以您不能查詢!\n");
return;
}
printf("\n <必看提示> <以學號刪除請輸入1\n> <以姓名刪除請輸入2\n> PLEASE:");
scanf("%d",&sel);
if(sel==1)
{
printf("請輸入要刪除的學生的學號PLEASE:");
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");
M=1;
}
else
SORRY();
}
else if(sel==2)
{
printf("請輸入要刪除的學生的姓名PLEASE:");
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");
M=1;
}
else
SORRY();
}
else
Wrong();
}

/*以下是查詢學生信息*/
void CHAXIONG(LB_2 l)
{ int sel;
char findmess[20];
LB_1 *p;
if(!l->next)
{ printf("\n******(必看提示):對不起,現文件中沒有信息:所以您不能查詢!\n");
return;
}
printf("\n以學號查詢請輸入1:\n以姓名查詢請輸入2:\n以性別查詢請輸入3:\n以性別查詢請輸入4:\n PLEASE:");
scanf("%d",&sel);
if(sel==1)/*輸入學號查詢*/
{
printf("請你輸入要查找的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{ printf("\t\t\t\t查找結果\n");
printf(" 學號:%s\n姓名:%s\n性別:%s\n地址:%s\n年齡:%d\n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age);
}
else
SORRY();
}
if(sel==2) /* 輸入姓名查詢 */
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{ printf("\t\t\t\t查找結果\n");
printf(" 學號:%s\n姓名:%s\n性別:%s\n地址:%s\n年齡:%d\n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age);
}
else
SORRY();
}

else
Wrong();
}
/*以下是修改學生信息的函數*/
void XIUGEI(LB_2 l)
{
LB_1 *p;
long int i,j;
char findmess[20];
if(!l->next)
{ printf("\n(必看提示):對不起,現文件中沒有信息:所以您不能查詢!\n");
return;
}
for(i=1;i<=2;i++)
{
printf("\n\n\n\n\n");
printf("請輸入密碼:");
scanf("%s",&j);
if(j==2007)break;
else
{if(j!=2007)
return(CAIDANG());
}
}
printf("請你輸入要修改的學生學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{ printf("請你輸入新學號(原來是%s):",p->XINXI.num);
scanf("%s",p->XINXI.num);
printf("請你輸入新姓名(原來是%s):",p->XINXI.name);
scanf("%s",p->XINXI.name);
printf("請你輸入新性別(原來是%s):",p->XINXI.sex);
scanf("%s",p->XINXI.sex);
printf("請你輸入新地址(原來是%s):",p->XINXI.address);
scanf("%s",p->XINXI.address);
printf("請你輸入新年齡(原來是%d):",p->XINXI.age);
scanf("%s",p->XINXI.age);
getchar();
M=1;
}
else
SORRY();
}

/*保存在文件中*/
void BAOCONG(LB_2 l)
{
FILE* fp;
LB_1 *p;
int flag=1,count=0;
fp=fopen("c:\\lyg","wr");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(LB_1),1,fp)==1)
{ p=p->next;
count++;
}
else
{ flag=0;
break;
}
}
if(flag)
{ printf("\n 提示;正在保存文件 共保存了%d條信息\n",count);M=0;
}
fclose(fp);
}
/*以下是主函數*/
void main()
{
LB_2 l;/* 連表 */
FILE *fp; /* 文件指針 */
int sel;long i,j,d;
char ch;
char jian;
int count=0;
LB_1 *p,*r;

color();
clrscr();
l=(LB_1*)malloc(sizeof(LB_1));
l->next=NULL;
r=l;
fp=fopen("C:\\lyg","rb");
if(fp==NULL)
{
printf("\t\t\t\t\n\n");
printf("\n");
printf(" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"
" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"
" Welcome to come to our system!!! \n"
" You can only inquire your own messages! If you want to see about other \n"
" students' messages,you need first to send inquirment to them,asking for \n"
" agreement,then you can visit his/her messages! \n"
" Have a good time! now you can come in!!! \n"
" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"
" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"
" 注意:系統啟動碼為 : ILOVEMYSCHOOLVERYMUCH !!! \n"
" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"
" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n");
printf("歡迎使用,本系統中現沒有任何記錄,您要先創建文件請按以下操做進行PLEASE:\n");
printf("\n 提示:文件還不存在,是否創建?(y/n)請做選擇--\n");
printf("\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
{fp=fopen("C:\\lyg","wb");
clrscr();
}
{for(i=1;i<=2;i++)
{
printf("\n\n\n\n\n");
printf("請輸入密碼:");
scanf("%ld",&j);
if(j==2007)break;
else
{if(j!=2007)return;
}
}
}

exit(0);clrscr();
}
while(!feof(fp))
{
p=(LB_1*)malloc(sizeof(LB_1));
if(fread(p,sizeof(LB_1),1,fp)) /* 將文件的內容放入鏈表中 */
{
p->next=NULL;
r->next=p;
r=p; /*把該結點放入鏈表中*/
count++;
}
}
fclose(fp); /* 關閉文件 */
while(1)
{
CAIDANG();
printf("請你選擇操作:");
scanf("%d",&sel);
clrscr();
printf("\n\n\n");
if(sel==0)
{
if(M==1)
{ getchar();
printf("\n(必看提示):鏈表中的信息已經改動,如果確認把改動保存在文件中請做選擇(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
BAOCONG(l);
}
break;clrscr();
}
switch(sel)
{
case 1: TIANJIA(l);break;
case 4: CHAXIONG(l);break;
case 3: BAOCONG(l);break;
case 2: XIUGEI(l);break;
case 5: SHANCHU(l);break;
default: getchar();break;
}
} end:
getchar();
}