为什么我这段代码无法运行:#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int i,n,j,k,s,len[20],num=0,sum[4]={0,0,0,0,0}; char sen[100]; gets(sen); n=strlen(sen); for(i=0;i<n;) { k=i; for(j=i+1;j<n;j++) { if(sen[j]==' ') { len[num]=j-k; num++; i=j+1; break; } } } for(s=0;s<num;s++) { if(len[s]==1) { sum[0]++; } else if(len[s]>=2&&len[s]<=5) { sum[1]++; } else if(len[s]>=6&&len[s]<=10) { sum[2]++; } else if(len[s]>=11&&len[s]<=20) { sum[3]++; } else { sum[4]++; } } printf("长度为1的单词数:%d\n",sum[0]); printf("长度在2到5的单词数:%d\n",sum[1]); printf("长度在6到10的单词数:%d\n",sum[2]); printf("长度在11到20的单词数:%d\n",sum[3]); printf("长度大于等于21的单词数:%d\n",sum[4]); return 0; }
时间: 2023-12-10 21:41:21 浏览: 45
你这段代码无法运行的原因可能是因为 `gets()` 函数已经被废弃,不能再使用。你可以使用 `fgets()` 函数来代替 `gets()` 函数。同时,你定义的 `sum` 数组的大小是 4,但是你在程序中却访问了 `sum[4]` 的位置,这样会导致数组越界。建议将 `sum` 数组的大小改为 5。
下面是修改后的代码:
```
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int i, n, j, k, s, len[20], num = 0, sum[5] = {0};
char sen[100];
fgets(sen, 100, stdin);
n = strlen(sen);
for (i = 0; i < n;) {
k = i;
for (j = i + 1; j < n; j++) {
if (sen[j] == ' ') {
len[num] = j - k;
num++;
i = j + 1;
break;
}
}
}
for (s = 0; s < num; s++) {
if (len[s] == 1) {
sum[0]++;
}
else if (len[s] >= 2 && len[s] <= 5) {
sum[1]++;
}
else if (len[s] >= 6 && len[s] <= 10) {
sum[2]++;
}
else if (len[s] >= 11 && len[s] <= 20) {
sum[3]++;
}
else {
sum[4]++;
}
}
printf("长度为1的单词数:%d\n", sum[0]);
printf("长度在2到5的单词数:%d\n", sum[1]);
printf("长度在6到10的单词数:%d\n", sum[2]);
printf("长度在11到20的单词数:%d\n", sum[3]);
printf("长度大于等于21的单词数:%d\n", sum[4]);
return 0;
}
```