//程序有问题
/*编写一个函数print,输出若干位学生的数据记录,有5位学生,每一位学生的数据记录包括学号(num),姓名(name),三门课的成绩(g[3]),
要求用主函数输入这些记录,用print函数输出这些记录。请编程实现。*/
#include<stdio.h>
void print(int num,char name,float *t)
{
int i;
printf("%d\t%s\t",num,name);
for(i=0;i<3;i++)
printf("%f\t",*(t+i));
}
int main()
{
int i,j;
float b[3],*p;
p=b;
struct abc
{
int num;
char name;
float g[3];
}a;
for(i=0;i<5;i++)
{
printf("学号:\t姓名:\t语文:\t数学:\t英语:\n");
scanf("%d%s",&a.num,&a.name);
for(j=0;j<3;j++)
{
scanf("%f",&a.g[j]);
b[j]=a.g[j];
}
print(a.num,a.name,p);
}
return 0;
}
#include<stdio.h>
void print(int num,char *name,float *t)//字符串要传地址
{
int i;
printf("%d\t%s\t",num,name);
for(i=0;i<3;i++)
printf("%f\t",*(t+i));
printf("\n");
}
int main()
{
int i,j;
float b[3],*p;
p=b;
struct abc
{
int num;
char name[10];//字符串用数组
float g[3];
}a;
for(i=0;i<5;i++)
{
printf("学号:\t姓名:\t语文:\t数学:\t英语:\n");
scanf("%d%s",&a.num,a.name);//字符串不需要加&
for(j=0;j<3;j++)
{
scanf("%f",&a.g[j]);
b[j]=a.g[j];
}
print(a.num,a.name,p);
}
return 0;
}
abc结构体中,char name只能存储字符,应该是char name[20]或者char *name(动态分配内存),同时print函数的char name也要改为char *name
主函数给你修改了一下
int main()
{
int i,j;
float b[3],*p;
p=b;
struct abc
{
int num;
char name[N];
float g[3];
}a;
for(i=0;i<5;i++)
{
printf("学号:\t姓名:\t语文:\t数学:\t英语:\n");
scanf("%d %s",&a.num,a.name);
for(j=0;j<3;j++)
{
scanf("%f",&a.g[j]);
b[j]=a.g[j];
}
printf("%d %c %f",a.num,a.name,p);
}
return 0;
}
修改见注释,供参考:
//要求用主函数输入这些记录,用print函数输出这些记录。请编程实现。
#include<stdio.h>
struct abc
{
int num;
char name[16]; //char name;
float g[3];
}a[5]; //a;
void print(int n, struct abc* t); //修改
int main()
{
int i, j;
//float b[3], * p;
//p = b;
printf("请输入 学号:姓名:语文:数学:英语:\n");
for (i = 0; i < 5; i++)
{
scanf("%d%s", &a[i].num, a[i].name); //scanf("%d%s", &a[i].num, &a[i].name);
for (j = 0; j < 3; j++)
{
scanf("%f", &a[i].g[j]);
//b[j] = a[i].g[j];
}
//print(a[i].num, a[i].name, p);
}
print(5, a); //修改
return 0;
}
void print(int n, struct abc* t) //修改
{
int i, j;
printf("学号:\t姓名:\t语文:\t数学:\t英语:\n");
//printf("%d\t%s\t", num, name);
for (i = 0; i < n; i++){
printf("%d\t%s\t",(t+i)->num,(t+i)->name);
for (j = 0; j < 3; j++) {
printf("%f\t", (t + i)->g[j]);
}
printf("\n");
}
}