楼主跟我的C语言程序设计课程要求设计的程序很像,有一点点不同,不过我的程序应该能满足你的要求,代码如下:
#include <stdioh>
#include <conioh>
#include <stringh>
#define N 10
struct student{
char name[20];
int cla;
int point1;
int point2;
int point3;
int sum;
int num;
};
void printf_student(struct student stu[]);
void in_student(struct student stu[]);
void look_student(struct student stu[]);
void main(){
student stu[N];
int choice1;
while(choice1!=5){
printf("请选择您要 *** 作的项目:\n");
printf("1读取数据\n2录入数据\n3分析数据\n4保存数据\n5退出\n");
scanf("%d",&choice1);
switch(choice1){
case 1:
printf_student(stu);
break;
case 2:
in_student(stu);
break;
case 3:
look_student(stu);
break;
}}
}
void printf_student(struct student stu[]){
FILE fout;
int i=0;
int j=0;
fout=fopen("stu1txt","r");
if(fout==NULL){printf("找不到文件");}
else{
while(!feof(fout)){
fscanf(fout,"%s %d %d %d %d",stu[i]name,&stu[i]cla,&stu[i]point1,&stu[i]point2,&stu[i]point3);
i++;
}
printf("已经读取");
printf("\n姓名\t\t班级\t\t成绩1\t\t成绩2\t\t成绩3\n");
for(j=0;j<i;j++){
printf("%s\t\t",stu[j]name);
printf("%d\t\t",stu[j]cla);
printf("%d\t\t",stu[j]point1);
printf("%d\t\t",stu[j]point2);
printf("%d\t\t",stu[j]point3);}
}
fclose(fout);
}
void in_student(struct student stu[]){
FILE fp;
student flag;
char ch[50]={0};
fp=fopen("stu1txt","a+");
int choice=1;
if(fp==0){printf("无法打开文件\n");}
else{
while(choice){
printf("请依次输入姓名,班级,成绩1,成绩2,成绩3\n");
scanf("%s %d %d %d %d",flagname,&flagcla,&flagpoint1,&flagpoint2,&flagpoint3);
sprintf(ch,"%s\t%d\t%d\t%d\t%d",flagname,flagcla,flagpoint1,flagpoint2,flagpoint3);
/fwrite(flagname,20,1,fp);
fwrite("\t",2,sizeof("\t"),fp);
fwrite(&flagcla,sizeof(flagcla),1,fp);
fwrite("\t",sizeof("\t"),1,fp);
fwrite(&flagpoint1,sizeof(flagpoint1),1,fp);
fwrite("\t",2,sizeof("\t"),fp);
fwrite(&flagpoint2,sizeof(flagpoint2),1,fp);
fwrite("\t",2,sizeof("\t"),fp);
fwrite(&flagpoint3,sizeof(flagpoint3),1,fp);/
fwrite(ch,strlen(ch),1,fp);
printf("%s",ch);
printf("若想继续录入,请输入1,若退出,请输入0\n");
scanf("%d",&choice);
}}
fclose(fp);
}
void look_student(struct student stu[]){
FILE fp;
int i=0;
int sum=0;
student flag;
fp=fopen("stu1txt","r");
if(fp==0){printf("无法打开文件\n");}
else{
while(!feof(fp)){
fscanf(fp,"%s %d %d %d %d",stu[i]name,&stu[i]cla,&stu[i]point1,&stu[i]point2,&stu[i]point3);
i++;
}}
for(int j=0;j<i;j++){
sum=stu[j]point1+stu[j]point2+stu[j]point3;
stu[j]sum=sum;
sum=0;
}
int t=0;
for(t=1;t<i;t++){
for(j=0;j<i-t;j++){
if(stu[j]sum<stu[j+1]sum){
strcpy(flagname,stu[j+1]name);
flagcla=stu[j+1]cla;
flagpoint1=stu[j+1]point1;
flagpoint2=stu[j+1]point2;
flagpoint3=stu[j+1]point3;
flagsum=stu[j+1]sum;
strcpy(stu[j+1]name,stu[j]name);
stu[j+1]cla=stu[j]cla;
stu[j+1]point1=stu[j]point1;
stu[j+1]point2=stu[j]point2;
stu[j+1]point3=stu[j]point3;
stu[j+1]sum=stu[j]sum;
strcpy(stu[j]name,flagname);
stu[j]cla=flagcla;
stu[j]point1=flagpoint1;
stu[j]point2=flagpoint2;
stu[j]point3=flagpoint3;
stu[j]sum=flagsum;
}
}
}
for(j=0;j<i;j++){
stu[j]num=j+1;
}
fclose(fp);
FILE creat;
char ch[30]={0};
creat=fopen("stu2txt","w");
for(j=0;j<i;j++){
sprintf(ch,"%s\t%d\t%d\t%d\t%d\t%d\t%d",stu[j]name,stu[j]cla,stu[j]point1,stu[j]point2,stu[j]point3,stu[j]sum,stu[j]num);
fwrite(ch,30,1,creat);
}
printf("姓名\t班级\t成绩1\t成绩2\t成绩3\t总分\t排名\n");
for(j=0;j<i;j++){
printf("%s\t",stu[j]name);
printf("%d\t",stu[j]cla);
printf("%d\t",stu[j]point1);
printf("%d\t",stu[j]point2);
printf("%d\t",stu[j]point3);
printf("%d\t",stu[j]sum);
printf("%d\n",stu[j]num);
}
fclose(creat);
}
注意一下,我创建的文件时stu1txt
任何C语言程序包括用C语言编写的数据结构程序,都必须经过,编辑、编译、链接、执行四个阶断。
1、编辑,即编写源码,可以使用任何的文本编辑器来编写源码,以windows为例,即可以使用vc、vs等专业的IDE,也可以使用记事本、editplus、以及gvim等文本编辑器来编写源码。
2、编译,即通过C语言编译器对C语言源码进行编译,比如gcc、vc等等。
3、链接,编译完成后,需要通过链接器,将所有的库、编译器输出文件,合并为一个 *** 作系统可加载的应用程序,在Windows平台这种格式为PE格式,在Linux平台这种格式称为ELF格式。
4、运行,当链接完成后,一个可执行的C语言程序就产生了,这时候通过图形界面的双击或者控制台才可以运行程序。
把scanf("%d\n",&q->name);改成scanf("%s",q->name);。
把scanf("%d\n",&q->score);改成scanf("%d",&q->score);。
函数studlist CreateStudent()应该有一个返回值。若不需要返回值,请改成void CreateStudent()。
if(p->Next->score<q->score)中p->Next->score并未赋值,怎么能与q->score比较?这里就会跳出运行。
char name[3];中3太小只能放下一个汉字或两个字符。
适当的地方应该有释放所申请的内存的语句。
#include<stdioh>
#include<stdlibh>
typedef struct node NODE, PNODE;
struct node {
int data;
PNODE next;
};
PNODE newnode()
{
PNODE p = (PNODE)malloc(sizeof(NODE));
p->data = 0;
p->next = NULL;
return p;
}
void append(PNODE &p, int &val)
{
while(p->next)p = p->next;
p->data = val;
p->next = newnode();
p = p->next;
}
void display(PNODE a, PNODE b)
{
while(a->next && b->next){
printf("%d %d\n", a->data, b->data);
a = a->next;
b = b->next;
}
}
void freed(PNODE p)
{
PNODE t;
while(p) {
t = p->next;
free(p);
p = t;
}
}
void main()
{
int n, m;
PNODE q1, q2, qq1, qq2;
qq1 = q1 = newnode();
qq2 = q2 = newnode();
n = m = 0;
scanf("%d", &n);
while(n--) {
scanf("%d", &m);
if(m % 2) {
append(qq1, m);
} else {
append(qq2, m);
}
}
display(q1, q2);
freed(q1);
freed(q2);
}
int main() {
SqList L;
int i;
printf("输入数据个数: ");
scanf("%d", &Llength);
for (i = 1; i <= Llength; i++) {
printf("输入第 %d 个数: ", i);
scanf("%d", &Lr[i]);
}
InsertSort(L);
printf("排序后: \n");
for (i = 1; i <= Llength; i++) {
printf("%d ", Lr[i]);
}
printf("\n");
}
以上就是关于设计一个程序,是C语言数据结构全部的内容,包括:设计一个程序,是C语言数据结构、数据结构c语言怎么运行啊、数据结构c语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)