程序改错。下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。[提示:判断是否有新单词出现的方法是——当前被检验的字符不是空格,而前一被检验字符是空格,则表示有新单词出现。] #include<stdio.h> #define ARR_SIZE 80; main() { char str[ARR_SIZE]; int i, num; gets(str); if(str[0] != ' ' && str[0] != '\0') { num = 1; } else { num = 0; } for(i = 1 ; str[i] != '\0'; i++) { if(str[i] != ' ' && str[i-1] = ' ') { num++; } } printf("num=%d\n", num); }
时间: 2024-02-01 09:04:23 浏览: 33
好的,这里是改正后的代码:
```c
#include <stdio.h>
#define ARR_SIZE 80
int main() {
char str[ARR_SIZE];
int i, num;
gets(str);
if (str[0] != ' ' && str[0] != '\0') {
num = 1;
} else {
num = 0;
}
for (i = 1; str[i] != '\0'; i++) {
if (str[i] != ' ' && str[i - 1] == ' ') { // 修正判断条件
num++;
}
}
printf("num=%d\n", num);
return 0;
}
```
主要的改正点是在 `for` 循环中判断新单词的条件上。原代码中使用了 `=` 赋值符号,导致编译出错。应该使用 `==` 进行相等判断,判断当前字符不是空格,而前一个字符是空格,才能算作一个新单词的出现。
相关问题
程序改错。下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。[提示:判断是否有新单词出现的方法是——当前被检验的字符不是空格,而前一被检验字符是空格,则表示有新单词出现。] #include<stdio.h> #define ARR_SIZE 80; main() { char str[ARR_SIZE]; int i, num; gets(str); if(str[0] != ' ' && str[0] != '\0') {
程序中存在两个问题,需要进行修改:
1. 宏定义ARR_SIZE中不应该有分号,应该改为 #define ARR_SIZE 80
2. 程序中没有对单词数量进行统计。
修改后的程序如下:
```
#include<stdio.h>
#define ARR_SIZE 80
int main() {
char str[ARR_SIZE];
int i, num = 0;
gets(str);
if(str[0] != ' ' && str[0] != '\0') {
num++;
}
for(i = 1; str[i] != '\0'; i++) {
if(str[i] != ' ' && str[i-1] == ' ') {
num++;
}
}
printf("单词数量为:%d\n", num);
return 0;
}
```
这个程序能够正确统计输入字符串中的单词数量。
以下程序的功能是将读入的两个字符串进行连接,并存入s1。请将划出错误语句,并改错,输入程序。
```c
#include<stdio.h>
#include<string.h>
int main()
{
char s1[100],s2[50];
gets(s1);
gets(s2);
strcat(s1,s2);
printf("%s\n",s1);
return 0;
}
```
错误语句是`gets(s1)`,这个函数存在缓冲区溢出的安全问题,建议使用`fgets()`函数代替。
修改后的程序如下:
```c
#include<stdio.h>
#include<string.h>
int main()
{
char s1[100],s2[50];
fgets(s1,100,stdin);
fgets(s2,50,stdin);
s1[strcspn(s1,"\n")]='\0'; // 去掉s1字符串中的换行符
strcat(s1,s2);
printf("%s\n",s1);
return 0;
}
```
注意,使用`fgets()`函数读取字符串时,会将输入的换行符也读入字符串中,需要将其替换为字符串结束符'\0',否则后面的字符串连接可能会出错。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)