#include<stdio.h> #include<string.h> void main() { char s1[60],s2[20],s3[60]; int i,j,a,b; gets(s1); gets(s2); strcat(s1,s2); printf("%s\n",s1); for(i=0;1;i++) { s3[i]=s1[i]; if(s1[i]=='\0') break; } a=strlen(s1); printf("%d\n",a); for(i=0;i<a-1;i++) { for(j=i+1;j<a;j++) { if(s3[i]>s3[j]) { b=s3[j]; s3[i]=s3[j]; s3[j]=b; } } } puts(s3); puts(s1); }
时间: 2023-12-04 13:04:42 浏览: 126
这是一段 C 语言代码,主要实现字符串的拼接和排序功能。具体来说,代码使用了 gets() 函数获取两个字符串 s1 和 s2,然后使用 strcat() 函数将它们拼接起来,并输出结果。接下来,代码使用一个循环将 s1 复制到 s3 中,并使用 strlen() 函数获取 s1 的长度并输出。最后,代码使用冒泡排序对 s3 进行排序,并使用 puts() 函数输出 s3 和 s1。
相关问题
#include <stdio.h> #include <string.h> void myrevstr(char s1[], char s2[]); //将字符串s2反转后存放在s1中 void myrevstr(char s1[], char s2[]) { int pos = 0; char *p = s2+strlen(s2)-1; while (p>= (1) ) { s1[pos] = *p; (2) ; pos++; } (3) ; } int main() { char s1[80]; myrevstr(s1, "HelloW"); printf("%s", s1);//输出为WolleH return 1; }
完善程序如下:
```
#include <stdio.h>
#include <string.h>
void myrevstr(char s1[], char s2[]); //将字符串s2反转后存放在s1中
void myrevstr(char s1[], char s2[]) {
int pos = 0;
char *p = s2 + strlen(s2) - 1;
while (p >= s2) {
s1[pos] = *p;
p--;
pos++;
}
s1[pos] = '\0';
}
int main() {
char s1[80];
myrevstr(s1, "HelloW");
printf("%s", s1);//输出为WolleH
return 0;
}
```
其中,需要注意的点有:
1. 在 `while` 循环中,判断条件为 `p>=s2`,即指针 `p` 没有超过字符串 `s2` 的起始地址。
2. 在循环中,先将 `p` 所指向的字符赋值给 `s1` 中的对应位置,再让指针 `p` 向前移动一位。
3. 循环结束后,需要在 `s1` 的末尾添加一个空字符 `\0`,以表示字符串的结束。
请解释#include <stdio.h> #include <string.h> #define M 100 #define N 10 void main() { char s1[M],s2[N]; int i,j; gets(s1); gets(s2); i=strlen(s1); for(j=0;j<=strlen(s2);i++,j++) s1[i]=s2[j]; s1[i]='\0'; puts(s1); }
这是一段 C 语言代码,实现的功能是将两个字符串拼接起来。
首先,代码中使用了两个头文件,分别是<stdio.h>和<string.h>,前者提供了输入输出的函数,后者提供了字符串操作的函数。
然后,定义了两个宏,M 和 N,分别表示字符串的最大长度和第二个字符串的长度。
接下来是主函数main(),其中定义了两个字符数组s1和s2,分别用来存放输入的两个字符串。使用函数gets()获取两个字符串。
接下来使用函数strlen()获取第一个字符串的长度,并将第二个字符串拼接到第一个字符串的末尾。具体实现是使用一个循环,将s2中的字符一个一个复制到s1的末尾。
最后,为s1添加字符串结束符'\0',并使用函数puts()输出拼接后的字符串。
需要注意的是,这段代码使用了过时的函数gets(),在实际使用中可能会存在安全问题,建议使用更安全的函数fgets()代替。同时,主函数应该声明返回值类型为int而不是void。
阅读全文