注册 登录
编程论坛 新人交流区

一个关于数组插入的问题~~(程序写到结尾了,实在是想不出来了```)

Angel_SK 发布于 2007-11-17 02:20, 1412 次点击

这体总共3个要点:
1.成绩录入,如果用户按任意键就继续要求输入成绩,按n退出。

2.输出刚才录入的数组.

3.插入函数,完成可以向一个数组插入的功能.

已经快完成了,但是最后插入的过程有点搞不清楚状况```

请高手指教!!

以下是我写的:

#include<stdio.h>
int a[100],i,j,k;
void shuchu();
void charu();
void main()
{
char c;

for(i=0;i<100;i++)
{
printf("请输入一个整数:");

scanf("%d",&a[i]);

fflush(stdin);

printf("是否继续输入?按任意键继续;按n退出!\n");

c=getchar();

if(c=='n')
break;
}
shuchu();
charu();

}
//以上是1.成绩录入,如果用户按任意键就继续要求输入成绩,按n退出。
void shuchu()
{

printf("*********************************************");
printf("\n你输入的内容如下:\n");
for(j=0;j<=i;j++)
{
printf("%d\t",a[j]);
}
printf("\n");
printf("*********************************************\n");

}
//以上是2.输出刚才录入的数组.
//下面是插入:
void charu()
{
int x,t;
printf("插入:\n");
printf("*********************************************\n");
printf("插入前:\n");
for(j=0;j<=i;j++)
{
printf("%d\t",a[j]);
}
printf("\n");
printf("*********************************************\n");
printf("请输入要插入的数:");
scanf("%d",&x);

do
{
printf("\n请输入要插入的位置1-%d:",i+1);
scanf("%d",&t);
if(t>i+1)
printf("输入不合法,请按要求输入!");
else
break;
}
while(1);
printf("\n插入后:\n");
printf("*********************************************\n");
//程序一直运行到这里都没问题```但是下面我就写不出来了```
}


[此贴子已经被作者于2007-11-17 2:22:08编辑过]

7 回复
#2
scjin2007-11-17 09:12
虽然我不知道怎么做,还是顶下
#3
pingguoling2007-11-17 09:32
看的迷迷糊糊的
兄弟帮你顶一下拉
#4
Angel_SK2007-11-17 09:59

哪位高手指教一下吖````

晚上就要交了``

#5
Angel_SK2007-11-21 11:47

/*
1. 编写一个成绩录入函数,如果用户按任意键就继续要求输入成绩,按退出。
2. 编写一个数组输出函数,用于输出一个数组
3. 编写一个插入函数,完成可以向一个数组插入的功能
4. 编写主函数通过调用上面定义的函数完成如下图所示的功能:
*/
#include<stdio.h>
int a[100],i,j,k;
void shuchu();
void charu();
void main()
{
char c;

for(i=0;i<100;i++)
{
printf("请输入一个整数:");
scanf("%d",&a[i]);

fflush(stdin);

printf("是否继续输入?按任意键继续;按n退出!\n");

c=getchar();

if(c=='n')
break;
}
shuchu();
charu();

}
//以上是1.成绩录入,如果用户按任意键就继续要求输入成绩,按n退出。
void shuchu()
{

printf("*********************************************");
printf("\n你输入的内容如下:\n");
for(j=0;j<=i;j++)
{
printf("%d\t",a[j]);
}
printf("\n");
printf("*********************************************\n");

}
//以上是2.输出刚才录入的数组.
//下面是插入:
void charu()
{
int x,t;
printf("插入:\n");
printf("*********************************************\n");
printf("插入前:\n");
for(j=0;j<=i;j++)
{
printf("%d\t",a[j]);
}
printf("\n");
printf("*********************************************\n");
printf("请输入要插入的数:");
scanf("%d",&x);

do
{
printf("\n请输入要插入的位置1-%d:",i+1);
scanf("%d",&t);
if(t>i+1)
printf("输入不合法,请按要求输入!");
else
break;
}
while(1);
printf("\n插入后:\n");
printf("*********************************************\n");

//程序一直运行到这里都没问题```但是下面我就写不出来了```

for(k=i+1;k>=t;k--)
{
a[k]=a[k-1];
a[t-1]=x;
}
for(i=0;i<t+1;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
printf("*********************************************\n");
}

#6
独行之2007-11-21 12:06
不懂,是不是把数组元素往后推一位啊
#7
yzzfei2007-11-21 17:46

#include<stdio.h>
const int l=100;
int a[l],i,j,k;
void shuchu();
void charu();
void main()
{
char c;
for(i=0;i<l;i++)
{
printf("请输入一个整数、输入n结束:");
scanf("%d",&a[i]);
c=getchar();
fflush(stdin);
if(i==l-1)
printf("已经输入%d个数,结束输入!",l);
if(c=='n')
break;
}
shuchu();
charu();
}
//以上是1.成绩录入,如果用户按任意键就继续要求输入成绩,按n退出。
void shuchu()
{

printf("\n*********************************************");
printf("\n你输入的内容如下:\n");
for(j=0;j<i;j++)
{
printf("%d\t",a[j]);
}
printf("\n");

}
//以上是2.输出刚才录入的数组.
//下面是插入:
void charu()
{
char c;
int x,t;
for(int n=0;n<=l-i;n++)
{
printf("你还可以插入%d个数,是否插入:y插入,n退出",l-i);
scanf("%d",&x);
c=getchar();
fflush(stdin);
if(c=='n')
break;
else
if(c=='y')
{
i++;
printf("请输入要插入的成绩:");
scanf("%d",&x);
do
{
printf("\n请输入要插入的位置1-%d:",i);
scanf("%d",&t);
if(t>l)
printf("输入不合法,请按要求输入!");
else
break;
} while(1);
}

}

printf("\n插入后:\n");
printf("*********************************************\n");

//程序一直运行到这里都没问题```但是下面我就写不出来了```

for(k=i-1;k>=t;k--)
{
a[k]=a[k-1];
}
a[t-1]=x;
for(int m=0;m<i;m++)
{
printf("%d\t",a[m]);
}
printf("\n");
printf("*********************************************\n");
}

#8
taiwai1232007-11-21 19:33
看的迷迷糊糊的
1