请教一个C语言程序分析题?

来源:百度知道 编辑:UC知道 时间:2024/05/09 19:51:59
有一个C语言源程序如下:该程序的功能是键盘输入10个整数给一维数组a[],然后再从键盘输入一个数与10个中其中一个数相同的数,要求当输入那个数时,10个中与之相同的数将全部删除掉!例如:a[10]={1,2,2,2,2,3,4,5,6,7},当输入x=2,程序运行结果是:1,3,4,5,6,7
请完善下列程序使之运行正确!

main()
{
int a[10];
int i,j, x;
scanf("%d",&x);
for(i=0;i<10;i++)
{
if(x==a[i])
{
for(j=i;j<9;j++)
{
a[j]=a[j+1];
}
}
}
for(i=0;i<9;i++)/*提示,此得为完善对象*/
printf("%5d",a[i]);
}
for(i=0;i<9;i++)
printf("%5d",a[i]);
这个题目归根结底就是输出时怎么处理,反正是10个数
输入的数是否相同是由用户决定
如原数为:1 2 2 2 3 4 5 6 7 8 X=2则输出为1 3 4 5 6 7 8
原数为:1 2 2 3 4 5 6 7 8 9 X=2输出为1 3 4 5 6 7 8 9
原数为:1 2 2 2 2 2 2 2 2 2 X=2输出为1
当然我并不是针对2来的,2也可变为是任意一个数,由用户输入时决定
我们还没学指针,链表等!很有挑战性哟

#include "stdio.h"
main()
{
int a[10],b[10]={0};
int i,j=0, x;
scanf("%d",&x);
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
if(x!=a[i])
{
b[j++]=a[i];
}
}
for(i=0;i<j;i++)
printf("%5d",b[i]);
}
不知道这么做 你满意吗?

#include <stdio.h>
main()
{
int a[10] = {1,2,3,3,4,5,6,7,8,8};
int i,j, x, k = 10;
scanf("%d",&x);
for(i=0;i<k;i++)
{
if(x==a[i])
{
for(j=i;j<k-1;j++)
{
a[j]=a[j+1];
}
k--;
i--;
}
}
for(i=0;i<k;i++)/*提示,此得为完善对象*/
printf("%5d",a[i]);
}

你只说打印就不用平移.
最后的7可以通过建字符数组再用函数copy过去就行了
若想达到那个效果,可以用链表等其他数据结构去组织.

main()
{
int a[10];//这里并没有初值,你可以在下面加一条输入语句的/
int i