Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C While循环语法错误即使在尝试中断时也不会编译_C_While Loop_Syntax Error - Fatal编程技术网

C While循环语法错误即使在尝试中断时也不会编译

C While循环语法错误即使在尝试中断时也不会编译,c,while-loop,syntax-error,C,While Loop,Syntax Error,我不断遇到语法错误,无法找到没有完成循环的地方。我的程序是查询转换成什么,然后在转换后询问用户是否想再次转换,如果是,再次显示选项菜单 有人能告诉我哪里出了问题吗 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void){ char answer; int selection; int again = 0; printf("Sel

我不断遇到语法错误,无法找到没有完成循环的地方。我的程序是查询转换成什么,然后在转换后询问用户是否想再次转换,如果是,再次显示选项菜单

有人能告诉我哪里出了问题吗

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

int main(void){ 
    char answer;
    int selection;
    int again = 0;
    printf("Select Conversion:\n");
    printf("(1.)Hex to Binary\n(2.)Binary to Hex\n");
    scanf("%d", &selection);
    while (again != 1) 
    {
        if (selection ==1)
        {
            char bin2[1000], hexa2[1000];
            long int a = 0;
            printf("Enter a hex or binary value: "); 
            scanf("%s", &hexa2);
            printf("\nBinary value: ");
            while (hexa2[a])
            {
                switch (hexa2[a])
                {
                case '0':
                    printf("0000"); 
                    break;
                case '1':
                    printf("0001"); 
                    break;
                case '2':
                    printf("0010"); 
                    break;
                case '3':
                    printf("0011"); 
                    break;
                case '4':
                    printf("0100"); 
                    break;
                case '5':
                    printf("0101"); 
                    break;
                case '6':
                    printf("0110"); 
                    break;
                case '7':
                    printf("0111"); 
                    break;
                case '8':
                    printf("1000"); 
                    break;
                case '9':
                    printf("1001"); 
                    break;
                case 'A':
                    printf("1010"); 
                    break;
                case 'B':
                    printf("1011"); 
                    break;
                case 'C':
                    printf("1100"); 
                    break;
                case 'D':
                    printf("1101"); 
                    break;
                case 'E':
                    printf("1110"); 
                    break;
                case 'F':
                    printf("1111"); 
                    break;
                case 'a':
                    printf("1010"); 
                    break;
                case 'b':
                    printf("1011"); 
                    break;
                case 'c':
                    printf("1100"); 
                    break;
                case 'd':
                    printf("1101"); 
                    break;
                case 'e':
                    printf("1110"); 
                    break;
                case 'f':
                    printf("1111"); 
                    break;
                default:
                    printf("\n Invalid hexa digit %c ", hexa2[a]);
                    return 0;
                }
                a++;
            break;
            }
        }   
            
        if (selection == 2)
        {
            long int bin, hex = 0, i = 1, left;
            printf("Enter Binary Number: \n");
            scanf("%ld", &bin);
            while (bin != 0)
            {
                left = bin % 10;
                hex = hex + left * i;
                i = i * 2;
                bin = bin / 10;
            }
            printf("Hexadecimal value: %lX", hex);
        }
        printf("\nContinue(Y/N)?\n");
        scanf("%s", &answer);
        if (answer=='Y'||answer=='y')
            {
                again = again +2;
            }
            else
            {
                again=1;
            }
        }
    }
    printf("Exit");
    return 0;
    
}
#包括
#包括
#包括
int main(void){
答案;
int选择;
int=0;
printf(“选择转换:\n”);
printf(“(1.)十六进制到二进制\n(2.)二进制到十六进制”);
scanf(“%d”,选择(&S);
while(再次!=1)
{
如果(选择==1)
{
char bin2[1000],hexa2[1000];
长整数a=0;
printf(“输入十六进制或二进制值:”);
scanf(“%s”&hexa2);
printf(“\n二次值:”);
while(hexa2[a])
{
开关(hexa2[a])
{
案例“0”:
printf(“0000”);
打破
案例“1”:
printf(“0001”);
打破
案例“2”:
printf(“0010”);
打破
案例“3”:
printf(“0011”);
打破
案例“4”:
printf(“0100”);
打破
案例“5”:
printf(“0101”);
打破
案例“6”:
printf(“0110”);
打破
案例“7”:
printf(“0111”);
打破
案例“8”:
printf(“1000”);
打破
案例“9”:
printf(“1001”);
打破
案例“A”:
printf(“1010”);
打破
案例“B”:
printf(“1011”);
打破
案例“C”:
printf(“1100”);
打破
案例“D”:
printf(“1101”);
打破
案例“E”:
printf(“1110”);
打破
案例“F”:
printf(“1111”);
打破
案例“a”:
printf(“1010”);
打破
案例“b”:
printf(“1011”);
打破
案例“c”:
printf(“1100”);
打破
案例“d”:
printf(“1101”);
打破
案例“e”:
printf(“1110”);
打破
案例“f”:
printf(“1111”);
打破
违约:
printf(“\n无效的六位数%c”,hexa2[a]);
返回0;
}
a++;
打破
}
}   
如果(选择==2)
{
长整型箱,十六进制=0,i=1,左;
printf(“输入二进制数:\n”);
scanf(“%ld”、&bin);
while(bin!=0)
{
左=箱%10;
十六进制=十六进制+左*i;
i=i*2;
bin=bin/10;
}
printf(“十六进制值:%lX”,十六进制);
}
printf(“\N是否继续?”\N”);
scanf(“%s”和“应答”);
如果(答案=='Y'|答案=='Y')
{
再次=再次+2;
}
其他的
{
再次=1;
}
}
}
printf(“退出”);
返回0;
}
我不断遇到语法错误,无法找到没有完成循环的地方。我的程序是查询转换成什么,然后在转换后询问用户是否想再次转换,如果是,再次显示选项菜单


有人能告诉我哪里出了问题吗?

您发布的代码比
{
。请在此处删除多余的
}

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

int main(void){ 
    char answer;
    int selection;
    int again = 0;
    printf("Select Conversion:\n");
    printf("(1.)Hex to Binary\n(2.)Binary to Hex\n");
    scanf("%d", &selection);
    while (again != 1) 
    {
        if (selection ==1)
        {
            char bin2[1000], hexa2[1000];
            long int a = 0;
            printf("Enter a hex or binary value: "); 
            scanf("%s", &hexa2);
            printf("\nBinary value: ");
            while (hexa2[a])
            {
                switch (hexa2[a])
                {
                case '0':
                    printf("0000"); 
                    break;
                case '1':
                    printf("0001"); 
                    break;
                case '2':
                    printf("0010"); 
                    break;
                case '3':
                    printf("0011"); 
                    break;
                case '4':
                    printf("0100"); 
                    break;
                case '5':
                    printf("0101"); 
                    break;
                case '6':
                    printf("0110"); 
                    break;
                case '7':
                    printf("0111"); 
                    break;
                case '8':
                    printf("1000"); 
                    break;
                case '9':
                    printf("1001"); 
                    break;
                case 'A':
                    printf("1010"); 
                    break;
                case 'B':
                    printf("1011"); 
                    break;
                case 'C':
                    printf("1100"); 
                    break;
                case 'D':
                    printf("1101"); 
                    break;
                case 'E':
                    printf("1110"); 
                    break;
                case 'F':
                    printf("1111"); 
                    break;
                case 'a':
                    printf("1010"); 
                    break;
                case 'b':
                    printf("1011"); 
                    break;
                case 'c':
                    printf("1100"); 
                    break;
                case 'd':
                    printf("1101"); 
                    break;
                case 'e':
                    printf("1110"); 
                    break;
                case 'f':
                    printf("1111"); 
                    break;
                default:
                    printf("\n Invalid hexa digit %c ", hexa2[a]);
                    return 0;
                }
                a++;
            break;
            }
        }   
            
        if (selection == 2)
        {
            long int bin, hex = 0, i = 1, left;
            printf("Enter Binary Number: \n");
            scanf("%ld", &bin);
            while (bin != 0)
            {
                left = bin % 10;
                hex = hex + left * i;
                i = i * 2;
                bin = bin / 10;
            }
            printf("Hexadecimal value: %lX", hex);
        }
        printf("\nContinue(Y/N)?\n");
        scanf("%s", &answer);
        if (answer=='Y'||answer=='y')
            {
                again = again +2;
            }
            else
            {
                again=1;
            }
        }
    }
    printf("Exit");
    return 0;
    
}
        if (answer=='Y'||answer=='y')
            {
                again = again +2;
            }
            else
            {
                again=1;
            }
        }
