| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:[求助]结构体插入部分~~
只看楼主 加入收藏
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
收藏
 问题点数:0 回复次数:4 
[求助]结构体插入部分~~


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define getch()
#define clrscr()


#define N 100

int i,j,k;
char c1,c2,c3,c4;

struct student
{
char name[20];
char sex[4];
long num;
float score[3];

}stu[N];

void input(struct student stu[]) //输入信息
{
for(i=0;i<N;i++)
{
printf("请输入学号:");
scanf("%ld",&stu[i].num);
printf("请输入姓名:");
fflush(stdin);
scanf("%s",&stu[i].name);
printf("请输入性别:");
scanf("%s",&stu[i].sex);
for(j=0;j<3;j++)
{
printf("您的第%d科成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}

printf("\n是否继续输入?(Y/N)");
fflush(stdin);
c1=getchar();
if(c1=='y'||c1=='Y')
{
k++; //k为输入学生个数
input(stu);
}
else break;
}
}

void print(struct student stu[]) //打印出信息
{
printf("所有信息如下:\n");
printf("学号\t姓名\t性别\tC语言\tJava\tVB\n");
for(i=0;i<=k;i++) //i表示共有多少学生
{
printf("-------------------------------------------\n");
printf("%-8ld%-8s%-8s",stu[i].num,stu[i].name,stu[i].sex);
for(j=0;j<3;j++) //j表示共有几门课程
{
printf("%-8.1f",stu[i].score[j]);
}
printf("\n");
}
}

main()
{
int m;
printf("\t\t\t****Welcome to my first work!****\n");
printf("\t\t\t| 1.学生信息录入系统 |\n");
printf("\t\t\t| 2.学生成绩录入系统 |\n");
printf("\t\t\t| 3.系统帮助 |\n");
printf("\t\t\t| 4.推出系统 |\n");
printf("\t\t\t***********Thanks you!**********\n");
printf("\n\n\t\t\t请选择您要进入的系统(1-4):\n");
getch();
clrscr();
input(stu);
print(stu);

}

1:想问下上面红色部分,第一次输入N可以推出,第2次输入N时就不退出了~~为何??
2:还有就是蓝色部分,自己定义函数的话是否都要在上面#define下?
3:fflush(stdin);清除流操作一般用在何处?
3:有没有人有VC助手的注册码,网上的都是过期的不能用~谢谢~

搜索更多相关主题的帖子: 结构体 
2007-10-09 11:32
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
1: 因为你有一次递归调用,发现没?
2:那本不是自定义函数,一个是非标准I/O,一个是TC下的清屏函数。。。不过你的用法很独特,思路很大胆~~
3:清空I/O流
4:暂时米有

[此贴子已经被作者于2007-10-9 12:42:34编辑过]


偶学编程,也许本身就是一个错。。。
2007-10-09 12:34
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
收藏
得分:0 

谢谢LS的~~
我在琢磨下~


★孤独的人是可耻的★
2007-10-09 13:38
mixmouse
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-8
收藏
得分:0 
if(c1=='y'||c1=='Y')
{
k++; //k为输入学生个数
input(stu);
}
else break;
K是什么?好像没有看到初始化?

[此贴子已经被作者于2007-10-10 14:44:13编辑过]

2007-10-10 14:41
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
收藏
得分:0 

/**********************************
创作于:2007.10.8/9/10
作 者:六道
内 容:学生信息系统
**********************************/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define getch()
#define clrscr()
#define N 100

int i; //i表示共录入多少位学生,j表示课程数目


struct student
{
char name[20];
char sex[4];
long num;
float cj1;
float cj2;
float cj3;
float pcj;
}stu[N];
void print(struct student stu[]); //定义各函数:显示,输入,插入,删除,排序
void input(struct student stu[]);
void insert(struct student stu[]);
void del(struct student stu[]);
void sort(struct student stu[]);

void input(struct student stu[]) //输入信息
{

printf("请输入学号:");
scanf("%ld",&stu[i].num);
printf("请输入姓名:");
fflush(stdin);
scanf("%s",&stu[i].name);
printf("请输入性别:");
scanf("%s",&stu[i].sex);
printf("C语言:");
scanf("%f",&stu[i].cj1);
printf("Java :");
scanf("%f",&stu[i].cj2);
printf("SQL :");
scanf("%f",&stu[i].cj3);
stu[i].pcj=(stu[i].cj1+stu[i].cj2+stu[i].cj3)/3;

printf("\n");
i++;

printf("\n是否继续?(Y/N)-->"); //判断是否继续录入
fflush(stdin);
if(getchar()=='y'||getchar()=='Y')
input(stu);
}

void print(struct student stu[]) //显示信息
{
int p; //p为变量从0到i-1,j表示共有几门课程
printf("学号\t姓名\t性别\tC语言\tJava\tSQL\t平均成绩\n");
for(p=0;p<i;p++) //i表示共录入多少位学生
{
printf("----------------------------------------------------\n");
printf("%-8ld%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f",stu[p].num,stu[p].name,stu[p].sex,stu[p].cj1,stu[p].cj2,stu[p].cj3,stu[p].pcj);
printf("\n");
}
}

void insert(struct student stu[]) //插入学生信息
{
printf("\n\n输入插入学生信息==>\n");
input(stu);
}

void del(struct student stu[]) //删除学生信息
{
long stunum; //输入学号变量
int t,q; //t为数组替换变量,q为寻找学号变量
printf("\n请输入您要删除的学生学号:");
scanf("%ld",&stunum);
for(q=0;q<i-1;q++)
{
if(stunum==stu[q].num)
{
break;
}
}
printf("\n\n您要删除的学生信息为:\n");
printf("----------------------------------------------------\n");
printf("\n学号\t姓名\t性别\tC语言\tJava\tSQL库\t平均成绩\n");
printf("----------------------------------------------------\n");
printf("%-8ld%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f",stu[q].num,stu[q].name,stu[q].sex,stu[q].cj1,stu[q].cj2,stu[q].cj3,stu[q].pcj); //此处q表示找到了相同学号的那行数组信息

for(t=q;t<i-1;t++)
{
stu[t]=stu[t+1];
}
i--;

getchar();

printf("\n\n是否继续删除?(Y/N)-->");
if(getchar()=='y'||getchar()=='Y')
del(stu);
}

void sort(struct student stu[]) //信息按照学号进行从小到大排序
{
int x,y,temp;
for(x=0;x<i;x++)
{
for(y=0;y<i;y++)
if(stu[x].num<stu[y].num)
{
temp=stu[x].num;
stu[x].num=stu[y].num;
stu[y].num=temp;
}
}
}

void main()
{
printf("\t\t\t****Welcome to my first work!****\n");
printf("\t\t\t| 1.学生信息录入系统 |\n");
printf("\t\t\t| 2.学生成绩录入系统 |\n");
printf("\t\t\t| 3.系统帮助 |\n");
printf("\t\t\t| 4.推出系统 |\n");
printf("\t\t***********Thanks you!**********\n");
getch();
clrscr();

printf("\n\n\n请输入学生信息.\n\n");
input(stu);
printf("\n\n输入学生信息如下:\n\n");
sort(stu);
print(stu);

printf("\n是否插入新生?(Y/N)-->");
fflush(stdin);
if(getchar()=='y'||getchar()=='Y') //判断条件为真则插入
insert(stu);
printf("插入后学生信息如下:\n\n");
sort(stu);
print(stu);

printf("\n是否删除某个学生记录?(Y/N)-->");
fflush(stdin);
if(getchar()=='y'||getchar()=='Y')
{
printf("\n您确定要进行删除操作吗?此操作不能恢复.(Y/N)-->");
fflush(stdin);
if(getchar()=='y'||getchar()=='Y')
del(stu);

else
printf("\n考虑好再来吧!");
}
printf("\n\n删除后学生信息如下:\n\n");
sort(stu);
print(stu);

printf("\n\n下次再见!");
getchar();
printf("\n\n\t\t\t*********888888888888888*********\n");

}

自己写的,还有很多细节没有搞,比较菜,大家见谅~

[此贴子已经被作者于2007-10-10 15:27:41编辑过]


★孤独的人是可耻的★
2007-10-10 15:27
快速回复:[求助]结构体插入部分~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051369 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved