现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。 编写一个函数input,用来输入一个学生的数据记录。 编写一个函数print,打印一个学生的数据记录。 在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100
#include<stdio.h>
void input(int N,int num[N],int score[N][3],char name[20],int i,int j)
{
for(i=0;i<N;i++)
{
printf("Please input students num:");
scanf("%d",&num[i]);
printf("Please input students name:");
gets(&name[i]);
for(j=0;j<3;j++)
{
printf("Please input scores:");
scanf("%d",&score[i][j]);
}
}
}
void print(int N,int num[N],int score[N][3],char name[20],int i,int j)
{
for(i=0;i<N;i++)
{
printf("学号 = %d\n",num[i]);
puts(name[i]);
getchar();
for(j=0;j<3;j++)
{
printf("分数 = %d\n",score[i][j]);
}
}
}
int main()
{
int N = 0;
int i,j,num[N],score[N][3];
char name[20];
scanf("%d",&N);
input(N,num,score,name,i,j);
print(N,num,score,name,i,j);
return 0;
}
先输入n,再用n设置数组长度
scanf("%d", &N);
int num[N], score[N][3];
name要定义为二维数组
char name[N][20]
你题目的解答代码如下:
#include <stdio.h>
void input(int N, int num[N], int score[N][3], char name[N][20])
{
int i, j;
for (i = 0; i < N; i++)
{
printf("Please input students num:");
scanf("%d", &num[i]);
printf("Please input students name:");
getchar();
gets(name[i]);
for (j = 0; j < 3; j++)
{
printf("Please input scores:");
scanf("%d", &score[i][j]);
}
}
}
void print(int N, int num[N], int score[N][3], char name[N][20])
{
int i, j;
for (i = 0; i < N; i++)
{
printf("学号 = %d\n", num[i]);
puts(name[i]);
for (j = 0; j < 3; j++)
{
printf("分数 = %d\n", score[i][j]);
}
}
}
int main()
{
int N = 0;
scanf("%d", &N);
char name[N][20];
int num[N], score[N][3];
input(N, num, score, name);
print(N, num, score, name);
return 0;
}
如有帮助,望采纳!谢谢!
name应该定义为二维数组
char name[N][20]才行
不然你只有一个名字