#include<stdio.h>
#define LEN 2 //4 //改为2用于测试
#define namelen 12
typedef int Elemtype
void output()//函数,输出结果
void input()//函数,输入数据
struct scores{
Elemtype clanguage
Elemtype english
Elemtype math
}
typedef struct stu
{
char name[namelen]
char sex[4]
char num[4]
int age
struct scores score
}student
student stu[LEN]
//原代码struct stu *p//这种方式可以用
student *p
int i,j
void input()
{
for(i=0i<LENi++)
{
printf("输入%d/%d个学生的信息:\n",i+1,LEN)
printf("姓名:\t")
scanf("%s",p->name)//原代码scanf("%s",&p->name)
//这个语句多余了stu[i].name[namelen-1]=0
printf("性别:\t")
scanf("%s",p->sex)//原代码scanf("%s",&p->sex)
printf("学号:\t")
scanf("%s",p->num)//原代码scanf("%s",&p->num)
printf("年龄:\t")
scanf("%d",&p->age)
printf("c语言成绩:\t")
scanf("%d",&p->score.clanguage)
printf("英语成绩:\t")
scanf("%d",&p->score.english)
printf("高数成绩:\t")
scanf("%d",&p->score.math)
p++//指针 要指向下一个
}
}
void output()
{
printf("\n %d的学生信息:\n==============\n",LEN)
printf("姓名 性别 学号 年龄 c语言成绩 英语成绩 高数成绩 \n")
printf("-------------------------------------------------------------------------------\n")
for(i=0i<LENi++)
{
printf("%-7s %-7s %-7s %-7d",p->name,p->sex,p->num,p->age)
printf("%-8d %-10d %-10d \n",p->score.clanguage,p->score.english,p->score.math)
p++//指针 要指向下一个
}
}
int main()
{
//原代码p=&stu[LEN]
p=(student*)&stu
input()//函数input()修改了p指针
p=(student*)&stu
output()
return 0
}
这样吧..#include "stdio.h"
int main()
{
struct
{
char name[10]//姓名
char sex[2]//性别
int age//年龄
}student[10]
//printf("%d",sizeof(wchar_t))
int i
for(i=0i<10i++)
{
printf("请输入第%d个学生的信息:名字,学号,性别和年龄:\n",i+1)
scanf("%s%d%s%d",student[i].name,&student[i].num,student[i].sex,&student[i].age)
}
printf("十个学生的信息如下:\n")
for(i=0i<10i++)
{
printf("姓名:%s\t学号:%d\t性别:%s\t年龄:%d\n",student[i].name,student[i].num,student[i].sex,student[i].age)
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)