重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
输入十名顾客的信息到结构体数组中,最后统计这十名中购买商品总额最大的顾客,将他的信息打印输出。
创新互联专业为企业提供东宝网站建设、东宝做网站、东宝网站设计、东宝网站制作等企业网站建设、网页设计与制作、东宝企业网站模板建站服务,十多年东宝做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
//并按照下列各式把信息存入到customer.txt中:
//0001 Kate 5 822.8
//0002 Jame 7 2761.9
//2011.1.11 11:37
#includestdio.h
#includemath.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;iCST_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;iCST_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;icst_num;i++)
{
for(j=0;jcst_num;j++)
{
if(cst[i].valuecst[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;icst_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;i50;i++)
{
printf("_");
}
printf("\n");
}
学生管理系统
#includestdio.h
#includestdlib.h
#includestring.h
/********定义学生结构体********/
typedef struct Link
{
int number;
char name[10];
char sex[4];
int Chinese;
int English;
int Match;
float average;
struct Link *next;
}Student;
int amount=0;;//记录学生个数
/*****************************/
/***********初始化学生表*************/
Student *InitStudent()
{
Student *Q;
Q=(Student*)malloc(sizeof(Student));
if(Q!=NULL)
{
Q-next=NULL;
return Q;
}
else
return NULL;
}
/***********************************/
/**************创建学生数据表*********************/
int CreatStudent(Student *Q)
{
int flag,n;
Student *s;
n=0;
while(flag)
{
s=(Student*)malloc(sizeof(Student));
if(s==NULL)
{
printf("创建失败!");
return 0;
}
printf("请输入学号(输入0退回上一步):");
scanf("%d",s-number);
if(s-number==0)
goto endp;
if(n==s-number)
{
printf("输入学号已存在!\n");
goto end;
}
while(s-number0)
{
getchar();
printf("\n学号不能为小于零!");
printf("\n请输入学号,输入0退回上一步:");
scanf("%d",s-number);
}
printf("请输入姓名:");
scanf("%s",s-name);
printf("请输入性别m/w:");
scanf("%s",s-sex);
printf("请输入语文成绩:");
scanf("%d",s-Chinese);
while(s-Chinese100||s-Chinese0)
{
getchar();
printf("请输入语文成绩:");
scanf("%d",s-Chinese);
}
printf("请输入数学成绩:");
scanf("%d",s-Match);
while(s-Match100||s-Match0)
{
getchar();
printf("请输入数学成绩:");
scanf("%d",s-Match);
}
printf("请输入英语成绩:");
scanf("%d",s-English);
while(s-English100||s-English0)
{
getchar();
printf("请输入英语成绩:");
scanf("%d",s-English);
}
s-average=(s-Chinese+s-English+s-Match)/3;
n=s-number;
s-next=Q-next;
Q-next=s;
amount++;
end: printf("是否继续输入数据:1/0\n");
scanf("%d",flag);
}
endp:printf("创建完毕!\n");
printf("输入了%d个学生",amount);
return 1;
}
/******************************************/
/*********************查找学生数据,以学号为前提****************/
Student *FindStudent(Student *Q,int x)
{
Student *q;
q=Q-next;
while(q!=NULLq-number!=x)
q=q-next;
if(q!=NULL)
return q;
else
return NULL;
}
/******************************************************/
/**************************修改学生数据**************************/
int ModifStudent(Student *Q,int x)
{
int flag,n;
Student *q;
q=Q-next;
while(q!=NULLq-number!=x)
q=q-next;
if(q!=NULL)
{
while(n)
{
printf("\n修改成绩科目:1.语文 2.英语 3.数学:");
scanf("%d",flag);
if(flag==1)
{
getchar();
printf("\n请输入语文成绩:");
scanf("%d",q-Chinese);
while(q-Chinese100||q-Chinese0)
{
getchar();
printf("\n请输入语文成绩:");
scanf("%d",q-Chinese);
}
}
else if(flag==2)
{
getchar();
printf("\n请输入数学成绩:");
scanf("%d",q-Match);
while(q-Match100||q-Match0)
{
getchar();
printf("\n请重新输入数学成绩:");
scanf("%d",q-Match);
}
}
else if(flag==3)
{
getchar();
printf("\n请输入英语成绩:");
scanf("%d",q-English);
while(q-English100||q-English0)
{
printf("\n请重新英语成绩:");
scanf("%d",q-English);
}
}
q-average=(q-Chinese+q-English+q-Match)/3;
printf("\n是否继续修改数据:1/0\n");
scanf("%d",n);
}
return 1;
}
return 0;
}
/******************************************************/
/************************排列学生数据***********************/
Student *Sort(Student *Q,int course)
{
Student *p,*q,*t;
int number,Chinese,English,Match,score;
char name[10],sex[2];
if(Q-next==NULL)
{
printf("没有构造学生表!");
return NULL;
}
switch(course)
{
case 1:for(p=Q-next;p;p=p-next)
{
t=p;
for(q=Q-next;q;q=q-next)
{
if(t-Chinese=q-Chinese)
{
number=t-number;
Chinese=t-Chinese;
English=t-English;
Match=t-Match;
score=t-average;
t-number=q-number;
t-Chinese=q-Chinese;
t-English=q-English;
t-Match=q-Match;
t-average=q-average;
q-number=number;
q-Chinese=Chinese;
q-English=English;
q-Match=Match;
q-average=score;
strcpy(name,t-name);
strcpy(sex,t-sex);
strcpy(t-name,q-name);
strcpy(t-sex,q-sex);
strcpy(q-name,name);
strcpy(q-sex,sex);
t=q;
}
}
}
break;
case 2:for(p=Q-next;p;p=p-next)
{
t=p;
for(q=Q-next;q;q=q-next)
{
if(t-English=q-English)
{
number=t-number;
Chinese=t-Chinese;
English=t-English;
Match=t-Match;
score=t-average;
t-number=q-number;
t-Chinese=q-Chinese;
t-English=q-English;
t-Match=q-Match;
t-average=q-average;
q-number=number;
q-Chinese=Chinese;
q-English=English;
q-Match=Match;
q-average=score;
strcpy(name,t-name);
strcpy(sex,t-sex);
strcpy(t-name,q-name);
strcpy(t-sex,q-sex);
strcpy(q-name,name);
strcpy(q-sex,sex);
t=q;
}
}
}
break;
case 3:for(p=Q-next;p;p=p-next)
{
t=p;
for(q=Q-next;q;q=q-next)
{
if(t-Match=q-Match)
{
number=t-number;
Chinese=t-Chinese;
English=t-English;
Match=t-Match;
score=t-average;
t-number=q-number;
t-Chinese=q-Chinese;
t-English=q-English;
t-Match=q-Match;
t-average=q-average;
q-number=number;
q-Chinese=Chinese;
q-English=English;
q-Match=Match;
q-average=score;
strcpy(name,t-name);
strcpy(sex,t-sex);
strcpy(t-name,q-name);
strcpy(t-sex,q-sex);
strcpy(q-name,name);
strcpy(q-sex,sex);
t=q;
}
}
}
break;
}
return Q;
}
int SaveStudent(Student *Q)
{
int i=0;
Student *p;
FILE *fp;
char open[20];
p=Q-next;
printf("请输入文件路径:");
scanf("%s",open);
if((fp=fopen(open,"w+"))==NULL)
{
printf("打开失败!");
return 0;
}
fprintf(fp,"|学号\t|姓名\t|性别\t|语文\t|英语\t|数学\t|均分\t|\n");
while(p!=NULLiamount)
{
i++;
fwrite(p,sizeof(Student),1,fp);
p=p-next;
//fprintf(fp,"|%d\t|%s\t|%s\t|%d\t|%d\t|%d\t|%d\t|\n",p-number,p-name,p-sex,p-Chinese,p-English,p-Match,p-average);
}
fclose(fp);
return 1;
}
/******************************************************************/
/************************输出学生成绩*******************************************/
void print(Student *Q)
{
Student *p;
p=Q;
if(Q-next==NULL)
printf("没有学生资料!");
else
{
printf("结果为:\n");
while(p-next!=NULL)
{
p=p-next;
printf("|学号\t|姓名\t|性别\t|语文\t|英语\t|数学\t|均分\t|\n");
printf("|%d\t|%s\t|%s\t|%d\t|%d\t|%d\t|%0.2f\t|\n",p-number,p-name,p-sex,p-Chinese,p-English,p-Match,p-average);
}
}
}
/********************************************************************************/
/********************************************************************************/
void LoadStudent()
{
int flag=1;
char FileName[20];
Student *p;
FILE *fp;
printf("请输入调出文件的路径:");
scanf("%s",FileName[20]);
if((fp=fopen(FileName,"r+"))!=NULL)
{
fscanf(fp,"|学号\t|姓名\t|性别\t|语文\t|英语\t|数学\t|均分\t|\n");
printf("|学号\t|姓名\t|性别\t|语文\t|英语\t|数学\t|均分\t|\n");
while(flag)
{
p=(Student*)malloc(sizeof(Student));
fscanf(fp,"%d%s%s%d%d%d%d",p-number,p-name,p-sex,p-Chinese,p-English,p-Match,p-average);
if(p-number==NULL)
flag=0;
else
{
printf("|%d\t|%s\t|%s\t|%d\t|%d\t|%d\t|%d\t|\n",p-number,p-name,p-sex,p-Chinese,p-English,p-Match,p-average);
flag=1;
}
}
}
else
printf("调出失败!");
fclose(fp);
}
/***************************************菜单界面********************************/
void Menu()
{
int flag,n,sure,course;
Student *Q,*p,*L;
n=0;
Q=InitStudent();
begin:
printf("\n\t\t\t 学生管理系统(可输入汉字)\n");
printf("|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");
printf("|1输入学生数据\t\t\t2修改学生数据\t\t\t3查找学生成绩|\n");
printf("|4排列学生数据\t\t\t5保存学生成绩\t\t\t6调出文件资料|\n");
printf("|7显示学生资料\t\t\t0结束程序 \t\t\t |\n");
printf("|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");
printf("\n操作方式:");
scanf("%d",flag);
switch(flag)
{
case 0:goto end;break;
case 1:CreatStudent(Q);
print(Q);
goto begin;
case 2:while(n==0)
{
printf("请输入查找学生学号:");
scanf("%d",n);
}
sure=ModifStudent(Q,n);
if(sure==1)
printf("修改成功\n");
else
printf("修改失败\n");
n=0;
goto begin;
case 3:while(n==0)
{
printf("请输入查找学生学号:");
scanf("%d",n);
}
p=FindStudent(Q,n);
if(p!=NULL)
{
printf("\n查询结果为:\n");
printf("|学号\t|姓名\t|性别\t|语文\t|英语\t|数学\t|均分\t|\n");
printf("|%d\t|%s\t|%s\t|%d\t|%d\t|%d\t|%d\t|\n",p-number,p-name,p-sex,p-Chinese,p-English,p-Match,p-average);
}
else
printf("查找失败\n");
n=0;
goto begin;
case 4:printf("请输入排序规则(输入0返回上一步)\n1.语文 2.英语 3.数学:");
scanf("%d",course);
if(course==0)
goto begin;
else
{
L=Sort(Q,course);
if(L!=NULL)
print(L);
}
goto begin;
case 5:SaveStudent(Q);
goto begin;
case 6:LoadStudent();
goto begin;
case 7:print(Q);
goto begin;
}
end:printf("\n\t\t\t\t 学生管理系统\n");
printf("|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");
printf("|1输入学生数据\t\t\t2修改学生数据\t\t\t3查找学生成绩|\n");
printf("|0退出程序\n");
printf("|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");
}
void main()
{
Menu();
}
给你个大概思路~~~~~
1。把每个学生的的信息先组合成一个结构体
struct
Student
{
……},
然后就用它来定义学生,
struct
Student
stu[100];(有能力的话建义用动态内存的链表结构,不明白当我没说)
2。“自顶向下,逐步求精”,把各个功能写成各个函数,如添加,删除,查询,退出……(看你自己了,这正是C语言的模块化思想
3。主函数就是打出这些选择,让USER
去选,然后调用相应的函数去执行,完了又回到主菜单,以此循环
如果能使用图形的界面,增加动画之类的会更好的(呵呵,不会当我没说~~~~)
#include
#include
#include
#include
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
int num;
char name[10];
int score;
struct student *next;
};
int n;
struct student *creat()
{
struct student *head;
struct student *p1,*p2;
p1=p2=(struct student *)malloc(LEN);
printf("请输入数据:\n");
printf("-学号---姓名---成绩-\n");
scanf("%d%s%d",p1-num,p1-name,p1-score);
head=NULL;
n=0;
while(p1-num!=NULL)
{
n=n+1;
if(n==1) head=p1;
else p2-next=p1;
p2=p1;
p1=(struct student *)malloc(LEN);
scanf("%d%s%d",p1-num,p1-name,p1-score);
}
p2-next=NULL;
return(head);
}
void print(struct student *head)
{
struct student *p;
p=head;
if(head!=NULL)
{
printf("-学号---姓名---成绩-\n");
while(p!=NULL)
{
printf("%d %s %d\n",p-num,p-name,p-score);
p=p-next;
}
}
else printf("没有数据 !\n");
}
struct student *del(int num,struct student *head)
{
int a=0;
struct student *p1,*p2;
do
{
p1=head;
if(head==NULL)
{
printf("没有数据 !\n");
goto end;
}
while(p1-num!=nump1-next!=NULL)
{
p2=p1;p1=p1-next;
}
if(p1-num==num)
{
if(p1==head) head=p1-next;
else p2-next=p1-next;
printf("删除记录学号为N0.%d\n",num);
n=n-1;
a++;
}
}while(p1-next!=NULL);
if(a==0)
printf("学号未找到 !\n");
end:
return(head);
}
struct student *add(int num,char name[],int score,struct student *head)
{
struct student *p0,*p1,*p2;
p0=(struct student *)malloc(LEN);
p0-num=num,strcpy(p0-name,name),p0-score=score;
p1=head;
if(num==0)
return(head);
if(head==NULL)
{
head=p0;
p0-next=NULL;
}
while(p0-nump1-nump1-next!=NULL)
{
p2=p1;
p1=p1-next;
}
if(p0-numnum)
{
if(p1==head) head=p0;
else p2-next=p0;
p0-next=p1;
}
else
{
p1-next=p0;
p0-next=NULL;
}
printf("增加记录学号为:%d\n",num);
n=n+1;
return(head);
}
void num(struct student *head)
{
int num,a=0;
struct student *p;
printf("------请输入 \"0\" 结束输入--------\n");
do
{
p=head;
printf("请输入要查找的学号:");
scanf("%d",num);
if(num!=0)
printf("-学号---姓名---成绩-\n");
while(p!=NULL)
{
if(p-num==num)
{
printf("%d %s %d\n",p-num,p-name,p-score);
a++;
}
p=p-next;
}
if(a==0num!=0)
printf("学号没找到!\n");
a=0;
}while(num!=0);
system("cls");
}
void name(struct student *head)
{
char name[10],a=0;
struct student *p;
printf("------请输入 \"0\" 结束输入------\n");
do
{
p=head;
printf("请输入要查找的名字:");
scanf("%s",name);
if(name[0]!='0')
printf("-学号---姓名---成绩-\n");
while(p!=NULL)
{
if(strcmp(p-name,name)==0)
{
printf("%d %s %d\n",p-num,p-name,p-score);
a++;
}
p=p-next;
}
if(a==0name[0]!='0')
printf("名字未找到 !\n");
a=0;
}while(name[0]!='0');
system("cls");
}
void search(struct student *head)
{
int a;
struct student *p;
p=head;
do
{
printf("1.按学号查找\n2.按名字查找\n3.退出\n");
scanf("%d",a);
system("cls");
switch(a)
{
case 1:num(p);break;
case 2:name(p);break;
}
}while(a!=3);
}
struct student *sort(struct student *head)
{
struct student *p1,*p2;
int i,j;
int num0,score0;
char string[10];
for(i=0;in-1;i++)
{
p1=head;
for(j=n-1;j0;j--)
while(p1-next!=NULL)
{
p2=p1;p1=p1-next;
if(p2-scorep1-score)
{
num0=p1-num;
p1-num=p2-num;
p2-num=num0;
strcpy(string,p1-name);
strcpy(p1-name,p2-name);
strcpy(p2-name,string);
score0=p1-score;
p1-score=p2-score;
p2-score=score0;
}
}
}
return(head);
}
void main()
{
struct student *head=NULL;
int num,score,a;
char name[10];
do
{
printf("1.创建记录\n2.删除记录\n3.增加记录\n4.查找记录\n5按成绩排序\n6.显示当前记录\n7.退出\n");
scanf("%d",a);
system("cls");
switch(a)
{
case 1:printf("------请输入 \"0 0 0\" 结束输入------\n");head=creat();print(head);getch();system("cls");break;
case 2:printf("------请输入 \"0\" 结束输入--------\n");do{printf("请输入要删除记录的学号:");scanf("%d",num);head=del(num,head);print(head);}while(num!=0);system("cls");break;
case 3:printf("------请输入 \"0 0 0\" 结束输入------\n");do{printf("请输入要增加的记录数据:\n");printf("-学号---姓名---成绩-\n");scanf("%d%s%d",num,name,score);head=add(num,name,score,head);print(head);}while(num!=0);system("cls");break;
case 4:search(head);break;
case 5:head=sort(head);print(head);getch();system("cls");break;
case 6:print(head);getch();system("cls");break;
}
}while(a!=7);
1、 函数调用:strcat(strcpy(str1,str2),str3)的功能是________。
C) 将串str2复制到串str1中后再将串str3连接到串str1之后
2、 若有以下调用语句,则正确的fun函数首部是
main()
{ ∶
∶
int a;float x;
∶
∶
fun(x,a);
∶
∶
}
B) void fun(float a,int x)
3、 有如下程序
int func(int a,int b)
{ return(a+b); }
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r); }
该程序的输出结果是__________。
D) 15
4、 函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+……+1/(n*n)
请你在下面程序中的划线部分填入________,完成求π的功能。
#include "math.h"
double pi(long n)
{ double s=0.0; long i;
for(i=1;i=n;i++) s=s+________;
return (sqrt(6*s)); }
A) 1.0/i/i
5、 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递
方式是________。
B) 单向值传递
6、 对于C语言的函数,下列叙述中正确的是________。
A) 函数的定义不能嵌套,但函数调用可以嵌套 (这答案有待斟酌)
7、 函数f的功能是:测定字符串的长度,空白处应填入________。
int f(char s[ ])
{ int i=0;
while(s[i]!='\0') i++;
return (________); }
main( )
{ printf("%d\n",f("goodbye!")); }
B) i
8、 若主调用函数类型为double,被调用函数定义中没有进行函数类型
说明,而return语句中的表达式类型为float型,则被调函数返回
值的类型是________。
C) double 型
9、 以下叙述中,错误的是________。
D) 形参可以是常量、变量或表达式
10、 以下叙述中,不正确的是________。
B) 在main函数体内定义的变量是全局变量
//学生信息采集系统
#includestdio.h
#define N 3 //设置全局变量N=3
struct student //设置结构体采集学生信息
{
char xuehao[13],name[15]; //学号名字设为字符
int mingci; // 名次设为整数
float score; // 成绩设为实数
};
void paixu(struct student a[N]) //定义排序的函数
{
int i,j;// 定义整形变量 i,j
struct student t; //设置student的结构体:t
for(i=0;iN-1;i++) //for循环3次采集3个学生信息
{
for(j=i+1;jN;j++)
if(a[j].scorea[i].score)
{
t=a[j];a[j]=a[i];a[i]=t;
}
}
for(i=1;iN;i++)
{
j=i-1;
if(a[j].score==a[i].score) a[i].mingci=i;
else a[i].mingci=i+1;
}
printf("名次 学号 姓名 成绩\n");
for(i=0;iN;i++)
printf("%4d%s %s %.2f\n",a[i].mingci,a[i].xuehao,a[i].name,a[i].score);
}
void chazhao(struct student b[N]) //定义查找学生信息的函数
{
char numbers[13]; //定义数组 numbers有0-13个元素
int s;
printf("请输入您要查找的学号:\n");
scanf("%s",numbers);//scanf numbers的地址
for(s=0;sN;s++) //for循环3次打印符合条件的学生信息
{
if(b[s].xuehao==numbers)
{
printf("学号 姓名 成绩\n");
printf("%4d%s %s %.2f",b[s].xuehao,b[s].name,b[s].score);
}
else printf("not found\n");
}
}
void bujige(struct student c[N])//定义不及格的学生信息
{
int i,k=0;
for(i=0;iN;i++)
{
if(c[i].score60.0)
k=k+1;
}
printf("不及格人数有%d位\n",k);
}
main()
{
struct student stu[N];
int i,j;
printf("请按学号,姓名,成绩的顺序依次输入每个学生的信息\n");
for(i=0;iN;i++)
{
printf("请输入第%d位同学的信息:\n",i+1);
scanf("%s %s %f",stu[i].xuehao,stu[i].name,stu[i].score);
}
while(j!=0)//根据j的值采取不同的操作
{
printf("1:按成绩排名次 2:统计不及格人数 3:查找出学生信息 0:退出\n");
printf("请输入要选择的数字:\n");
scanf("%d",j);//scanf 调用j的地址
switch(j)
{
case 1:paixu(stu); break;
case 2:bujige(stu); break;
case 3:chazhao(stu); break;
}
}
printf("谢谢您的使用!");
}