题目描述
在含有4个元素的结构数组中,插入一条新记录。一个运行实例如下(红色字体为输入数据,黑色字体为输出数据):
请输入插入记录的位置:
3
请按如下提示输入相关信息.
输入学号:
2105030199
输入姓名:
wangxiaowang
输入3个成绩:
score[0]:
100
score[1]:
99
score[2]:
98
已经在位置3成功插入新记录!
********************************** STUDENT ****************************************
位置号 学号 姓名 成绩1 成绩2 成绩3 总分 平均分 名次
-----------------------------------------------------------------------------------
0 2105030155 zhaoxiaozhao 100.00 100.00 100.00 300.00 100.00 0
1 2105030166 qianxiaoqian 99.00 99.00 99.00 297.00 99.00 0
2 2105030177 sunxiaosun 98.00 98.00 98.00 294.00 98.00 0
3 2105030199 wangxiaowang 100.00 99.00 98.00 297.00 99.00 0
4 2105030188 lixiaoli 98.00 98.00 98.00 294.00 98.00 0
***********************************************************************************
下面是本题的不完整程序,请补充begin和end之间的代码,并将这部分代码提交即可。
#include<stdio.h> //printf()、scanf()等函数 #include<string.h> //strlen()、strcpy()等函数 #include<stdlib.h> //atoi()函数 //定义常数 #define N 3 //定义结构体 typedef struct student { char xueHao[11]; char xingMing[15]; double chengJi[N]; double zongFen; double pingJunFen; int mingCi; }STUDENT; //函数声明 void print(STUDENT *stud,int n); //显示记录 int insert(STUDENT *stud,int n); //插入记录 /******主函数开始*******/ int main(void) { STUDENT student[20]={{"2105030155","zhaoxiaozhao",100,100,100,300,100,0}, {"2105030166","qianxiaoqian",99,99,99,297,99,0}, {"2105030177","sunxiaosun",98,98,98,294,98,0}, {"2105030188","lixiaoli",98,98,98,294,98,0}};/*定义结构数组,并初始化0、1、2、3号位置的数组元素*/ insert(student,4); /*在有4个元素的数组中插入1条新记录*/ print(student,5); /*逐行显示插入操作后的所有数组元素,共5行*/ return 0; } /*在指定位置插入记录*/ int insert(STUDENT *stud,int n) { int i=0,j; float s; int position; printf("请输入插入记录的位置:\n"); scanf("%d",&position); /*输入插入记录的位置*/ while(position<0 || position>n) { printf("输入位置有误,请重新输入插入记录的位置:\n"); /*显示提示信息*/ scanf("%d",&position); /*输入要删除记录的姓名*/ } //将插入位置开始的所有记录向后移动 /******************** begin ********************/
/******************** end ********************/ //录入记录并插入 i=position; printf("请按如下提示输入相关信息.\n"); printf("输入学号:\n"); scanf("%s",stud[i].xueHao); /*输入学号*/ printf("输入姓名:\n"); scanf("%s",stud[i].xingMing); /*输入姓名*/ printf("输入%d个成绩:\n",N); /*提示开始输入成绩*/ s=0; /*计算每个学生的总分,初值为*/ for(j=0;j<N;j++) /*N门课程循环N次*/ { do{ printf("score[%d]:\n",j); /*提示输入第几门课程*/ scanf("%lf",&stud[i].chengJi[j]); /*输入成绩*/ if(stud[i].chengJi[j]>100||stud[i].chengJi[j]<0)/*确保成绩在~100之间*/ printf("\n非法数据,请重新输入!\n"); /*出错提示信息*/ }while(stud[i].chengJi[j]>100||stud[i].chengJi[j]<0); s=s+stud[i].chengJi[j]; /*累加各门课程成绩*/ } stud[i].zongFen=s; /*将总分保存*/ stud[i].pingJunFen=s/N; /*求出平均值*/ stud[i].mingCi=0; /*未排序前此值为*/ printf("已经在位置%d成功插入新记录!\n",position); return n+1; } /*显示模块*/ void print(STUDENT *stud,int n) { int i=0; /* 统计记录条数*/ if(n==0) { printf("\n很遗憾,空表中没有任何记录可供显示!\n"); } else { printf("********************************** STUDENT ****************************************\n"); printf(" 位置号 学号 姓名 成绩1 成绩2 成绩3 总分 平均分 名次\n"); printf("-----------------------------------------------------------------------------------\n"); while(i<n) { printf(" %-4d %-11s%-12s%7.2f%7.2f%7.2f %9.2f %6.2f %3d \n", i, stud[i].xueHao,stud[i].xingMing,stud[i].chengJi[0],stud[i].chengJi[1], stud[i].chengJi[2],stud[i].zongFen,stud[i].pingJunFen,stud[i].mingCi); i++; } printf("***********************************************************************************\n"); } }
输入
指定插入位置position,合法的插入位置为0-4。
输出
逐行输出插入操作后的所有数组元素。
样例输入 Copy
3 2105030199 wangxiaowang 100 99 98
样例输出 Copy
请输入插入记录的位置: 请按如下提示输入相关信息. 输入学号: 输入姓名: 输入3个成绩: score[0]: score[1]: score[2]: 已经在位置3成功插入新记录! ********************************** STUDENT **************************************** 位置号 学号 姓名 成绩1 成绩2 成绩3 总分 平均分 名次 ----------------------------------------------------------------------------------- 0 2105030155 zhaoxiaozhao 100.00 100.00 100.00 300.00 100.00 0 1 2105030166 qianxiaoqian 99.00 99.00 99.00 297.00 99.00 0 2 2105030177 sunxiaosun 98.00 98.00 98.00 294.00 98.00 0 3 2105030199 wangxiaowang 100.00 99.00 98.00 297.00 99.00 0 4 2105030188 lixiaoli 98.00 98.00 98.00 294.00 98.00 0 ***********************************************************************************
for(j=n-1;j>=position;j--)
{
stud[j+1]=stud[j];
}
n++;