當前位置:首頁 » 編程語言 » c語言實踐課題目
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言實踐課題目

發布時間: 2022-08-30 03:45:07

c語言課題

《程序設計及C語言》課程設計指導
LZ這本書的作者是誰啊

② C語言課程設計題目

#include <stdio.h>

void add(void);
int check(void);
int rent(void);
void useradd(void);
void returnn (void);

int user_number = 2;
int cd_number = 1;

struct cd{
char film_name[10];
char country[10];
char type[10];
int n; /*標記是否被借閱,借閱:0;存在:1*/
};

struct rent{
char username[10];
char film_name[10][10];
int rent_time;
int return_time;
int money;
};

struct cd CD[1000];
struct rent RENT[1000];

void main (void)

{
char choice;

a: printf("please input you choice\n");
printf("A: add CD\n");
printf("B: check CD\n");
printf("C: rent CD\n");
printf("D: return CD\n");
printf("E:useradd \n");
printf("F: quit the program\n");

scanf("%c",&choice);

switch(choice)
{
case 'A':
{
add();
break;
}
case 'B':
{
check();
break;
}
case 'C':
{
rent();
break;
}
case 'D':
{
returnn();
break;
}
case'E':
{
useradd();
break;
}
case'F':
{
exit(0);
}
}
goto a;

}

void add(void)
{

FILE *a;

printf("please input the cd name\n");
scanf("%s",CD[cd_number].film_name);
printf("please input the cd country\n");
scanf("%s",CD[cd_number].country);
printf("please input the cd type\n");
scanf("%s",CD[cd_number].type);

CD[cd_number].n = 1;

if (0 == cd_number)
{
a = fopen("cd.txt","wb");
fwrite(&CD[cd_number], sizeof(struct cd), 1, a);
}
else
{
a = fopen("cd.txt","ab");
fwrite(&CD[cd_number], sizeof(struct cd), 1, a);
}
cd_number++;

fclose(a);
}

int check(void)
{
int i;
FILE *a;
char cd_name[10];

a = fopen("cd.txt","rb");

for(i = 0; i < cd_number; i++)
{
fread(&CD[i], sizeof(struct cd), 1, a);
}
printf("please input the cd name\n");
scanf("%s",cd_name);

for(i = 0; i < cd_number; i++)
{
if(!(strcmp(CD[i].film_name, cd_name)))
{
if(1 == CD[i].n)
{
printf("could rent\n");
fclose(a);
return 1;
}
else
{
printf("rented\n");
fclose(a);
return 1;
}
}
}

fclose(a);
return 0;
}

void useradd(void)
{
FILE *a;

printf("please input the username\n");
scanf("%s",RENT[user_number].username);

if (0 == user_number)
{
a = fopen("rent.txt","wb");
fwrite(&RENT[user_number], sizeof(struct rent), 1, a);

}
else
{
a = fopen("rent.txt","ab");
fwrite(&RENT[user_number], sizeof(struct rent), 1, a);
printf("----- add ------");

}
user_number++;

fclose(a);
}

int rent(void)
{
char user_name[10];
char cd_name[10];
FILE *a;
FILE *b;
int i = 0;
int j;
int k = 0;
char choice;

a = fopen("rent.txt","r");
b = fopen("cd.txt","r");

for (i = 0; i < cd_number; i++)
{
fread(&CD[i], sizeof(struct cd), 1, b);
}

for (i = 0; i < user_number; i++)
{
fread(&RENT[i], sizeof(struct rent), 1, a);
}

printf("please input the username\n");
scanf("%s",user_name);

for (i = 0; i < user_number; i++)
{
if (!(strcmp(user_name, RENT[i].username)))
{
a: printf("please input the cd_name\n");
scanf("%s",cd_name);
printf("pleae input the cd_name again\n");
scanf("%s", RENT[i].film_name[k]);
k++;

for (j = 0; j < cd_number; j++)
{
if(!(strcmp(CD[j].film_name, cd_name)))
{
CD[j].n = 0;
break;
}
}

}
}

printf("pleae input the date to rent\n");
printf("--- i : %d ---\n", i);
scanf("%d",&RENT[i].rent_time);

getchar();
printf("A: to rent another\n");
printf("B: quit\n");

scanf("%c",&choice);
switch(choice){
case 'A': goto a;
break;
case 'B': return 0;
}

fclose(a);
fclose(b);

}