另外,更改scanf(“%s”和&hexa2)
scanf(“%s”,十六进制2)。对于
%s
,应传递
字符*
hexa2
是一个由1000个字符组成的数组(
char[1000]
),因此
&hexa2
是一个指向1000个字符组成的数组的指针(
char(*)[1000]
)。当您使用
hexa2
作为参数时,它将自动转换为指向其第一个参数的指针,因此将成为
char*

\include
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
    char answer;
    int selection;
    do
    {
        printf("Select Conversion:\n");
        printf("(1.)Hex to Binary\n(2.)Binary to Hex\n");
        scanf("%d", &selection);
        if (selection == 1)
        {
            char bin2[1000], hexa2[1000];
            long int a = 0;
            printf("Enter a hex value: ");
            scanf("%s", hexa2);
            printf("\nBinary value: ");
            while (hexa2[a])
            {
                switch (hexa2[a])
                {
                case '0':
                    printf("0000");
                    break;
                case '1':
                    printf("0001");
                    break;
                case '2':
                    printf("0010");
                    break;
                case '3':
                    printf("0011");
                    break;
                case '4':
                    printf("0100");
                    break;
                case '5':
                    printf("0101");
                    break;
                case '6':
                    printf("0110");
                    break;
                case '7':
                    printf("0111");
                    break;
                case '8':
                    printf("1000");
                    break;
                case '9':
                    printf("1001");
                    break;
                case 'A':
                    printf("1010");
                    break;
                case 'B':
                    printf("1011");
                    break;
                case 'C':
                    printf("1100");
                    break;
                case 'D':
                    printf("1101");
                    break;
                case 'E':
                    printf("1110");
                    break;
                case 'F':
                    printf("1111");
                    break;
                case 'a':
                    printf("1010");
                    break;
                case 'b':
                    printf("1011");
                    break;
                case 'c':
                    printf("1100");
                    break;
                case 'd':
                    printf("1101");
                    break;
                case 'e':
                    printf("1110");
                    break;
                case 'f':
                    printf("1111");
                    break;
                default:
                    printf("\n Invalid hexa digit %c ", hexa2[a]);
                    return 0;
                }
                a++;
            }
        }

        else if (selection == 2)
        {
            long int bin, hex = 0, i = 1, left;
            printf("Enter Binary Number: \n");
            scanf("%ld", &bin);
            while (bin != 0)
            {
                left = bin % 10;
                hex = hex + left * i;
                i = i * 2;
                bin = bin / 10;
            }
            printf("Hexadecimal value: %lX", hex);
        }
        printf("\nContinue(Y/N)?\n");
        scanf("%s", &answer);
    } while (answer == 'Y' || answer == 'y');
    printf("Exit");
    return 0;
}
#包括 #包括 内部主(空){ 答案; int选择; 做 { printf(“选择转换:\n”); printf(“(1.)十六进制到二进制\n(2.)二进制到十六进制”); scanf(“%d”,选择(&S); 如果(选择==1) { char bin2[1000],hexa2[1000]; 长整数a=0; printf(“输入十六进制值:”); 扫描频率(“%s”,十六进制2); printf(“\n二次值:”); while(hexa2[a]) { 开关(hexa2[a]) { 案例“0”: printf(“0000”); 打破 案例“1”: printf(“0001”); 打破 案例“2”: printf(“0010”); 打破 案例“3”: printf(“0011”); 打破 案例“4”: printf(“0100”); 打破 案例“5”: printf(“0101”); 打破 案例“6”: printf(“0110”); 打破 案例“7”: printf(“0111”);