设计一个程序,是C语言数据结构

设计一个程序,是C语言数据结构,第1张

楼主跟我的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语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9295672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存