原题链接:C语言训练-字符串正反连接
1)不使用数组,这种做法其实不符合题意,因为你没有连接,你的原数组没有变化
#include <stdio.h>
#include <string.h>
int main(){
char s[50];
gets(s);
printf("%s",s);//正序输出
for(int i=strlen(s)-1;i>=0;i--){
printf("%c",s[i]);//倒序输出
}
return 0;
}
2)使用了个临时数组连充当连接,这个是符合题意的
#include<string.h>
#include<stdio.h>
int main(){
char s[101];
gets(s);
int len=strlen(s);
for(int i=len-1;i>=0;i--){
char ch[2];
sprintf(ch,"%c",s[i]);//将原数组的值倒序存进那个中间数组里,方便连接
//这两个函数的用法不懂的可以去搜一下
strcat(s,ch);//将那几个字符一个一个倒序连接到原数组,这里的strcat的两个参数必须是字符串,所以我要先将字符转成字符串才行,当然不用函数也行,自己写一个连接函数
}
printf("%s",s);
}
3)先将数组倒序存入,再连接到原数组上
#include<string.h>
#include<stdio.h>
int main(){
char s1[101],s2[101];
gets(s1);
int len=strlen(s1);
for(int i=len-1,j=0;i>=0,j<len;i--,j++){//for循环要同时循环两个参数
s2[j]=s1[i];//先将数组倒序存入一个新数组
}
strcat(s1,s2);//再连接
printf("%s",s1);
}
4)不借用库函数,只使用输入输出函数
#include<stdio.h>
int Strlen(char *s){//获取字符串长度函数
int len=0;
while(s[len]!='\0'){
len++;
}
return len;
}
void fun(char *s,char ch){//字符连接函数
int len=Strlen(s);
s[len]=ch;
s[len+1]='\0';//这个一定要加,因为数组被你人为的更改了,所以要自己手动加上结束符
}
int main(){
char s[101];
scanf("%s",s);
int len=Strlen(s);
for(int i=len-1;i>=0;i--){
char ch;
ch=s[i];
fun(s,ch);
}
printf("%s",s);
}
9.9 分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复