#include<stdio.h> //任务二、赵子钧、五班、2022015643、2023/5/27 #include<string.h> int fun(const char *str) { int i,j; int count; int len; count=0; len=strlen(str); for(i=0;i<len-1;i++) { if(str[i]==str[i+1]) { j++; } for(i=0;j>0;j--) { count=j+count; } } return count; } int main(void) { const char str1[]="ssscaerfff"; printf("%d",fun(str1)); return 0; 为什么会报错 }
时间: 2024-01-14 18:03:41 浏览: 236
这段代码的问题在于变量j没有初始化,而在第9行中直接使用了变量j。应该在开始的时候将j初始化为0,例如在第6行后添加j=0;即可解决问题。另外,在第8行的for循环中,应该使用另一个变量k来进行计数,而不是直接修改循环变量i的值,否则会影响整个循环的执行。修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
int fun(const char *str) {
int i,j=0,k;
int count=0;
int len=strlen(str);
for(i=0;i<len-1;i++) {
if(str[i]==str[i+1]) {
j++;
} else {
for(k=0;k<j;k++) {
count++;
}
j=0;
}
}
for(k=0;k<j;k++) {
count++;
}
return count;
}
int main(void) {
const char str1[]="ssscaerfff";
printf("%d",fun(str1));
return 0;
}
```
这个程序将会输出3,表示字符串中有3个相邻的字符相同。
阅读全文