① 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; /*平均成績;*/
}