void returnn (void)
{
char user_name[10];
char cd_name[10];
FILE *a;
FILE *b;
int i;
int j;
int k = 0;
char choice;

a = fopen("rent.txt","r");
b = fopen("cd.txt","r");

for (i = 0; i < cd_number; i++)
{
fread(&CD[i], sizeof(struct cd), 1, b);
}

for (i = 0; i < user_number; i++)
{
fread(&RENT[i], sizeof(struct rent), 1, a);
}

printf("please input the username\n");
scanf("%s",user_name);

for (i = 0; i < user_number; i++)
{
if (!(strcmp(user_name, RENT[i].username)))
{
a: printf("please input the cd_name to return \n");
scanf("%s",cd_name);

for (j = 0; j < cd_number; j++)
{
if(!(strcmp(CD[j].film_name, cd_name)))
{
CD[j].n = 1;
break;
}
}

}
}

printf("pleae input the data to rturn\n");
scanf("%d",&RENT[i].return_time);

if (0 == ((RENT[i].return_time - RENT[i].rent_time) % 3))
{

RENT[i].money = (RENT[i].return_time - RENT[i].rent_time) / 3;
}
else
{

RENT[i].money = (RENT[i].return_time - RENT[i].rent_time) / 3 + 1;
}
printf("%d\n",RENT[i].money);

printf("A: to rent another\n");
printf("B: quit\n");

scanf("%c",&choice);
switch(choice){
case 'A': goto a;
break;
case 'B': return 0;
}

fclose(a);
fclose(b);

}

才學編程兩個月,很齪啊,包涵
請參考

③ 大一C語言課程設計題目, 求急! 加100分。


#include<stdio.h>

#include<string.h>

#define N 100

typedef struct AA

{

char name[20];

char phone[12];

char e_mail[30];

char relation[20];

}AA;

/*1。輸入新聯系人2。刪除指定的聯系人(輸入姓名,若找掉則刪除該聯系人的信息)

3。根據輸入的與本人關系,顯示聯系信息4。顯示所有聯系人的信息設計菜單*/

int input__(AA * s)

{

int len = 0,i = 0,n;

printf("請輸入要添加的聯系人個數,上限為%d個 ",N);

scanf("%d",&n);

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

{

printf("請依次輸入第%d聯系人的姓名、電話、郵箱以及與本人的關系(中間使用空格隔開即可): ",i);

scanf("%s%s%s%s",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);

}

return n;

}

void delete__(AA *s,int *n)

{

int i = 0,j = 0,status = 0;

char ca[20] = "";

printf("請輸入要刪除的聯系人的姓名 ");

scanf("%s",ca);

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

{

if(!strcmp(ca,s[i].name))

{

*n = *n-1;

status = 1;

for(j=i;j<*n;j++)

{

s[j] = s[j+1];

}

break;

}

}

if(status == 0)

printf("沒有找到要刪除的人的信息 ");

else

printf("刪除成功 ");

}

void show__relation(AA *s,int n)

{

int i = 0,status = 0;

printf("請輸入與聯系人的關系 ");

char ca[20] = "";

scanf("%s",ca);

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

{

if(!strcmp(ca,s[i].relation))

{

printf("name:%15s phone:%15s e-mail:%15s relation:%15s ",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);

status = 1;

}

}

if(!status)

printf("沒有找到相應的信息 ");

}

void show__all(AA *s,int n)

{

int i = 0;

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

{

printf("name:%15s phone:%15s e-mail:%15s relation:%15s ",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);

}

}





int main(void)

