[英]While loop syntax error will not compile even when trying to break out
我不斷收到語法錯誤,找不到我沒有完成循環的地方。 我的程序是查詢要轉換的內容,然后在轉換后詢問用戶是否要再次執行此操作,如果是,請再次顯示選項菜單。
有人可以告訴我哪里出錯了嗎?
#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", hexa2);
. 對於%s
,應該傳遞一個char *
。 hexa2
是 1000 個char
( char [1000]
)的數組,所以&hexa2
是一個指向 1000 個char
( char (*)[1000]
)數組的指針。 當您使用hexa2
作為參數時,它將自動轉換為指向其第一個參數的指針,因此這將是一個char *
。
#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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.