PTA 练习7-11 字符串逆序 (15分)

本文介绍了一种使用C语言实现字符串逆序输出的方法。通过逐个读取字符并记录长度,再从后向前输出,实现对输入字符串的逆序打印。适用于初学者理解字符串操作和指针概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

在一行中输出逆序后的字符串。

输入样例1:

Hello World!

输出样例1:

!dlroW olleH

答案代码块

//本来想用gets输入strlen判断长度奈何gets可以超出数组长度限制只能用getchar一个个输出
#include <stdio.h>

int main(){
    char s[80];
    int cnt=0,i;
	for(i=0;s[i-1]!='\n';i++){  //判断前一个是不是回车,这里用while也可以
		s[i]=getchar();
		cnt=i;  //记数
	}
    for(i=cnt-1;i>=0;i--){  //不输出最后的回车
        printf("%c",s[i]);
    }
    return 0;
}
### PTA平台字符串逆序算法实现 在PTA平台上,字符串逆序是一个常见的编程练习题。以下是几种不同的方法来实现字符串逆序功能。 #### 方法一:基于`while`循环的双指针交换法 此方法通过遍历字符串并记录其长度,随后利用两个索引变量别指向首尾字符进行逐次交换[^1]。 ```c void reverseString(char* p) { char temp; int i = 0, j; // 计算字符串长度 while (p[i] != '\0') i++; j = i - 1; // 双指针交换字符 for (i = 0; i < j; i++, j--) { temp = p[i]; p[i] = p[j]; p[j] = temp; } } ``` #### 方法二:基于`for`循环的单向扫描法 该方法同样计算字符串长度后,采用单一循环完成字符互换操作[^2]。对于奇偶长度的情况进行了区处理,但实际上可以通过简化逻辑统一处理。 ```c void reverseString(char *p) { int len = 0, i; char temp; // 获取字符串长度 for (; p[len] != '\0'; len++); // 字符串反转 for (i = 0; i < len / 2; i++) { temp = p[i]; p[i] = p[len - 1 - i]; p[len - 1 - i] = temp; } } ``` #### 方法三:直接打印逆序结果而不修改原字符串 如果不需要改变原始输入数据,则可以直接从末端向前读取字符逐一输出[^3]。 ```c #include <stdio.h> #include <string.h> int main() { char str[100], *p; // 输入字符串 scanf("%s", str); // 初始化指针到字符串末尾 p = str + strlen(str) - 1; // 输出逆序后的字符串 while (p >= str) { putchar(*p--); } return 0; } ``` 以上三种方式均能够有效解决PTA上的字符串逆序问题,具体选用哪种取决于实际需求以及题目约束条件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值