我正在尝试创建一个程序,要求用户在给定电阻上输入4种颜色的波段,以便计算以欧姆为单位的等效电阻。有12种可能的颜色。这是一张有助于说明的图片:http://www.researchcell.com/wp-content/uploads/2012/05/resistor-color-code-band.jpg。这就是说,对于这个问题,我只会考虑金银乐队的容忍度。这是我到目前为止所拥有的。我的老师给了我这个任务而没有解释数组,所以我自己留给了这个... 对于前两个乐队,Gold和Silver是无效颜色。一旦用户输入正确的颜色,我希望能够进入并检索在数组中输入的相同颜色,然后我将其关联到相应的值(如上面链接的图片所示)。在输入四种颜色后,最终结果将是以欧姆为单位的电阻值...非常感谢,非常感谢您的帮助!
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *BANDS_1_2_3[12] = {"Black", "Brown", "Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Gray", "White", "Gold", "Silver"};
int choice;
char band1, band2, band3, band4;
printf("Please choose one of the following options: \n\n1. Calculate the resistance \n2. Help \n3. Exit \n\n");
scanf("%d", &choix);
if(choice==1)
{
printf("Please enter the color of the first band:"); scanf("%s", &band1);
if((band1 == BANDS_1_2_3[11]) && (band1 == BANDS_1_2_3[12]))
{
printf("Invalid color. Please try again:"); scanf("%s", &band1);
}
else if
{
}
答案 0 :(得分:0)
一些问题:
您的输入缓冲区band1
,band2
等需要是字符串,而不是字符 - 更改:
char band1, band2, band3, band4;
为:
char band[32];
只需在band
,band1
等处使用band2
即可。
您需要使用strcmp
来比较字符串,因此请更改。
(band1 == BANDS_1_2_3[11])
为:
strcmp(band1, BANDS_1_2_3[11]) == 0
你的逻辑是错的:
if((band1 == BANDS_1_2_3[11]) && (band1 == BANDS_1_2_3[12]))
这应该是:
if(strcmp(band1, BANDS_1_2_3[11]) == 0 || strcmp(band1, BANDS_1_2_3[12]) == 0)
^^^^
注意使用逻辑OR而不是逻辑AND。