C 如何在只有一个数字的数组中切换两个数字?
如何做到这一点: 数组1:C 如何在只有一个数字的数组中切换两个数字?,c,C,如何做到这一点: 数组1:285735 阵列2:2018 5 7 3 5 问题是,如果第一个数组中有两个偶数是连续的,则在它们的位置放置一个2018,如下所示。 我该怎么做 for(a=n-1; a>=0; a--) { if( b[a]%2==0 && b[a-1]%2==0) { for(c=a-1; c<n-1; c++) { b[c]=b[c+1]; } b
285735
阵列2:
2018 5 7 3 5
问题是,如果第一个数组中有两个偶数是连续的,则在它们的位置放置一个2018
,如下所示。
我该怎么做
for(a=n-1; a>=0; a--)
{
if( b[a]%2==0 && b[a-1]%2==0)
{
for(c=a-1; c<n-1; c++)
{
b[c]=b[c+1];
}
b[a]= 2017;
}
}
(a=n-1;a>=0;a--)的
{
如果(b[a]%2==0&&b[a-1]%2==0)
{
对于(c=a-1;c您不能真正更改数组的大小,但可以移动元素并忽略末尾的元素:
#include <stdio.h>
void shift_left(int* arr, size_t sz, size_t shift_cnt)
{
for (size_t i = 0; i != sz - shift_cnt; ++i)
{
arr[i] = arr[i + shift_cnt];
}
for (size_t i = sz - shift_cnt; i != sz; ++i)
{
arr[i] = 0;
}
}
int main()
{
int arr[] = { 2, 8, 5, 7, 3, 5 };
size_t sz = sizeof(arr) / sizeof(arr[0]);
for (size_t i = 0; i < sz - 1;)
{
if (arr[i] % 2 == 0 && arr[i + 1] % 2 == 0)
{
shift_left(arr + i, sz-- - i, 1);
arr[i] = 2018;
}
else
{
++i;
}
}
for (size_t i = 0; i != sz; ++i)
printf("%d ", arr[i]);
return 0;
}
// Output: 2018 5 7 3 5
#包括
无效左移(int*arr,size\t sz,size\t shift\u cnt)
{
对于(大小i=0;i!=sz-shift\u cnt;++i)
{
arr[i]=arr[i+shift_cnt];
}
对于(大小i=sz-shift;i!=sz;++i)
{
arr[i]=0;
}
}
int main()
{
int arr[]={2,8,5,7,3,5};
size_t sz=sizeof(arr)/sizeof(arr[0]);
对于(尺寸i=0;i
沿着源阵列前进,寻找偶数对
// return size used
size_t AJ_squish(int *dest, size_t dest_size, const int *src, size_t src_size) {
size_t dest_len = 0;
while (src_size > 1 && dest_len < dest_size) {
// 2 evens in a row?
if (src[0] % 2 == 0 && src[1] % 2 == 0) {
dest[dest_len++] = 2018;
src_size -= 2;
} else {
dest[dest_len++] = *src++;
src_size--;
}
}
if (src_size > 0 && dest_len < dest_size) {
dest[dest_len++] = *src;
}
return dest_len;
}
//使用的返回大小
大小(int*dest,size\t dest\u size,const int*src,size\t src\u size){
大小目的地长度=0;
while(src_size>1&&dest_len0&&dest\u len
当a
达到0
(即a==0
)那么b[a-1]会发生什么
?以及如何做什么?不清楚你在问什么,你想做什么。对于某些指定的输入,输出应该是什么?你创建的输出是什么?也请阅读相关内容。可能不起作用,我不知道如何做。我想从任何数组中切换2个数字,其中只有1个在这里,2个和8个在第一个阵列是偶数且连续的,因此我们在其中设置了一个2018place@AndreiJarca欢迎!还要注意,这将用一个2018替换三个连续的偶数,因为2018本身是偶数,在替换前两个之后,您仍然有2018,另一个偶数彼此相邻。希望这是期望的行为。如果不是t、 修复它应该不难。如果需要的话,我可以帮忙