{

AA a[N];

int n = 0;

int i;

while(1)

{

printf("0------退出系統 1------輸入聯系人信息 2------刪除指定聯系人信息 ");

printf("3------顯示與本人關系相通的聯系人信息 4------顯示所有聯系人的信息 ");

scanf("%d",&i);

if(i == 0)

break;

switch(i)

{

case 1:n = input__(a); break;

case 2:

if(n == 0)

{

printf("你還沒有添加信息,請先添加信息: ");

break;

}

else

{

delete__(a,&n);

break;

}

case 3:

{

if(n == 0)

{

printf("你還沒有添加信息,請先添加信息: ");

break;

}

else

{

show__relation(a,n);


break;

}

}

case 4:

{

if(n == 0)

{

printf("你還沒有添加信息,請先添加信息: ");

break;

}

else

{

show__all(a,n);

break;

}

}

default:

printf("您的選擇有誤,請重新選擇 ");

break;

}

}

return 0;


}

//看看~~~剛剛寫完~

④ C語言實訓題目

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

void guanli();//管理員文件

void zhu();//查詢主函數

void nianca();

void mingca();

void banca();

void xingca();

void xueca();

void zhucaidan();

void tianjia();

void shexinxi();

void cunxinxi();

void tian();

void quanbushanchu();

void xingbieshanchu();

void banjishanchu();

void mougeshanchu();

void fugai();

void wenjian();

void shanchu();

int quanbuxianshi();

struct xuesheng

{

char name[8]; //姓名

char xingbie[3]; //性別

int age; //年齡

char banji[20]; //班級

char fenshu[3]; //分數

char hao[9]; //學號

};

typedef struct xuesheng XUE;

XUE str;

FILE *fp=NULL;

int no=1;

void main()

{

int a;

printf("\t\t簡易學生檔案庫\n確認您的身份:\n");

while(1)

{

printf("\t1 管理員\n\t2 用戶\n\t3 退出\n請選擇:");

scanf("%d",&a);

switch(a)

{

case 1:guanli();

zhucaidan();

break;

case 2:zhu();

break;

case 3:

exit(0);

default:

printf("請重新選擇!\n");

}

}

}

void guanli()

{

char mima[6];

char mi[6];

strcpy(mima,"000000");

for(int i=0;i<3;i++)

{

printf("請輸入你的管理員密碼(6位):");

scanf("%s",mi);

if(strcmp(mima,mi)==0)

{

printf("密碼正確!\n");

return;

}

else

{

printf("密碼不正確,請重新輸入:\n");

}

}

printf("三次密碼錯誤,系統即將退出。\n");

exit(0);

}

void zhucaidan()

{

int a;

while(1)

{

printf("\n\n\t 主菜單\n\t1 輸出所有學生信息\n\t2 查找學生信息\n\t3 輸入一個學生信息\n\t4 刪除學生信息\n\t5 退出\n請選擇:");

scanf("%d",&a);

switch(a)

{

case 1:quanbuxianshi();

break;

case 2:zhu();

break;

case 3:tian();

break;

case 4:shanchu();

break;

case 5:

exit(0);

default:

printf("請重新選擇!\n");

}

}

}

void zhu()

{

int a,b;

b=quanbuxianshi();

while(b)

{

printf("\n\t請問你想按什麼來查詢:\n");

printf("\t1 年齡\n\t2 姓名\n\t3 班級\n\t4 性別\n\t5 學號\n\t 6 返回上一層\n\t 7 退出系統\n");

fflush(stdin);

scanf("%d",&a);

switch(a)

{

case 1:nianca();

break;

case 2:mingca();

break;

case 3:banca();

break;

case 4:xingca();

break;

case 5:xueca();

break;

case 6:return;

case 7:exit(0);

default:

printf("請重新選擇!\n");

break;

}

}

}

void nianca()

{

int nianling,a=0;

printf("請輸入你要查詢的年齡:\n");

fflush(stdin);

scanf("%d",&nianling);

fp=fopen("wenjian.txt","rb+");

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(str.age==nianling)

{

printf("%s\t\t%s\t學號:%s\t年齡:%d \t班級:%s\n\t分數:%s\n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);

a=1;

}

}

if(a==0)

{

printf("沒有你要找的學生信息。\n");

}

}

