C语言 1.一个整型数组有10个元素,编写程序删除所有值为n的元素。 要求: (1)主函数完成n的输入,数组

1.一个整型数组有10个元素,编写程序删除所有值为n的元素。要求:(1)主函数完成n的输入,数组元素输入以及删除后数组元素的输出。(2)删除功能用子函数完成。编写程序如下... 1.一个整型数组有10个元素,编写程序删除所有值为n的元素。
要求:
(1)主函数完成n的输入,数组元素输入以及删除后数组元素的输出。
(2)删除功能用子函数完成。
编写程序如下
#include <stdio.h>
#include <string.H>
int fun(char a[])
{
int i,j,k;
char n;
printf("请输入您要删除的数");
scanf("%c",&n);
for(i=0;i<k;i++)
if('a[i]'=='n')
{
for(j=i;j<k;j++)
a[j]=a[j+1];
}
}
int main()
{
char a[81];
printf("请输入要输入的数组元素:\n");
scanf("%s",a);
printf("删除后的数组顺序为%s",fun(a));
}

第一次写函数 还有点弄不懂 请问在原程序上还要在呢么改
展开
 我来答
匿名用户
2013-06-04
展开全部

#include <stdio.h>

int k =10;

void fun(int a[10])

{

int one;

printf("select one number:" );

scanf("%d",&one);

for(int i=0;i<k;i++)

{

if(a[i]==one)

{

for(int j=i;j<k;j++)

a[j]=a[j+1];

k--;

i--;

}

}

}

void main()

{

int a[10];

int i=0;

printf("input 10 number:");

while(i<10)

{

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

i++;

}

fun(a);

printf("result is:");

for(int j=0;j<k;j++)

printf("%d ",a[j]);

}

百度网友83cdc1c
推荐于2016-09-05 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:849万
展开全部
#include <stdio.h>
#include <string.H>
char *fun(char a[])
{
    int i,j,k=strlen(a);
    char n;
    printf("请输入您要删除的数");
    fflush(stdin);
    scanf("%c",&n);
    for(i=0;i<k;i++)
    if(a[i]==n)
    {
        for(j=i;j<k;j++)
        a[j]=a[j+1];
        k--;
        i--;
    }
    return a;
}
int main()
{
    char a[81];
    printf("请输入要输入的数组元素:\n");
    scanf("%s",a);
    printf("删除后的数组顺序为%s",fun(a));
}
更多追问追答
追问
是很好拉我也发现了问题,但是请问下 fflush(stdin);是什么作用 还有为什么比较是a[i]==n而不是ASCII码比较'a[i]'='n'?
追答
fflush(stdin)的作用是清理输入缓存,因为在main执行scanf后,缓存里回遗留回车符,如果不清理,就会把这个回车符读给变量n。

C语言只有字符常量才用单引号,如'A','B',其他情况都按正常的变量使用方法。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
成灵慧4d
2013-06-04 · TA获得超过189个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:194万
展开全部
#include <stdio.h>
#define SIZE 10
void del(int arr[],int *counter);
int main(void)
{
    int arr[SIZE];
    int counter=0;
    int index;
    printf("请输入%d个整数:\n",SIZE);//输入数组元素
    for(counter=0;counter<SIZE;counter++)
    {
        printf("arr[%d]:",counter+1);
        scanf("%d",&arr[counter]);
    }
    del(arr,&counter);//删除
    printf("删除后的数组:\n");
    for(index=0;index<counter;index++)//删除后的输出
    {
        printf("%d ",arr[index]);
    }
    putchar('\n');
    return 0;
}
void del(int arr[],int *counter)
{
    int i,j;
    int n;
    printf("请输入n:");
    scanf("%d",&n);
    for(i=0;i<*counter;i++)
    {
        if(arr[i]==n)
        {
            for(j=i;j<*counter-1;j++)
            {
                arr[j]=arr[j+1];
            }
            (*counter)--;
            i--;
        }
    }
}
 
 题目正好用到我刚学的数组,指针了,嘿嘿

虽然简单,但是挺有意思
不过这个我没写输入控制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuhezcb0755
2013-06-04 · TA获得超过643个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:116万
展开全部
k是多少?你没有定义,是个随机值, 循环就有问题, 可能要越界了, 应该在for语句前加一句;
k = strlen(a);

另外, 内循环的条件, 改为for (j = i; j < k - i; j++); 不然就循环多了, 数组越界.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式