#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main(void)
{

    int  choose=0;//choose is number 1 or 2 or 3.
    while(choose!=3)//Given 3 chooses to user.
    {


        printf("please select the choose.\n");
        printf("1)    Calculate resistance value\n");
        printf("2)    Help\n");
        printf("3)    Exit\n");
        scanf("%d",&choose);
        //Repeat the chooses until user choose 1 || 2 || 3
        while (!(choose>=1 && choose <=3))
        {
            //To make sure user choose between 1-3
            printf("Please select the choose again %d\n",choose);
            scanf("%d",&choose);
        }

        //Do calculate when user choose Calculate resistance value
        if(choose==1)
        {

            int band1;
            band1= 0;
            int band2;
            band2= 0;
            int band3;
            band3=0;
            int band4;
            band4= 0;
            float value ;
            value = 0.0;

            //show all colors to choose, start from 1 end at 12 so the C code for function needs to -1 become 0.
            printf("(1)        Black\n");
            printf("(2)        Brown\n");
            printf("(3)        Red\n");
            printf("(4)        Orange\n");
            printf("(5)        Yellow\n");
            printf("(6)        Green\n");
            printf("(7)        Blue\n");
            printf("(8)        Violet\n");
            printf("(9)        Gray\n");
            printf("(10)    white\n");
            printf("(11)    Gold\n");
            printf("(12)    Silver\n");
            //ask user to choose color for band 1
            printf("Please select the color for band 1:");
            scanf("%d", &band1);


            while (!(band1>=1 && band1<=10))
            {
                printf("There is  not choose for %d\n",band1);
                printf("Please select the color for band 1:");
                scanf("%d",&band1);
            }
            printf("Please select the color for band 2:");
            scanf("%d", &band2);

            while (!(band2>=1 && band2<=10))
            {
                // if the user choose wrong color.
                printf("There is no choose for %d\n",band2);
                //ask user to choose a right color
                printf("Please select the color for band 2:");
                scanf("%d",&band2);
            }
            //ask user to choose color for band 3
            printf("Please select the color for band 3:");
            scanf("%d", &band3);


            while (band3>=12 || band3 <=0)
            {
                //User choose a wrong color
                printf("There is  not choose for %d\n",band3);
                //ask user to choose a right color
                printf("Please select the color for band 3:");
                scanf("%d",&band3);
            }

            // because list start on 1, so if user choose 12 then it is -1 which means (-1)-(1)=-2,
            if(band3 == 11)
                band3 == 0;
            else if(band3 == 12)
                band3 == -1;

            printf("Please select the color for band 4:");
            scanf("%d", &band4);

            //Only 11-12 has the values for band 4, keep asking user
            //to choose the color until user choose 11 or 12
            while (!(band4 >=11 && band4 <=12))
            {

                printf("There is  not choose for %d\n",band4);
                printf("Please select the color for band 4:");
                scanf("%d",&band4);
            }
            //the value for forth band
            float uncertainty = 0.0;


            if (band4==11)
                //the forth value for Gold is 5%
                uncertainty=0.05;
            else if (band4==12)
                //the forth value for Silver is 10%
                uncertainty=0.10;

            //calcuate the result for resistance.
            value=(10*(band1-1)+(band2-1))*pow(10,band3-4);
            uncertainty=value*uncertainty;
// everything -1 from top list because start 1 to 12, but C code needs start at 0 to 11.
            //print the Resistance Value with +- forth value.
            printf("Resistance Value is %f +/-%f kilo-ohms\n",value,uncertainty);
        }
            else if(choose==2)
        {
            //print the Help information.
        printf("Four-band are represented by the formation of four colored bands.\nThe first two bands states the resistance value, \nthe third band indicates the power which increase the range of the value, \nThe last number indicates uncertainty,\nwhich is an acceptable error for the resistor.\n");
        }
            else if(choose==3)
        printf("Terminating...");

        {
          system ("pause");
          return 0;
        }

    }
}
这是一个作业,我都做完了,发现两个BUG,不知道如何修改,小弟用的是codeblock,

BUG 1,  while loop 不起作用,无法实现循环使用,
BUG 2, 输入字母后,BUG 出现,程序变为无限运行,
请指正.