void mingca()

{

char xm[20];

int a=0;

printf("請輸入你要查詢的姓名:\n");

fflush(stdin);

scanf("%s",xm);

fp=fopen("wenjian.txt","rb+");

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(strcmp(str.name,xm)==0)

{

printf("%s\t\t%s\t學號:%s\t年齡:%d \t班級:%s\n\t分數:%s\n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);

a=1;

}

}

if(a==0)

{

printf("沒有你要找的學生信息。\n");

}

}

void banca()

{

char bj[20],a=0;

printf("請輸入你要查詢的班級:\n");

fflush(stdin);

scanf("%s",bj);

fp=fopen("wenjian.txt","rb+");

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(strcmp(str.banji,bj)==0)

{

printf("%s\t\t%s\t學號:%s\t年齡:%d \t班級:%s\n\t分數:%s\n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);

a=1;

}

}

if(a==0)

{

printf("沒有你要找的學生信息。\n");

}

}

void xingca()

{

char xb[3];

int a=0;

printf("請輸入你要查詢的性別\n");

fflush(stdin);

scanf("%s",xb);

fp=fopen("wenjian.txt","rb+");

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(strcmp(str.xingbie,xb)==0)

{

printf("%s\t\t%s\t學號:%s\t年齡:%d \t班級:%s\n\t分數:%s\n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);

a=1;

}

}

if(a==0)

{

printf("沒有你要找的學生信息。\n");

}

}

void xueca()

{

char xh[9];

int a=0;

printf("請輸入你要查詢的學號\n");

fflush(stdin);

scanf("%s",xh);

fp=fopen("wenjian.txt","rb+");

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(strcmp(str.hao,xh)==0)

{

printf("%s\t\t%s\t學號:%s\t年齡:%d \t班級:%s\n\t分數:%s\n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);

a=1;

}

}

if(a==0)

{

printf("沒有你要找的學生信息。\n");

}

}

void tian()

{

while(1)

{

char xuanze;

printf("\ta 添加\n\tb 返回\n\t請選擇服務\n");

fflush(stdin);

scanf("%c",&xuanze);

switch(xuanze)

{

case'a':

case'A':

{

printf("\t你選擇添加服務\n");

shexinxi();

cunxinxi();

break;

}

case'b':

case'B':

{

return;

}

}

}

}

void shexinxi()

