用c语言编写使用 gets()函数输入 n(n<=4)个 1-9 数字的数字,每个数字中间用空格隔开,检测到除 1-9 和空格以外的字符舍去后面数据,将这 n 个数字字符按输入顺序组成一个数,要求: (1)输出这个数 (2)倒序输出这个数 (3)输出倒序的数的平方根
时间: 2024-10-21 22:11:58 浏览: 14
在C语言中,你可以通过循环结构结合`gets()`函数来实现这个功能。首先,我们需要获取用户输入的字符串,然后处理字符串并分割成整数数组。注意,`gets()`已知存在安全风险,在实际生产环境中应避免使用,建议使用更安全的`fgets()`函数。
以下是实现步骤:
1. 使用`fgets()`读取用户输入,存储在动态内存中。
2. 遍历输入的字符串,检查每个字符是否在1-9的范围内以及空格。如果不是,跳过该字符。
3. 分割出整数,并转换为整型数组。
4. 对数组进行排序,得到原始数。
5. 另一个循环反转数组元素,得到倒序数。
6. 计算倒序数的平方根并输出结果。
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
char input[100];
fgets(input, sizeof(input), stdin);
// 处理输入字符串
char* token = strtok(input, " ");
int num[4], index = 0;
while (token != NULL && index < 4) {
if (isdigit(token[0]) && token[0] >= '1' && token[0] <= '9') {
num[index++] = atoi(token);
}
token = strtok(NULL, " ");
}
// 排序并输出原始数
for (int i = 0; i < index - 1; ++i) {
for (int j = i + 1; j < index; ++j) {
if (num[i] > num[j]) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
printf("Original number: %d\n", num[index - 1]);
// 输出倒序数
for (int i = index - 1; i >= 0; --i) {
printf("%d ", num[i]);
}
printf("\n");
// 计算并输出倒序数的平方根
double reverse_sqrt = sqrt(num[0]); // 注意:这里假设只有一位数的情况,如果有多个,需要计算平均值或其他方法
printf("Square root of reversed number: %.2f\n", reverse_sqrt);
return 0;
}
```
阅读全文