2、使用 gets()函数输入 n(n<=4)个 1-9 数字的数字,每个数字中间用空格隔开,检测到除 1-9 和空格以外的字符舍去后面数据,将这 n 个数字字符按输入顺序组成一个数,要求: (1)输出这个数 (2)倒序输出这个数 (3)输出倒序的数的平方根
时间: 2024-10-17 20:03:43 浏览: 18
在C语言中,使用`gets()`函数可以读取用户输入的一行字符串,包括空格分隔的数字。为了满足题目要求,你需要编写如下的步骤:
1. **获取输入**:
```c
char input[100];
gets(input);
```
`gets()`函数读取直到遇到换行符或EOF(文件结束符)为止,注意此函数存在安全风险,推荐使用`fgets()`替代,因为它能接受指定长度的输入。
2. **处理输入**:
遍历输入字符串,检查每个字符是否是数字(1-9)或空格,如果不是,跳过该字符。可以使用`isdigit()`函数判断:
```c
for (char *ptr = input; *ptr != '\0'; ptr++) {
if (!isdigit(*ptr) && *ptr != ' ') {
while (*ptr++ != ' '); // 跳过非数字字符
}
}
```
3. **构造数字串**:
保存有效数字字符到一个新的字符串中,例如`result`。
4. **转换成整数并输出原始数**:
使用`atoi()`或手动解析字符串转换为整数,并输出。
5. **倒序输出原始数**:
对`result`字符串进行倒序操作,再转换为整数输出。
6. **计算倒序数的平方根**:
同样地,将倒序后的字符串转换为整数,计算其平方根,可以使用数学库中的`sqrt()`函数。
下面是完整的伪代码示例:
```c
// ... (处理输入部分)
int original_num = atoi(result);
printf("原始数: %d\n", original_num);
char reversed_input[strlen(result) - 1]; // 去掉末尾'\0'
strncpy(reversed_input, result, strlen(result) - 1);
reversed_input[strlen(reversed_input) - 1] = '\0'; // 取消反斜杠
int reversed_num = atoi(reversed_input);
printf("倒序数: %d\n", reversed_num);
double sqrt_root = sqrt((double)reversed_num);
printf("倒序数的平方根: %.2f\n", sqrt_root);
```
阅读全文