#include<stdio.h> #define N 1000 void main() { char en[N][81]; int i,j,num=0,n,state; printf("Please input the number of lines for English passage:"); scanf("%d",&n); getchar(); for(i=0;i<n;i++){ gets(en[i]); } for(i=0;i<n;i++){ state=0; for(j=0;en[i][j]!='\0';j++){ if(en[i][j]==' '){ state=0; } else if(state==0){ state=1; num++; } } } printf("The number of words is %d\n",num); } 检查代码错误,并优化代码
时间: 2024-01-22 10:03:37 浏览: 62
#include<stdio.h>
代码没有语法错误,但是可以进行一些优化。首先,`void main()` 应该改为 `int main()`,因为 `main()` 函数应该返回一个整数。另外,`getchar()` 语句可以删除,因为它没有实际作用。
代码优化如下:
```c
#include <stdio.h>
#define N 1000
int main() {
char en[N][81];
int i, j, num = 0, n, state;
printf("Please input the number of lines for English passage:");
scanf("%d", &n);
getchar();
for (i = 0; i < n; i++) {
gets(en[i]);
}
for (i = 0; i < n; i++) {
state = 0;
for (j = 0; en[i][j] != '\0'; j++) {
if (en[i][j] == ' ') {
state = 0;
} else if (state == 0) {
state = 1;
num++;
}
}
}
printf("The number of words is %d\n", num);
return 0;
}
```
另外,`gets()` 函数已经被标记为不安全的函数,推荐使用 `fgets()` 函数代替。
阅读全文