从键盘输入一字符串,放在字符数组a中,将字符数组a中下标值为偶数的元素按从小到大排序。
时间: 2024-03-03 08:50:18 浏览: 194
好的,可以使用以下C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[100];
int i, j, n;
printf("请输入字符串:");
scanf("%s", a);
n = strlen(a);
for (i = 0; i < n; i += 2) {
for (j = i + 2; j < n; j += 2) {
if (a[i] > a[j]) {
char temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
printf("下标值为偶数的元素按从小到大排序后的字符串为:\n%s\n", a);
return 0;
}
```
该程序首先从键盘读入一个字符串,并计算字符串的长度。然后,它在字符数组a中对下标值为偶数的元素进行排序,采用的是简单的选择排序算法。最后,程序输出排序后的字符串。
相关问题
有一个数据文件test2-2.in,其中存有一行字符串,将该字符串读到字符数组a中,然后将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。要求输出重新排序的整个字符以及下标为偶数的元素
好的,我来解答你的问题。
首先,读取数据文件中的字符串并存入字符数组a中可以使用以下代码:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1000;
int main() {
char a[MAXN];
ifstream fin("test2-2.in");
fin >> a;
int len = strlen(a);
fin.close();
// 排序下标为偶数的元素
sort(a, a+len, [](char x, char y) {
return (x % 2 == 0 && y % 2 == 0 && x < y);
});
// 输出排序后的结果
for (int i = 0; i < len; i++) {
cout << a[i];
}
cout << endl;
// 输出下标为偶数的元素
for (int i = 0; i < len; i += 2) {
cout << a[i];
}
cout << endl;
return 0;
}
```
代码中使用了`ifstream`读取数据文件中的字符串,并通过`strlen`获取字符串长度。接着,使用`sort`排序下标为偶数的元素,排序规则是:如果两个元素都是偶数,则按照大小排序;如果其中一个元素是奇数,则不参与排序。最后,分别输出排序后的整个字符和下标为偶数的元素。
注意,这里假设字符串中字符数不超过1000个,你可以根据实际情况适当调整`MAXN`的大小。
编写c语言程序,输入20个数并存入数组,将下标值为偶数的元素按降序排列,输出该数组
以下是实现上述需求的C语言程序:
```c
#include <stdio.h>
// 交换两个元素
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[20];
int i, j;
// 输入20个数并存入数组
printf("请输入20个数:\n");
for (i = 0; i < 20; i++) {
scanf("%d", &arr[i]);
}
// 将下标值为偶数的元素按降序排列
for (i = 0; i < 20; i += 2) {
for (j = i + 2; j < 20; j += 2) {
if (arr[i] < arr[j]) {
swap(&arr[i], &arr[j]);
}
}
}
// 输出该数组
printf("排序后的数组为:\n");
for (i = 0; i < 20; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
程序运行时,会依次提示输入20个数,并输出排序后的数组。其中,下标值为偶数的元素按降序排列。
阅读全文