求大佬教教萌新谢谢啦
求大佬帮忙看看这道题添加和总览已经弄出来了就最后的删除不会题目如下
创建一个结构体数组储存学生信息,要求界面有提示用户操
作的语句。
程序功能:添加,总览,删除学生信息。用一个循环实现,根
据输入的键盘值来选择功能。
学生信息包括,学生姓名,学号,分数
下面是我写的代码
#include <stdio.h>
int main()
{
int i,j,e=0;
int a = 0;
struct student
{
char name;
int num;
int score;
}student;
for (i = 0; i <= 20; i++)
{
scanf_s("%d", &a);
if(a==1)
{
printf("请输入学生姓名,学号,成绩\n");
scanf("%s%d%d", student.name, &student.num, &student.score);
e++;
}
if(a==2)
{
for(j=0;j<e;j++)
printf("%s %d %d\n",student.name,&student.num,student.score);
}
if(a==3)
}
}
return 0;
} 本帖最后由 xieglt 于 2020-11-13 21:50 编辑
#include <stdio.h>
#include<string.h>
int main()
{
int i,j,e=0;
int a = 0;
//结构体名字不要和变量名形同
struct students
{
char name;
int num;
int score;
}student;
printf("请选择功能:\n");
while(1)
{
printf("0:退出\t1:添加\t2:总览\t3:删除\n");
scanf("%d", &a);
if(a == 0)
{
break;
}
if(a == 1 && e<20)
{
printf("请输入学生姓名,学号,成绩:\n");
scanf("%s%d%d", student.name, &student.num, &student.score);
e++;
}
if(a==2)
{
for(j=0;j<e;j++)
{
//这里输出不要加取址符
printf("%s %d %d\n",student.name,student.num,student.score);
}
}
if(a==3)
{
printf("请输入要删除的学号:\n");
scanf("%d",&a);
j = 0;
for(i=0 ; i<e ; i++)
{
if(a==student.num)
{
if(i < 19)
{
memcpy(student+i,student+i+1,sizeof(students)*(e-i-1));
}
student.name = '\0';
student.num = 0;
student.score = 0;
j = 1;
e--;
break;
}
}
if(j == 0)
{
printf("找不到该学号\n");
}
}
}
return 0;
} xieglt 发表于 2020-11-13 21:49
谢谢
页:
[1]