输入字符串,包含:字母、数字、标点符号,以及空格字符,并将其逆序输出。 例如,当输入字符串为“i am a student.”,输出为“.tneduts a ma i”,假设字符数组最大长度为30。 输入提示信息:"please enter string1:\n" 输入格式:gets() 输出格式:"result is:\n%s\n"
时间: 2023-05-31 22:19:54 浏览: 398
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
### 回答1:
这是一道关于字符串输入输出的题目,要求输入包含字母,数字,标点符号以及空格的字符串,并将其按相反顺序输出。例如,当输入字符串为“i am a student.”时,输出应为“.tneduts a ma i”。同时,要求用一个长度为30的字符数组来存储输入和输出的字符串,输入格式为“please enter string1:\n”,使用gets()函数进行输入,输出格式为“result is:\n%s\n”。
### 回答2:
这道题要求我们输入一个字符串,然后将其逆序输出。字符串中可能包含字母、数字、标点符号和空格字符,长度不超过30个字符。我们可以通过使用字符串常用的函数来解决这个问题。
首先,我们使用`gets()`函数来获取用户输入的字符串,并将其存储在字符数组`str`中。注意,`gets()`函数不安全,因为它无法保证输入的字符串长度不超过数组大小,会导致数组越界等问题,所以在实际编程中我们应该使用更安全的函数(如`fgets()`等)来获取用户输入。
接着,我们使用`strlen()`函数来计算字符串的长度,然后使用一个循环遍历字符串中的每个字符,将其逆序存储在另一个字符数组`rev_str`中。最后,我们输出`rev_str`数组即可。
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 30
int main()
{
char str[MAX_LEN+1], rev_str[MAX_LEN+1];
int len, i;
printf("please enter string1:\n");
gets(str);
len = strlen(str);
for (i = 0; i < len; i++) {
rev_str[i] = str[len-i-1];
}
rev_str[len] = '\0';
printf("result is:\n%s\n", rev_str);
return 0;
}
```
注意,在`rev_str`数组中也要加上一个空字符,否则字符串输出时会有问题。
以上是本题的解答。该实现方法简单直接,但在实际使用中存在一些安全问题,如输入字符数组长度超过最大长度等会导致程序异常中断,需要进一步进行改进。
### 回答3:
题目要求我们输入一个字符串,然后将其逆序输出。这个字符串包含字母、数字、标点符号以及空格字符,且最长长度为30。
我们可以使用一个字符数组来存储这个字符串,并使用gets()函数来读取输入的字符串。接下来,我们可以使用一个循环来遍历这个字符数组,并将它们逆序输出。具体操作如下:
1. 首先,我们需要定义一个字符数组来存储输入的字符串。由于我们知道字符串最大长度为30(包括末尾的'\0'),因此可以定义一个大小为31的字符数组。
char strInput[31];
2. 接下来,我们使用gets()函数来读取输入的字符串。
printf("please enter string1:\n");
gets(strInput);
3. 然后,我们需要使用一个循环遍历这个字符数组,对于每个字符,我们都将它插入到一个新的字符数组的开头,从而实现逆序输出。这个新的字符数组的大小应该与输入的字符数组相同。
char strOutput[31];
int len = strlen(strInput);
for (int i = 0; i < len; i++) {
strOutput[len - i - 1] = strInput[i];
}
strOutput[len] = '\0';
4. 最后,我们使用printf()函数来输出逆序后的字符串。
printf("result is:\n%s\n", strOutput);
以上就是将输入的字符串逆序输出的完整代码。需要注意的是,在第三步中,我们可以使用strlen()函数来获取输入字符串的长度,并将其存储在一个变量中,这样可以避免在每一次循环中都调用一次strlen()函数,提高了程序的效率。
阅读全文