从键盘输入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);
}
}
到显示函数这,循环就奔溃了 展开
{
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);
}
}
到显示函数这,循环就奔溃了 展开
1个回答
展开全部
建议功能函数最好是放在主函数的前面,函数命名也最好不要用汉语拼音...你的程序奔溃是录入数据的时候数组指针没有指向下一个空的数组元素,导致输入一直在替换第一个元素的值。输出的时候没有数据自然就输出乱码了.下面是稍加修改的程序
#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);
}
#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一样的.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |