C语言问题 C语言问题,求助

作者&投稿:俎促 (若有异议请与网页底部的电邮联系)
前不久写的,你只要稍稍改动一点就可以了,呵呵.加油!
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define N 3
typedef struct z1
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
STUDENT *init();
STUDENT *create();
STUDENT *del(STUDENT *h);
void print(STUDENT *h);
void search1(STUDENT *h);
void search2(STUDENT *h);
STUDENT *insert(STUDENT *h);
void sort(STUDENT *h);
void save(STUDENT *h);
void tongji(STUDENT *h);
int menu_select();
STUDENT *load();
void inputs(char *prompt,char *s,int count);
STUDENT *load();
main()
{
int i;
STUDENT *head;
head=init();
for(;;)
{
switch(menu_select())
{
case 0:head=init();break;
case 1:head=create();break;
case 2:head=insert(head);break;
case 3:save(head);break;
case 4:print(head);break;
case 5:search1(head);break;
case 6:head=del(head);break;
case 7:sort(head);break;
case 8:tongji(head);break;
case 9:search2(head);break;
case 10:exit(0);
}
}
}
int menu_select()
{
char *menu[]={"************菜单************",
"0. 初始化链表",
"1. 输入学生成绩",
"2. 插入学生成绩",
"3. 保存学生记录",
"4. 显示学生记录",
"5. 按学号查找学生信息",
"6. 删除指定学号的学生信息",
"7. 按某一门课对学生成绩排序",
"8. 统计某门课程的学生成绩",
"9. 按姓名查找学生信息",
"10. 退出系统"};
char s[3];
int c,i;
for(i=0;i<=11;i++)
printf(" %s\n",menu[i]);
do
{
printf("\n请选择0~10中的某一个选项\n");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>10);
return c;
}
STUDENT *init()
{
return NULL;
}
STUDENT *create()
{
int i;int s;
STUDENT *h=NULL,*info;
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT));
if(!info)
{
printf("\n内存不足");
return NULL;
}
inputs("输入学号:",info->no,11);
if(info->no[0]=='@')break;
inputs("输入姓名:",info->name,15);
printf("开始输入%d门课的成绩\n",N);
s=0;
for(i=0;i<N;i++)
{
do{
printf("第%d门分数:",i+1);
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("输入成绩错误,请重新输入:\n");
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i];
}
info->sum=s;
info->average=(float)s/N;
info->order=0;
info->next=h;
h=info;
}
return h;
}
void inputs(char *prompt,char *s,int count)
{
char p[255];
do
{
printf(prompt);
scanf("%s",p);
if(strlen(p)>count)
printf("\n太长了!\n");
}while(strlen(p)>count);
strcpy(s,p);
}
void print(STUDENT *h)
{
int i=0;
STUDENT *p;
p=h;
printf("\n\n\n***********************学生***********************\n");
printf("|序号|学号 | 姓名 | 语文 | 英语 |数学 | 总分 |平均分 |名次 |\n");
printf("|---|-------|--------|----|----|----|------|------|---|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",i,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("***********************end***********************\n");
}
STUDENT *del(STUDENT *h)
{
STUDENT *p,*q;
char s[11];
printf("请输入要删除的学生的学号\n");
scanf("%s",s);
q=p=h;
while(strcmp(p->no,s)&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==NULL)
printf("\n链表中没有学号为%s的学生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|----------|----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("***********************end***********************\n");
printf("请按任意键删除\n");
getchar();
if(p==h)
h=p->next;
else q->next=p->next;
free(p);
printf("\n已经删除学号为%s的学生\n",s);
printf("不要忘了保存数据\n");
}
return h;
}
void search1(STUDENT *h)
{
STUDENT *p;
char s[11];
printf("请输入你要查找的同学的学号\n");
scanf("%s",s);
p=h;
while(strcmp(p->no,s)&&p!=NULL)
p=p->next;
if(p==NULL)
printf("'n没有学号为%s的学生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|----------|-----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("***********************end***********************\n");
}
}
void search2(STUDENT *h)
{
STUDENT *p;
char s[11];
printf("请输入你要查找的同学的姓名\n");
scanf("%s",s);
p=h;
while(strcmp(p->name,s)&&p!=NULL)
p=p->next;
if(p==NULL)
printf("\n没有姓名为%s的学生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|----------|-----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("***********************end***********************\n");
}
}
STUDENT *insert(STUDENT *h)
{
STUDENT *p,*q,*info;
char s[11];
int s1,i;
printf("请输入插入点的学生学号\n");
scanf("%s",s);
printf("\n请输入新的学生信息\n");
info=(STUDENT *)malloc(sizeof(STUDENT));
if(!info)
{
printf("\n内存不足!");
return NULL;
}
inputs("输入学号:",info->no,11);
inputs("输入姓名:",info->name,15);
printf("请输入%d门课的分数\n",N);
s1=0;
for(i=0;i<N;i++)
{
do{
printf("分数%d",i+1);
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("输入数据有误,请重新输入\n");
}while(info->score[i]>100||info->score[i]<0);
s1=s1+info->score[i];
}
info->sum=s1;
info->average=(float)s1/N;
info->order=0;
info->next=NULL;
p=h;
q=h;
while(strcmp(p->no,s)&&p!=NULL)
{q=p;p=p->next;}
if(p==NULL)
if(p==h)
h=info;
else q->next=info;
else
if(p==h)
{
info->next=p;
h=info;
}
else
{
info->next=p;
q->next=info;
}
printf("\n已经插入了%s这个学生\n",info->name);
printf("----不要忘了存盘啊--\n");
return(h);
}
void save(STUDENT *h)
{
FILE *fp;
STUDENT *p;
char outfile[10];
printf("请输入保存文件的文件名,例如 c:\\f1\\te.txt:\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL)
{
printf("不能打开文件\n");
exit(1);
}
printf("\n正在保存......\n");
p=h;
while(p!=NULL)
{
fwrite(p,sizeof(STUDENT),1,fp);
p=p->next;
}
fclose(fp);
printf("------保存成功!!!------\n");
}
STUDENT *load()
{
STUDENT *p,*q,*h=NULL;
FILE *fp;
char infile[10];
printf("请输入要读取数据的文件名,例如c:\\f1\\te.txt:\n");
scanf("%s",infile);
if((fp=fopen(infile,"wb"))==NULL)
{
printf("不能打开文件\n");
exit(1);
}
printf("正在读取数据....\n");
p=(STUDENT *)malloc(sizeof(STUDENT));
if(!p)
{
printf("内存不足!\n");
exit(1);
}
h=p;
while(!feof(fp))
{
if(1!=fread(p,sizeof(STUDENT),1,fp))
break;
p->next=(STUDENT *)malloc(sizeof(STUDENT));
if(!p->next)
{
printf("内存不足!\n");
return h;
}
q=p;
p=p->next;
}
q->next=NULL;
fclose(fp);
printf("---你已经成功地从文件中读取了数据!!!---\n");
return h;
}
void sort(STUDENT *h)
{
int i=0,j;
STUDENT *p,*q,*t,*h1;
printf("请输入要按哪门课程的编号来排序:(0.语文 1.数学 2.英语)\n");
scanf("%d",&j);
h1=h->next;
h->next=NULL;
while(h1!=NULL)
{
t=h1;
h1=h1->next;
p=h;
q=h;
while(t->score[j]<p->score[j]&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==q)
{
t->next=p;
h=t;
}
else
{
t->next=p;
q->next=t;
}
}
p=h;
while(p!=NULL)
{
i++;
p->order=i;
p=p->next;
}
print(h);
printf("排序成功!!!\n");
}
void tongji(STUDENT *h)
{
STUDENT *p;
int a,b,i;
printf("请输入课程编号\n");
scanf("%d",&i);
printf("请输入分数段:\n");
scanf("%d,%d",&a,&b);
p=h;
while(p!=NULL)
{
printf("\n\n\n***********************找到了***********************\n");
if(p->score[i]>=a&&p->score[i]<=b)
{
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|--------|---------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
}
p=p->next;
}
printf("***********************end***********************\n");
}

四、课程设计的基本要求
C语言课程设计是C语言程序设计课程的一个重要的环节。它是根据教学计划的要求,在老师指导下,对学生实施程序设计训练的必要过程,是对前期课堂教学效果的检验。其目标在于培养学生综合应用理论知识来分析和解决实际问题的能力。
通过本次课程,要求学生能够遵循软件开发过程的基本规范,应用结构化程序设计的方法,按照题目要求,独立完成设计任务,使学生更加深刻地理解和掌握C语言的基本概念、语言特点和编程技巧,为将来用C、VC进行软件开发打下良好基础。

c语言问题?~

您好,很高兴回答问题。
对于c语言中的静态存储变量而言,完整定义形式为static int,但是也可以省略int,只要有static就能默认为带有int.
以上就是我的回答,希望能帮助到您。

这题是迷惑人用的……
因为循环内部没有break,所以for会一直运行下去,直到a=11,。这时a大于10,循环结束。
最终a的值为11

语言课程里遇到的问题
答:在学校里自然有符合学校规范的用语,然而当下许多教师用语却缺乏规范性,语言表达不够准确甚至缺乏分寸感。经常出现语言暴力或者语言霸权主义。比如:“你这个笨蛋、你傻啊、你有病啊”等,甚至存在变相体罚和侮辱同学,不仅伤害了同学的自尊心还给学校文明教育产生了恶劣的影响,语言霸权主义主要变现在很多教师...

网络语言存在的问题,只需要弊端
答:1、 粗俗泛滥,内容粗鄙肤浅。中国五千年的历史积淀,累积了不少精髓语言语句,而且中国语言博大精深,所具有的内涵和美感 是不可比拟的。但,现在网络语言中,一些语句已经具有人身攻击,对他人的心理造成一定的影响。2、 过度盛行,影响空前绝后。中国母语经过几千年的积淀,已经形成一定的语法结构,但现...

几个关于语言学的问题
答:1、是什么组合了全球语言? 为什么是英语,而不是其它语言?2、什么是语言发生变化的动机呢?3、为什么说英语是目前interwing事业史同步,历时apporaches?4.什么是各种语言的共同特点呢?5、是什么原因引起的语言的变化呢?6、语言之间的共同点?7、什么是合适的语言,内容呢?8、现场的例子说明国家间语言?

一些C语言的问题,很紧急,非常感谢您能回答!!!
答:A)C语言兼有高级语言和低级语言的双重特点,执行效率高 B)C语言可以用来编写应用程序,又可用以编写系统软件 C)C语言的可移植性较差 D)C语言是一种结构式模块化程序设计语言 2.下列叙述中正确的是 A 。A) C语言程序总是从main函数开始执行 B) C语言程序总是从第一个定义的函数开始执...

