c++奥运五环的5种颜色的英文单词按一定顺序排列{"red", "blue", "yellow", "green", "black" },定义指针数组并初始化,输入任意一个颜色的英文单词,从已有颜色中查找并输出该颜色的位置值,若没有找到,则输出"Not Found"。
时间: 2023-10-04 11:08:20 浏览: 138
好的,让我来解答你的问题。
以下是代码实现:
```
#include <stdio.h>
#include <string.h>
int main() {
char *colors[] = {"red", "blue", "yellow", "green", "black"};
int n = sizeof(colors) / sizeof(colors[0]);
char input[10];
printf("请输入一个颜色的英文单词:");
scanf("%s", input);
int i;
for (i = 0; i < n; i++) {
if (strcmp(colors[i], input) == 0) {
printf("%s 的位置值为 %d\n", colors[i], i + 1);
break;
}
}
if (i == n) {
printf("Not Found\n");
}
return 0;
}
```
解释一下代码:
- 首先,我们定义了一个指针数组 colors,其中存放了五种颜色的英文单词,并且按照指定的顺序排列。
- 然后,我们通过计算数组的长度得到了 n 的值。
- 接着,我们提示用户输入一个颜色的英文单词,并通过 scanf 函数将其存储到字符数组 input 中。
- 接下来,我们通过一个 for 循环在数组 colors 中查找该颜色的位置值。如果找到了,则输出该颜色的名称和位置值,并跳出循环;如果没有找到,则在循环结束后输出 "Not Found"。
- 最后,我们返回值 0 表示程序正常结束。
稍微解释一下字符串比较的部分:我们使用了 C 标准库中的 strcmp 函数,它的作用是比较两个字符串是否相同。如果两个字符串相同,它返回值为 0;如果不同,它返回非零值。因此,我们在代码中写了 if (strcmp(colors[i], input) == 0),表示当 colors[i] 和 input 所存储的字符串相同时,执行 if 语句块中的代码。
阅读全文