gpt4 book ai didi

C 编程数组交换

转载 作者:行者123 更新时间:2023-11-30 20:32:36 27 4
gpt4 key购买 nike

我已经尝试了 4 个小时,但没有成功,我真的需要完成它。这是我学校的任务。

#include <stdio.h>
#include <stdlib.h>

int main() {
char strings[5][5][5][5][5];
char *temp[5];

int b[5];
int a[5];

int x;
int i;
int z;

int a_value;
int b_value;

//get 5 strings from the input
for (i = 0; i < 5; i++) {
scanf("%s", strings[i]);
}

//Get 5 numbers from the input
for (x = 0; x < 5; x++) {
scanf("%d %d", & b[x], & a[x]);
//printf("B is %d and A is %d\n", b[x], a[x]);

a_value = a[x];
b_value = b[x];
temp[b_value] = strings[a_value];

//If the values of a and b are equal to -1 denote the operation (end it)
if (b[x] == -1 && a[x] == -1) {
break;
}
}


//Get the swapped values
for (z = 0; z<=x; z++) {
printf("%s\n", temp[z]);
}
return 0;
}

输入:

aadf
bazz
abkt
bbaa
zzzz
1 3
0 4
3 2
-1 -1

输出应该是这样的

zzzz
bbaa
bazz
abkt
aadf

我得到的是这个

zzzz
bbaa
abkt

所以一切正常,字符串会基于此进行替换,但问题是如果 ba没有给出,所以交换的值应该是正常值,我不知道该怎么做。

任务准确地说:

从标准输入读取 5 个字符串并将它们放入数组中。每个字符串的长度为 4 个字符。然后准备一个函数,交换数组的第 i 个和第 j 个元素。 i 和 j 的索引作为标准输入给出,作为由空格分隔的两个数字。可以有多个操作 - 每个交换操作都用换行符分隔。值-1和-1表示操作结束。打印由换行符分隔的字符串。

请帮助我,谢谢;)

最佳答案

为什么是 5D 数组,字符字符串[5][5][5][5][5]?你只想要 5 个字符串作为输入所以为此采用 2D 数组

char strings[5][4];//总共5个字符串,每个字符串可以存储4个字符。

接下来的事情如何扫描二维数组的数据,您需要旋转两个循环,即行和列。假设行 = 5 和列 = 4

for (i = 0; i < row; i++) {
for(j = 0; j < col; j++) {
scanf("%c", &strings[i][j]);
}
}

接下来这个temp[b_value] = strings[a_value];语句你需要修改,根据你的要求修改。我希望这有帮助。

关于C 编程数组交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com