解题思路:
解决此题目分为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 人评分
#include <stdio.h> #include <string.h> int back(char str[]); int main() { char str[100]; gets(str); back(str); return 0; } int back(char str[]) { int len; len = strlen(str); int i; for(i=len-1;i>=0;i--){ if(str[i] != '\0') printf("%c",str[i]); } }
#include<stdio.h> int main() { char s[100]; int i=1; while(s[i]!='\n') { i++; scanf("%c",&s[i]); } while(i!=0) { i--; printf("%c",s[i]); } return 0; }
#include <stdio.h> #include <string.h> int main(void) { char figure[40]; gets(figure); int number=strlen(figure)-1; //printf("%d\n",number); for(number;number>=0;number--) { printf("%c",figure[number]); } return 0; }
#include <bits/stdc++.h> using namespace std; int main(){ char x[100]={0}; gets(x); for(int i=strlen(x)-1;i>=0;i--){ cout<<x[i]; } return 0; }
#include<stdio.h> void arra(int* a,int b); void arra(int* a,int b) { int i,j=b,k; for(i=0;i<b/2;i++) { k=a[i]; a[i]=a[j]; a[j]=k; j=j-1; } } int main() { int a[100],b=0,c=0,d=0; printf("plesse input a string\n"); while((a[b]=getchar())!='\n') b++; arra(a,b); for(c=0;c<b;c++) { printf("%d",a[c]); } return 0; }
#include <stdio.h> int main() { void add(); add(); return 0; } void add() { char c; scanf("%c",&c); if(c!='\n') { add(); printf("%c",c); } } 递归来凑热闹了
C语言训练-阿姆斯特朗数 (C语言代码)浏览:898 |
C二级辅导-进制转换 (C语言代码)浏览:551 |
永远的丰碑 (C语言代码)浏览:708 |
九宫重排 (C++代码)浏览:1410 |
字符串对比 (C语言代码)浏览:1475 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:942 |
校门外的树 (C语言代码)浏览:991 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:701 |
最小公倍数 (C语言代码)浏览:1115 |
用筛法求之N内的素数。 (C语言代码)浏览:711 |