2013-10-29 139 views
0

我一直試圖讓這個代碼的工作,但不知何故,我不能這樣做..有問題的switch語句

#include <iostream.h> 
#include <stdio.h> 

int main() { 

    int a,b,c; 
    int y=3; 
    int i=2; 
    int g[] = {20}; 
    int m,k; 
    int Z; 

    printf("Enter a number for a"); 
    scanf("%d", &a); 

    printf("Enter a number for b"); 
    scanf("%d", &b); 

    printf("Enter a number for c"); 
    scanf("%d", &c); 

    m=y; 


    do 
    { 

     Z = a+b-c; 

     switch(Z) 
     { 
     case '0': 
     case '1': 
       k=17; 
       m+=b; 
       break; 
     case '2': 
       m+=b; 
       m=a; 
       break; 
     case '3': 
       m=a-c; 
       m+=b; 
       m=a; 
       break; 
     case '7': 
       m+=b; 
       break; 
     default: 
       m=a; 
       break; 
     } 

     g[m] = m%i; 
     m--; 



    }while(m>b); 



} 

這是我不得不變成編碼方案。 http://ff.tu-sofia.bg/PIK/Izpiti/MidTest07.html

y和i默認爲3和2,數組g應該包含20個整數,用戶必須鍵入a,b和c的值。

回答

3

Z是一個整數,你的案例正在尋找字符串。擺脫案件中的數字周圍的引號。

數組g不包含20個整數,在這種情況下它包含一個元素20。我認爲你的意思是g[20] = {}

又如何計算Z?是(a + b)-c還是a +(b-c)?你需要圓括號來使你的意圖更清晰

Z = a+b-c; 

switch(Z) 
    { 
    case 0: 
    case 1: 
      k=17; 
      m+=b; 
      break; 
    case 2: 
      m+=b; 
      m=a; 
      break; 
+1

'''環繞字符而不是字符串。 char''0'的值是0. –

+2

你是對的它是一個字符,但'0'不是十進制0它是十進制48或0x30。 – jramirez

+0

你是對的0是'nul'。公平地說,他沒有說明錯誤是什麼。如果這是他所擁有的,該代碼不應該引發編譯器錯誤。 –