编写程序,在主函数中从键盘输入的若千个成绩存放在一维数组
中,再输入一个新成绩及它的插入位置,并调用子函数把新成绩插入
到一维数组中指定位置。
未使用模块化设计时的程序:,
#include<stdio.h>
void main()
int i,j,n,score[20],new-sc:
printf("请输入人数:\n");
scanf ("%d",&n):
printf("请输入成绩:\n");
for(i=0;i<n;i++) scanf("%d", &score[i]);
printf("请输入插入成绩:");
scanf("%d", &new-sc);
printf("请输入插入位置:”);
scanf("%d",&j);
if(j>n || j<l)printf("位置出错!\n");
else
{ for(i=n:i>j-1;i--) score[i]=score[i-1]:
score[j-1]=new-sc:
n=n+1;
}
for(i=0;i<n;i++)
printf("%3d",score[i]);
}
把数组长度使用int指针传入,然后再传入其他参数即可。
修改如下:
#include<stdio.h>
// int scores[] 成绩数组
// int *n 存储了数组长度的指针,因为需要改变数组长度,所以这里使用指针
// int newScore 要插入数组的新成绩
// int pos 要插入的位置,从1开始
void insertScore(int scores[],int *n,int newScore,int pos){
if(pos>*n || pos<1)
printf("位置出错!\n");
else {
for(int i=*n;i>pos-1; i--)
scores[i]=scores[i-1];
scores[pos-1]=newScore;
*n=*n+1;
}
}
int main() {
int i,j,n,score[20],new_sc;
printf("请输入人数:\n");
scanf ("%d",&n);
printf("请输入成绩:\n");
for(i=0; i<n; i++)
scanf("%d", &score[i]);
printf("请输入插入成绩:");
scanf("%d", &new_sc);
printf("请输入插入位置:");
scanf("%d",&j);
insertScore(score,&n,new_sc,j);
for(i=0; i<n; i++)
printf("%3d",score[i]);
}