解题思路:
解决此题目分为2步骤:
1、获取字符串
2、字符串逆转
注意事项:
第一步 获取用户输入字符串,以及字符串长度。
char *string=NULL;
int length=0;
scanf("%[^\n]%n",string=(char*)calloc(length+1,1),&length);
1.使用到scanf高级用法:%[^\n]、%n,使用该占位符可以获取用户输入字符串长度(不包括'\0')。
2.大部分C语言函数参数赋值顺序为从右向左。
3.变量length中是用户输入的字符串长度,string中是用户输入的字符串。
4.使用calloc动态分配length+1字节内存空间,该函数会将分配的内存空间初始化为0。
第二步 字符串翻转
void change(char src[])
{
int i;
int len=strlen(src);
for (i=0;i<len/2;i++)
{
src[i]^=src[len-i-1];
src[len-i-1]^=src[i];
src[i]^=src[len-i-1];
}
利用C语言中的按位异或运算符(^)进行数组元素交换,提高速率。
len/2提高交换效率。
参考代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> void change(char src[]) { int i; int len=strlen(src); for (i=0;i<len/2;i++) { src[i]^=src[len-i-1]; src[len-i-1]^=src[i]; src[i]^=src[len-i-1]; } } int main(void) { char *string=NULL; int length=0; scanf("%[^\n]%n",string=(char*)calloc(length+1,1),&length); change(string); puts(string); return 0; }
用法:
直接输入字符串即可
输入:
123456789
输出:
987654321
欢迎交流
个人QQ:757368775
交流群:599151072
【注意】
添加好友时请注明“来自c语言网”
0.0分
39 人评分
//楼主的代码比较高深, 觉得不太容易懂的可以参考下我这个代码,10行解决。 #include <iostream> #include <string> #include <algorithm> int main() { std::string str; std::cin>>str; reverse(str.begin(),str.end()); std::cout<<str; }
少了free(string)并且string=NULL的话,程序结束后才能释放内存?
lvxuzhou 2018-06-23 18:03:11 |
程序运行结束,系统会自动释放内存的
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:641 |
剪刀石头布 (C语言代码)不知道怎么直接在scanf中用枚举变量浏览:1439 |
简单的a+b (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:575 |
C语言训练-亲密数 (C语言代码)浏览:697 |
简单的a+b (C语言代码)浏览:619 |
2^k进制数 (C语言描述,蓝桥杯)浏览:1457 |
C二级辅导-同因查找 (C语言代码)浏览:618 |
简单的a+b (C语言代码)浏览:600 |
JAM计数法 (C语言代码)浏览:721 |
lvxuzhou 2018-12-24 11:14:15 |
请用C语言实现,用Java我还5行就搞定了
cpython3 2018-12-24 17:01:58 |
@lvxuzhou 。。。。。
cpython3 2018-12-24 17:02:27 |
@lvxuzhou JAVA是怎么也比不上c++的。。。
lvxuzhou 2018-12-26 19:59:49 |
你说比不上就比不上了?拿出具体的证明
cpython3 2018-12-27 16:35:39 |
@lvxuzhou 实事证明Java比c++高级太多,大佬你牛逼
lvxuzhou 2018-12-28 08:50:47 |
数据是不会骗人的
重大考研狗2019 2019-02-24 18:59:32 |
请用c实现
cpython3 2019-02-25 21:56:41 |
@leaderpeak C的代码上面难道没有吗?你眼睛看不见吗。。。
重大考研狗2019 2019-02-27 19:38:51 |
@smartZhou 我的回复属于局部变量,不属于全局变量。。。
cpython3 2019-02-27 21:22:19 |
@leaderpeak 厉害哈,大哥。我水平浅,多有包涵哈。
重大考研狗2019 2019-02-27 21:37:37 |
@smartZhou d大哥,我只是调侃一下,别往心里去。抱歉啦
cpython3 2019-02-27 21:58:18 |
@leaderpeak 没事O(∩_∩)O哈!请多指教。