编程论坛
注册
登录
编程论坛
→
C语言论坛
求求各位大佬了,这个怎么做
liang12352
发布于 2022-05-20 09:30, 1154 次点击
删除整数:假设整数数组a[10]中,存在与整数x相同的数据,其中数组a和x均为用户输入,则完成以下功能:
(1)将数组a中与x相同的所有数据,除第一个之外,全部删除;如果只有一个(或没有)相同的数据,则保持数组a不变。
(2)输出删除后的数组a。
2 回复
#2
rjsp
2022-05-20 13:05
我好像记得这道题,于是我找了找,找到
https://bbs.bccn.net/thread-508900-1-1.html
你跟 k3552 是校友吗?为什么他要C++代码,你要C代码?
程序代码:
#include
<stdio.h>
int
main(
void
)
{
int
a[
10
], x;
const
size_t length =
sizeof
(a)/
sizeof
(*a);
for
( size_t i=
0
; i!=length; ++i )
scanf(
"
%d
"
, a+i );
scanf(
"
%d
"
, &x );
size_t new_length =
0
;
for
( size_t i=
0
,cnt=
0
; i!=length; ++i )
{
cnt += a[i]==x;
if
( a[i]!=x || cnt==
1
)
a[new_length++] = a[i];
}
for
( size_t i=
0
; i!=new_length; ++i )
printf(
"
%d%c
"
, a[i],
"
\n
"
[i+
1
==new_length] );
}
#3
不会游泳的虾
2022-05-20 14:09
供参考:
程序代码:
#include
<stdio.h>
#define
N 10
int
main()
{
int
i, j, x, a[N],flg;
printf(
"
Input %d numbers:
"
, N);
for
(i =
0
; i < N; i++)
scanf(
"
%d
"
, &a[i]);
printf(
"
x=
"
);
scanf(
"
%d
"
, &x);
for
(i = j =
0
, flg =
0
; i < N; i++)
if
(a[i] - x)
a[j++] = a[i];
else
{
if
(flg ==
0
)
a[j++] = a[i];
flg++;
}
printf(
"
删除%d后的数组:\n
"
, x);
for
(i =
0
; i < j; i++)
printf(
"
%4d
"
, a[i]);
printf(
"
\n
"
);
return
0
;
}
1