2013-11-05 61 views
1

PrintLines函數必須只有三個形式參數,所有類型爲int。將char型函數的int型參數賦予

從左到右,PrintLines的3參數版本中的參數表示要打印的字符的值,字符要在一行上打印的次數以及要打印的字符的行數被生產。

例如,PrintLines( 'C',5,2)將導致:

CCCCC

CCCCC

的PrintLines函數使用int類型參數來表示該字符。但請注意,當在函數原型存在的情況下調用時,所有兼容參數都將轉換爲相應函數參數的類型。這意味着即使您使用類型char變量從用戶獲取所需字符,它也會自動轉換爲int類型(如果傳遞給具有int類型參數的函數)。但是,要避免可能的編譯器警告,請在傳遞此類參數時使用類型轉換。此外,總是聲明函數來返回void類型,除非返回一個值將有意義。

我的問題是,我不知道如何正確鍵入轉換「a」參數。要求是PrintLines接受三個int參數,但是如果我爲參數「a」輸入一個非整數,則程序崩潰。我試圖在原型,函數頭和輸出中輸入「a」變量。有一些評論代碼,我已經包括,以顯示我迄今爲止嘗試過的。代碼編譯但我認爲有一個運行時/邏輯錯誤。

任何人都可以請幫忙嗎?

下面是main.cpp中

#include<iostream> 

using namespace std; 

int a ; 
int b ; 
int c ; 

void PrintLines(int, int, int) ; 

int main(void) 
{ 

    //cin >> (char)a >> b >> c ; 
    cin >> a >> b >> c ; 
    cout << '\n' ; 
    //PrintLines((char)a, b, c) ; 
    PrintLines(a, b, c) ; 
    cout << '\n' ; 

    system("pause"); 
    return 0; 

} 

下面的代碼爲PrintLines.cpp

#include<iostream> 

using namespace std; 

//void PrintLines(char a, int b, int c) 
//void PrintLines((char) a, int b, int c) 
void PrintLines(int a, int b, int c) 
{ 
    for(int i = 0; i < c; i++) 
    { 

    for(int j = 0; j < b; j++) 
    { 
     //cout << (char) (a - 48); 
     //cout<< (char) a << '\n' ; 
     cout << a ; 
    } 

    cout << '\n' ; 
    }  

} 
+0

我檢查了該網頁,但我無法連接點。 http://www.cplusplus.com/doc/tutorial/typecasting/ –

+0

任何強制你聲明一個「打印」函數並使用int而不是char或std :: string的教授是不是你想要上課的教授。 –

回答

2

代碼當您使用cout <<int你得到一個數字輸出,而不是一個字符。您需要將參數類型化爲char

cout << (char) a; 

另一個問題是,你閱讀字符爲整數。如果您製作a a char而不是int,它將作爲單個字符讀取,並將在函數調用中自動上傳到int

0

使用static_cast!更好

cout << static_cast<char>(a); 

方式使用正確的投而不是C風格的強制轉型

相關問題