创建一个单词数组,其中还包含C中的数值

时间:2014-10-14 15:21:39

标签: c

我正在尝试创建一个程序,要求用户在给定电阻上输入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
        {

        }

1 个答案:

答案 0 :(得分:0)

一些问题:

  1. 您的输入缓冲区band1band2等需要是字符串,而不是字符 - 更改:

    char band1, band2, band3, band4;
    
  2. 为:

        char band[32];
    

    只需在bandband1等处使用band2即可。

    1. 您需要使用strcmp来比较字符串,因此请更改。

      (band1 == BANDS_1_2_3[11])
      
    2. 为:

          strcmp(band1, BANDS_1_2_3[11]) == 0
      
      1. 你的逻辑是错的:

        if((band1 == BANDS_1_2_3[11]) && (band1 == BANDS_1_2_3[12]))
        
      2. 这应该是:

            if(strcmp(band1, BANDS_1_2_3[11]) == 0 || strcmp(band1, BANDS_1_2_3[12]) == 0)
                                                  ^^^^
        

        注意使用逻辑OR而不是逻辑AND。