在语言教学过程中,会存在什么问题?
答:以下是我的看法:一、会存在学生发音不准的问题 当我们都习惯了自己的母语系统之后,我们的发音系统也基本上都定型了。在学习外语的时候,会经常遇到母语中没有的发音方式和发音方法,这个时候,这些不一样的发音,就会对学生产生很大的困扰。所以在语言教学中,老师们经常会遇到学生发音不准的问题,这个...

幼儿语言6大问题
答:幼儿语言6大问题1 1、语言发展迟缓 某些幼儿因先天生理上的缺陷、听觉障碍、脑部功能不足,或后天生长环境没有给予足够的语言刺,泪使得语言理解或表达能力比不上同年龄层正常的小孩,就称之为语言发展迟缓。针对这种小孩语言治疗的时机是早开始愈好。2、构音异常 即幼儿说话时语音不清的情形。这是最...

语言问题的简介
答:《语言问题》是赵元任教授在台湾大学文学院中文系的演讲记录。全书十六讲,系统地讲述了语言学以及与语言学有关系的各项基本问题,是作者的重要著作之一。本书已经成为现代语言学的经典之作。

为什么我的语言有问题呢?
答:那么一个人,通常说,如果语言逻辑有问题。那么问题大概有2个。1,这个人的语文词汇量不好,语法的使用不精确。词语、词汇量的数量太少。所以对于很多复杂的事情、人、或者某些规律,没有很好的办法用语言去描述、去总结。所以,最好的办法就是学好语文,特别是语法的使用和大量的词汇量,包括一些生僻词...

幼儿语言发展中易出现的问题
答:儿童言语发展中易出现的问题是指在儿童言语发展过程中由于各种原因会出现音准差、不会掌握语言表情技巧、口吃等问题,父母及老师应仔细观察,及早发现,分析原因,并给予相应的措施。音准差:音准差是指不能准确发出某个单音节的读音。3~4岁的儿童,随着发音器官的成熟,语音听觉系统及大脑机能的发展,...

幼儿语言常见的问题及措施
答:幼儿语言常见的问题及措施如下:1、幼儿语言教育存在一定的超前性。在幼儿语言教育中,部分幼儿教师未能有效地分析幼儿的语言学习基础,在开展语言教育的过程中,存在脱离实际,盲目跟进的做法。部分幼儿教师不考虑幼儿的接受程度,不考虑幼儿自身的特点,将本来不属于幼儿学习阶段的语言内容放到课堂上来讲,造成...