{

printf("\t請輸入姓名\n");

fflush(stdin);

scanf("%s",str.name);

printf("\t請輸入年齡\n");

fflush(stdin);

scanf("%d",&str.age);

printf("\t請輸入性別(男/女)\n");

fflush(stdin);

scanf("%s",str.xingbie);

printf("\t請輸入班級\n");

fflush(stdin);

scanf("%s",str.banji);

printf("\t請輸入分數\n");

fflush(stdin);

scanf("%s",str.fenshu);

printf("\t請輸入學號\n");

fflush(stdin);

scanf("%s",str.hao);

printf("\t添加成功!\n");

printf("%s\t\t%s\t學號:%s\t年齡:%d \t班級:%s\n\t分數:%s\n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);

}

void cunxinxi()

{

fp=fopen("wenjian.txt","ab+");

if(fp==NULL)

{

printf("\t文件失敗\n");

exit(0);

}

fwrite(&str,sizeof(XUE),1,fp);

fclose(fp);

}

void shanchu()

{

char xuanze;

for (;;)

{

printf("\n\ta 全部刪除\n");

printf("\tb 按性別刪除\n");

printf("\tc 按班級刪除\n");

printf("\td 刪除某一個\n");

printf("\te 返回上級菜單\n");

printf("\t請輸入您的選擇:\n");

fflush(stdin);

scanf("%c",&xuanze);

switch(xuanze)

{

case 'a':

case 'A':

{

quanbushanchu();

printf("\n刪除成功!");

break;

}

case 'b':

case 'B':

{

xingbieshanchu();

printf("\n刪除成功!");

break;

}

case 'c':

case 'C':

{

banjishanchu();

printf("\n刪除成功!");

break;

}

case 'd':

case 'D':

{

mougeshanchu();

printf("\n刪除成功!");

break;

}

case 'e':

{

return;

}

default:

{

printf("\t您的輸入有誤,請重新輸入\n\n");

}

}

}

}

void quanbushanchu()

{

printf("\t全部刪除\n");

fugai();

return;

}

void xingbieshanchu()

{

for(int i=0;i<3;i++)

{

char xingbie;

wenjian();

char name[20]={0};

char xingbie1[3]={0};

int age=0;

char banji[20];

char fenshu[3]={0};

fread(&str,sizeof(XUE),1,fp);

printf("\t請輸入要刪除人的性別(m:男/f:女)");

fflush(stdin);

scanf("%c",&xingbie);

while(!feof(fp))

{

if(xingbie=='m'||xingbie=='M')

{

if(strcmp(str.xingbie,"男")==0)

{

strcpy(str.name,name);

strcpy(str.xingbie,xingbie1);

str.age=age;

strcpy(str.banji,banji);

strcpy(str.fenshu,fenshu);

}

return;

}

else if(xingbie=='f'||xingbie=='F')

{

if(strcmp(str.xingbie,"女")==0)

{

strcpy(str.name,name);

strcpy(str.xingbie,xingbie1);

str.age=age;

strcpy(str.banji,banji);

strcpy(str.fenshu,fenshu); ;

}

return;

}

else

{

printf("\t您的輸入有誤,請重新輸入\n");

}

}

}

}

void banjishanchu()

{

char banji[20];

wenjian();

char name[20]={0};

char xingbie1[3]={0};

int age=0;

char banji1[20]={0};

char fenshu[3]={0};

fread(&str,sizeof(XUE),1,fp);

printf("\t請輸入您要刪除的班級:\n");

fflush(stdin);

scanf("%s",banji);

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(strcmp(banji,str.banji)==0)

{

strcpy(str.name,name);

strcpy(str.xingbie,xingbie1);

str.age=age;

strcpy(str.banji,banji1);

strcpy(str.fenshu,fenshu); ;

}

return;

}

}

void mougeshanchu()

{

char name1[20]={0};

char xingbie1[3]={0};

int age=0;

char banji[20]={0};

char fenshu[3]={0};

char name[20];

wenjian();

printf("\t請輸入該學生的姓名");

fflush(stdin);

scanf("%s",name);

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(strcmp(str.name,name))

{

strcpy(str.name,name1);

strcpy(str.xingbie,xingbie1);

str.age=age;

strcpy(str.banji,banji);

strcpy(str.fenshu,fenshu); ;

}

return;

}

}

void fugai()

{

fp=fopen("wenjian.txt","wb+");

if(fp==NULL)

{

printf("\tSorry!!!文件打開失敗,系統即將退出。\n");

exit(0);

}

fclose(fp);

}

void wenjian()

{

fp=fopen("wenjian.txt","rb+");

if(fp==NULL)

{

printf("\tSorry!!!文件打開失敗,系統即將退出。\n");

exit(0);

}

fclose(fp);

}

int quanbuxianshi()

