|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求大佬帮忙看看这道题添加和总览已经弄出来了就最后的删除不会
题目如下
创建一个结构体数组储存学生信息,要求界面有提示用户操
作的语句。
程序功能:添加,总览,删除学生信息。用一个循环实现,根
据输入的键盘值来选择功能。
学生信息包括,学生姓名,学号,分数
下面是我写的代码
#include <stdio.h>
int main()
{
int i,j,e=0;
int a = 0;
struct student
{
char name[20];
int num;
int score;
}student[20];
for (i = 0; i <= 20; i++)
{
scanf_s("%d", &a);
if(a==1)
{
printf("请输入学生姓名,学号,成绩\n");
scanf("%s%d%d", student[e].name, &student[e].num, &student[e].score);
e++;
}
if(a==2)
{
for(j=0;j<e;j++)
printf("%s %d %d\n",student[j].name,&student[j].num,student[j].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[20];
- int num;
- int score;
-
- }student[20];
-
- 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[e].name, &student[e].num, &student[e].score);
- e++;
-
- }
- if(a==2)
- {
- for(j=0;j<e;j++)
- {
- //这里输出不要加取址符
- printf("%s %d %d\n",student[j].name,student[j].num,student[j].score);
- }
- }
- if(a==3)
- {
- printf("请输入要删除的学号:\n");
- scanf("%d",&a);
- j = 0;
- for(i=0 ; i<e ; i++)
- {
- if(a==student[i].num)
- {
- if(i < 19)
- {
- memcpy(student+i,student+i+1,sizeof(students)*(e-i-1));
- }
- student[e-1].name[0] = '\0';
- student[e-1].num = 0;
- student[e-1].score = 0;
-
- j = 1;
- e--;
- break;
- }
- }
- if(j == 0)
- {
- printf("找不到该学号\n");
- }
- }
-
- }
- return 0;
- }
复制代码
|
|