#include <stdio. h> void main() { char s1[81],s2[81]; int i,s; printf("输入字符串1:");gets(s1); printf("输入字符串2:");gets(s2); i=0; while ((s1[i]==s2[i]&&s1[i]!=s2[i])) i++; s= printf("%d\n",s); }
时间: 2024-01-28 11:04:20 浏览: 99
这段代码有一些问题,主要是在 while 循环条件中,判断 s1[i] 和 s2[i] 是否相等的同时,又用 && 判断它们是否不相等,这是矛盾的。正确的写法是使用 || 来判断它们是否不相等。同时,在最后输出 s 的时候,应该输出 i 才是字符串的不同字符的个数。下面是修改后的代码:
```c
#include <stdio.h>
void main() {
char s1[81], s2[81];
int i = 0, s = 0;
printf("输入字符串1:");
gets(s1);
printf("输入字符串2:");
gets(s2);
while (s1[i] != '\0' || s2[i] != '\0') {
if (s1[i] != s2[i]) {
s++;
}
i++;
}
printf("不同字符的个数:%d\n", s);
}
```
需要注意的是,使用 gets 函数输入字符串存在安全性问题,建议使用 fgets 函数代替。另外,main 函数的返回值应该是 int 类型的,而不是 void 类型的。
相关问题
#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`,以表示字符串的结束。
1. 编一个函数,将字符串s2连接到s1后面,不用strcat函数。(请填空)#include <stdio. h> #include <string. h> void mainO ( char s1[80], s2[40]; int i=0, j=0; gets(s1) ; gets(s2) ; /*查找定位s1的连接点(即结束符) */ 8灵静话/*将s2逐个字符复制到s1后,对应下标后移*/ /*手工对s1加结束符*/ printf( "The new string is:%s” ,s1);
#include <stdio.h>
#include <string.h>
void mystrcat(char s1[], char s2[]) {
int len1 = strlen(s1);
int len2 = strlen(s2);
int i, j;
for (i = len1, j = 0; j < len2; i++, j++) {
s1[i] = s2[j];
}
s1[i] = '\0';
}
int main() {
char s1[80], s2[40];
printf("Enter string s1: ");
gets(s1);
printf("Enter string s2: ");
gets(s2);
mystrcat(s1, s2);
printf("The new string is: %s\n", s1);
return 0;
}
阅读全文