{int a=0;

if(!(fp=fopen("wenjian.txt","rb+")))

fp=fopen("wenjian.txt","wb+");

while(!feof(fp))

{

fread(&str,sizeof(XUE),1,fp);

if(strcmp(str.name,""))

{printf("%s\t\t%s\t學號:%s\t年齡:%d \t班級:%s\n\t分數:%d\n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);

a=1;

}

}

if(a==0)

{

printf("\n目前沒有學生信息。\n");

}

return a;

}

⑤ c語言課程設計題目~求高手解答~寫好可追加100分

你追我先啊,=下我寫出給你發你郵箱你郵箱什麼啊?

⑥ C語言課程題目

#include <stdio.h>
int main()
{
int a,b;
char c;
scanf("%d %c %d",&a,&c,&b);
if(c=='+')
printf("%d\n",a+b);
else if(c=='-')
printf("%d\n",a-b);
else if(c=='*')
printf("%d\n",a*b);
else if(c=='/')
printf("%d\n",a/b);
}

#include <stdio.h>
int main()
{
/*int a,b;
char c;
scanf("%d %c %d",&a,&c,&b);
if(c=='+')
printf("%d\n",a+b);
else if(c=='-')
printf("%d\n",a-b);
else if(c=='*')
printf("%d\n",a*b);
else if(c=='/')
printf("%d\n",a/b);*/
double d;
scanf("%lf",&d);

printf("%.2f\n",d);
}

⑦ C語言的簡單題目

***********第一題**********
long a; //陌生人給富翁,單位萬
long b; //富翁給陌生人,單位分
int main()
{
int i;
long todaygive;
todaygive=1;
for(i=0;i<30;i++)
{a+=10;
b+=todaygive;
todaygive*=2;
}
printf("陌生人給富翁:%ld0000元\n",a);
printf("富翁給陌生人:%ld.%ld元",b/100,b%100);
getchar();
}

***********第二題**********
struct student{
char name[20];
int score[3];
int ave;
}student[5];

int input()
{
int i;
for(i=0;i<5;i++)
{
printf("Student %d:",i+1);
gets(student[i].name);
printf("語文:");
scanf("%d",&student[i].score[0]);
printf("數學:");
scanf("%d",&student[i].score[1]);
printf("計算機:");
scanf("%d",&student[i].score[2]);
getchar();
student[i].ave=student[i].score[0]+student[i].score[1]+student[i].score[2];
student[i].ave/=3;
}
}
int print()
{
int i;
int max=0;
int maxid=0;
printf("%20s%5s%5s%7s%5s\n","姓名","語文","數學","計算機","平均");
for(i=0;i<5;i++)
{if(student[i].ave>=60)
printf("%20s%5d%5d%7d%5d\n",student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].ave);
if(student[i].ave>max) {maxid=i; max=student[i].ave;}

}
printf("最高分:%s",student[maxid].name);
}

int main()
{
input();
print();
getchar();
getchar();
}
**************第三題****************
int main()
{
int i=0,j=0,k=0,l=0;
int count=0;
printf("%4s%4s%4s%4s\n","10元","5元","2元","1元");
for(i=1;i<10;i++)
for(j=1;j<20;j++)
for(k=1;k<40;k++)
for(l=1;l<40;l++)
{
if(i+j+k+l==40&&i*10+j*5+k*2+l==100)
{printf("%4d%4d%4d%4d\n",i,j,k,l);
count++;
}
}
printf("共有%d種換法.",count);
getchar();
}

************第四題***********
int b1,b2,b3;
char color[4][7]={"Red","While","Yellow","Blue"};
int count;
int main()
{
for(b1=0;b1<4;b1++)
for(b2=0;b2<4;b2++)
for(b3=0;b3<4;b3++)
if(b1!=b2&&b2!=b3&&b3!=b1)
{printf("%7s%7s%7s\n",color[b1],color[b2],color[b3]);
count++;
}printf("Total:%d",count);
getchar();
}
回答者:soyboydoy - 助理 三級 6-21 19:03

答了這么多建議加最佳

⑧ C語言實習變態題目,望高手幫忙,不勝感激!!

