一个单词表存放了五个表示颜色的英文单词,输入一个字母,在单词表中查找并输出所有以此字母开头的单词,若没有找到,输出Not Found。要求用指针数组和二级指针实现。 /* 单词索引(用二级指针操作指针数组)*/ #include<stdio.h> int main(void) { int i, flag = 0; char ch; const char *color[5] = {"red", "blue", "yellow", "green", "black" }; const char ; pc = color; ch = getchar(); for(i = 0; i < 5; i++) { if( (pc + i) == ch){ flag = 1; puts( (pc + i) ); } } if(flag == 0) { printf("Not Found\n"); } return 0; }
时间: 2023-12-03 19:43:32 浏览: 871
修改后的代码如下:
```c
#include <stdio.h>
int main(void) {
int i, flag = 0;
char ch;
const char *color[5] = {"red", "blue", "yellow", "green", "black"};
const char **ppc = color; // 定义二级指针
ch = getchar();
for (i = 0; i < 5; i++) {
if (**(ppc + i) == ch) { // 判断第一个字母是否为输入字母
flag = 1;
puts(*(ppc + i)); // 输出单词
}
}
if (flag == 0) {
printf("Not Found\n");
}
return 0;
}
```
解释一下修改的地方:
1. 定义了一个二级指针`const char **ppc = color;`,指向指针数组`color`。
2. 在循环中,用`**(ppc + i)`表示指针数组中的每一个字符串。其中,`*(ppc + i)`表示指向第`i`个字符串的指针,`**(ppc + i)`表示第`i`个字符串的第一个字符。
3. 判断第一个字母是否是输入字母时,用的是`**`操作符而不是`*`操作符。因为`*(ppc + i)`表示的是指向字符串的指针,而我们需要判断的是字符串的第一个字符,所以需要再加一个`*`操作符。
4. 输出单词时,用的是`*(ppc + i)`表示指向第`i`个字符串的指针。`puts()`函数可以直接输出字符串。
注意:在输入字母时,需要按下回车键才能触发程序读取输入。
阅读全文