从键盘输入5个人的姓名、年龄和性别,然后输出。 要求:分别通过结构指针和结构变量名输出信息。

structStudent{charname[20];intnum;}intmain(){Studentstudents[10000];intc=1;shuru(stud... struct Student
{
char name[20]; int num;
}
int main()
{Student students[10000];
int c=1;
shuru(students,&c);
xianshi(students,c);
}
void shuru(Student* s,int *h)
{
system("cls");
int i,l;
printf("需要输入学生数量:");
scanf("%d",&l);
for(i=0;i<l;i++)
{
printf("姓名:");
scanf("%s",&s->name);
printf("学号:");
scanf("%d",&s->num);
(*h)++;}
}
void xianshi(Student* s,int h)//显示
{
system("cls"); /*清屏*/
int i;
printf("\n****************************************************************************\n");
printf("\n姓名\t学号\n\n");
for(i=0;i<h;i++)
{
printf("%s\t%d",s[i].name,s[i].num);
}
}
到显示函数这,循环就奔溃了
展开
 我来答
黑色星期天HOHO
2012-06-07 · 超过16用户采纳过TA的回答
知道答主
回答量:40
采纳率:100%
帮助的人:40万
展开全部
建议功能函数最好是放在主函数的前面,函数命名也最好不要用汉语拼音...你的程序奔溃是录入数据的时候数组指针没有指向下一个空的数组元素,导致输入一直在替换第一个元素的值。输出的时候没有数据自然就输出乱码了.下面是稍加修改的程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Student
{
char name[20];
char num[20];
}Stu;

int Input(Stu *s,int *h)
{
system("cls");
int i,l;
printf("需要输入学生数量:");
scanf("%d",&l);
for(i=0;i<l;i++)
{
printf("姓名:");
scanf("%s",s->name);
printf("学号:");
scanf("%s",s->num);
s++;/*开始s指向结构体数组首地址,每次循环完以后指针要指向数组下一
个元素*/
(*h)++;
}
return (*h);
}
void Show(Stu* s,int h)//显示
{
system("cls"); /*清屏*/
int i;
printf("\n****************************************************************************\n");
printf("姓名 学号\n");
for(i=0;i<h;i++)
{
printf("%-14s%-14s\n",s[i].name,s[i].num);
}
}

void main()
{
Stu stu[100];
int c=0;
c=Input(stu,&c);
Show(stu,c);
}
更多追问追答
追问
typedef struct Student
{
char name[20];
char num[20];
}Stu;
这个算不算全局变量?
追答
这个不是变量.结构体是一种特殊的数据类型啊。跟int 、char一样。
typedef struct Student
{
char name[20];
char num[20];
}Stu;
这个的意思就是Stu 就代表了Student这个结构体变量类型,是为了程序的简洁性和可读性。
跟struct Student一样的.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式