史//學生成績管理程序
#include <stdio.h>
#include "stdlib.h"
#include <string.h>
#include<time.h>
#define S 5 /* 課程數 */
#define N 30 /* 姓名最大字元數 */
#define C 10 /* 學號最大字元數 */
#define F 80 /* 文件名最大字元數 */
#define B 80 /* 緩沖區最大字元數 */
#define M 500 // 最大學生人數
/* 課程名稱表 */
char schoolwork[S][N+1] = {"物理","數學","英語","C 語言"," 電路分析"};
//結點類。
struct node
{
char name[N+1]; /* 姓名 */
char code[C+1]; /* 學號 */
int marks[S]; /* 各課程成績 */
int total; /* 總分 */
struct node *next; /* 後續表元指針 */
}*head; /* 鏈表首指針 */
int total[S]; /* 各課程總分 */
char stuf[F]; /* 文件名 */
/* 從指定文件讀入一個記錄 */
int readnode(FILE *fpt,struct node *rpt)
{
char buf[B];
int i;
if(fscanf(fpt,"%s",buf)!=1)
return 0; /* 文件結束 */
strncpy(rpt->name,buf,N);
fscanf(fpt,"%s",buf);
strncpy(rpt->code,buf,C);
for(i=0;i<S;i++)
fscanf(fpt,"%d",&rpt->marks[i]);
for(rpt->total=0,i=0;i<S;i++)
rpt->total+=rpt->marks[i];
return 1;
} /* 對指定文件寫入一個記錄 */
int writenode(FILE *fpt,struct node *rpt)
{
int i;
fprintf(fpt,"%s\n",rpt->name);
fprintf(fpt,"%s\n",rpt->code);
for(i=0;i<S;i++)
fprintf(fpt,"%d\n",rpt->marks[i]);
return 1;
} /* 顯示學生記錄 */
void displaystu(struct node *rpt)
{
int i;
printf("\n學生名字 : %s\n",rpt->name);
printf("學號 : %s\n",rpt->code);
printf("各科成績 :\n");
for(i=0;i<S;i++)
printf(" %-15s : %4d\n",schoolwork[i],rpt->marks[i]);
printf("Total : %4d\n",rpt->total);
}
/* 計算各單科總分 */
int totalmark(char *fname)
{
FILE *fp;
struct node s;
int count,i;
if((fp=fopen(fname,"r"))==NULL)
{
printf("不能打開文件%s.\n",fname);
return 0;
}
for(i=0;i<S;i++)
total[i]=0;
count=0;
while(readnode(fp,&s)!=0)
{
for(i=0;i<S;i++)
total[i]+=s.marks[i];
count++;
}
fclose(fp);
return count; /* 返回記錄數 */
}
/* 列表顯示學生信息 */
void liststu(char *fname)
{
FILE *fp;
int i;
struct node s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("不能打開文件 %s.\n",fname);
return ;
}
printf("\n姓名\t學號\t物理\t數學\t英語\tC語言\t電路分析\t總分\n");
while(readnode(fp,&s)!=0)
{
printf("\r%s",s.name);
printf("\t %s",s.code);
for(i=0;i<S;i++)
printf("\t%4d",s.marks[i]);
printf("\t\t %4d",s.total);
printf("\n 按 ENTER 鍵繼續...");
while(getchar()!='\n');
}
fclose(fp);
return;
}
/* 構造鏈表 */
struct node *makelist(char *fname)
{
FILE *fp;
struct node *p,*u,*v,*h;
if((fp=fopen(fname,"r"))==NULL)
{
printf("不能打開文件 %s.\n",fname);
return NULL;
}
h=NULL;
p=(struct node *)malloc(sizeof(struct node));
while(readnode(fp,(struct node *)p)!=0)
{
v=h;
while(v&&p->total<=v->total)
{
u=v;
v=v->next;
}
if(v==h)
h=p;
else
u->next=p;
p->next=v;
p=(struct node *)malloc(sizeof(struct node));
}
free(p);
fclose(fp);
return h;
}
/* 順序顯示鏈表各表元 */
void displaylist(struct node *h)
{
int i;
printf("\n姓名\t學號\t物理\t數學\t英語\tC語言\t電路分析\t總分\n");
while(h!=NULL)
{
printf("\r%s",h->name);
printf("\t %s",h->code);
for(i=0;i<S;i++)
printf("\t%4d",h->marks[i]);
printf("\t\t %4d",h->total);
printf("\n 按 ENTER 鍵繼續...");
while(getchar()!='\n');
h=h->next;
}
return;
} /* 按學生姓名查找學生記錄 */
int retrievebyn(char *fname, char *key)
{
FILE *fp;
int c;
struct node s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("不能打開文件 %s.\n",fname);
return 0;
}
c=0;
while(readnode(fp,&s)!=0)
{
if(strcmp(s.name,key)==0)
{
displaystu(&s);
c++;
}
}
fclose(fp);
if(c==0)
printf("你要查找的學生%s 不在文件中! %s.\n",key,fname);
return 1;
}
/* 按學生學號查找學生記錄 */
int retrievebyc(char *fname, char *key)
{
FILE *fp;
int c;
struct node s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("不能打開文件 %s.\n",fname);
return 0;
}
c=0;
while(readnode(fp,&s)!=0)
{
if(strcmp(s.code,key)==0)
{
displaystu(&s);
c=1;
break;
}
}
fclose(fp);
if(c==0)
printf("你要查找的學生 %s 不 在文件中 %s.\n",key,fname);
return 1;
}
void insertlist() /*添加學生記錄*/
{
FILE *fp;
int j;
char sh='k';
struct node s;
if((fp=fopen(stuf,"r"))==NULL)
{
printf("不能打開文件 %s.\n",stuf);
return ;
}
fp=fopen(stuf,"a");
while(sh!='#')
{
printf("請輸入學生的名字: ");
scanf("%s",&s.name);
printf("請輸入學號: ");
scanf("%s",&s.code);
for(j=0;j<S;j++)
{
printf("請輸入 %s成績: ",schoolwork[j]);
scanf("%d",&s.marks[j]);
}
writenode(fp,&s);
getchar();
printf("停止輸入請按數字「#」,繼續請按其他鍵");
sh=getchar();
}
fclose(fp);
return;
}

我有的就是這個..自己改下...

⑨ c語言程序設計編程題目:請 :編寫完成對學生相關信息的要求:1.定義一個結構體類型student,其中包括三個成

#include <stdio.h>

#include <stdlib.h>

#define STU_NUM 10 /*宏定義學生的數量*/

struct student /*定義一個結構體用來存放學生學號、三門課成績、總分及平均成績*/

{

char stu_id[20]; /*學生學號;*/

float score[3]; /*三門課成績;*/

float total; /*總成績;*/

float aver; /*平均成績;*/

};

/*排序用一個函數來實現*/

void SortScore(student *stu,int n)

{

student stud;

for(int i = 0; i < n-1; i++)

for(int j = i+1 ; j < n; j++)

{

if(stu[i].total < stu[j].total)

{

stud = stu[i];

stu[i] = stu[j];

stu[j] = stud;

}

}

}

int main( )

{

student stu[STU_NUM]; /*創建結構體數組中有10個元素,分別用來保存這10個人的相關信息。*/

/*輸入這十個學生的相關信息*/

for(int i = 0; i<STU_NUM; i++)

{

printf("請輸入第%d個學生的學號:",i+1);

scanf("%s",&stu[i].stu_id);

printf("輸入第%d個學生的數學成績:",i+1);

scanf("%f",&stu[i].score[0]);

printf("輸入第%d個學生的英語成績:",i+1);

scanf("%f",&stu[i].score[1]);

printf("輸入第%d個學生的計算機成績:",i+1);

scanf("%f",&stu[i].score[2]);

stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2];

stu[i].aver = stu[i].total/3;

}

printf("\n");

SortScore(stu,STU_NUM);/*調用排序函數*/

/*輸出排序後的各學生的成績*/

for(i = 0 ; i < STU_NUM; i++)

{

printf("序號: %d\t",i);

printf("學號:%s\t",stu[i].stu_id);

printf("數學:%f\t",stu[i].score[0]);

printf("英語:%f\t",stu[i].score[1]);

printf("計算機:%f\t",stu[i].score[2]);

printf("平均成績:%f\t",stu[i].aver);

printf("總分:%f\t",stu[i].total);

printf("\n\n");

}

return 0;

}

註:(源程序中主要標識符含義說明)

#define STU_NUM 10 /*宏定義學生的數量*/

struct student /*定義一個結構體用來存放學生學號、三門課成績、總分及平均成績*/

{

char stu_id[20]; /*學生學號;*/

float score[3]; /*三門課成績;*/

float total; /*總成績;*/

float aver; /*平均成績;*/

}