为什么无输出结果int fun(const char *str) { int i,j; int count; int len; j=0; 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--) {
时间: 2024-01-14 17:03:54 浏览: 58
这段代码存在两个问题,导致无输出结果:
1. 在第一个 for 循环中,i 的范围是 0 到 len-2,但是在内部的第二个 for 循环中,又重新将 i 赋值为 0,这样就会导致第一个 for 循环中的 i 无法正常遍历整个字符串,而且第二个 for 循环也会一直执行,导致程序无法结束。
2. 第二个 for 循环中没有任何代码,所以即使能正常执行,也不会有任何输出结果。
因此,建议修改代码如下:
```
int fun(const char *str) {
int i,j;
int count;
int len;
j=0;
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++;
}
return count;
}
```
这样就可以正常输出重复字符的个数了。
相关问题
int fun(const char *str) { int i,j; int count; int len; j=0; 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; }为什么没有输出结果
这段代码也存在两个问题,导致无输出结果:
1. 在第一个 for 循环中,i 的范围是 0 到 len-2,但是在内部的第二个 for 循环中,又将 i 重新赋值为 0,这样就会导致第一个 for 循环中的 i 无法正常遍历整个字符串,而且第二个 for 循环也会一直执行,导致程序无法结束。
2. 第二个 for 循环的执行条件是 j>0,但是在内部并没有对 j 进行修改,所以如果第一个 for 循环中没有发现重复字符,那么 j 的值就会一直为 0,导致第二个 for 循环无法执行。
因此,建议修改代码如下:
```
int fun(const char *str) {
int i,j;
int count;
int len;
j=0;
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++;
}
return count;
}
```
这样就可以正常输出重复字符的个数了。
#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; 为什么会报错 }
这段代码的问题在于变量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个相邻的字符相同。
阅读全文