廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3549 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
p432124 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x15
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][求助] 有關C++的題目 哪裡程式有誤呢?【已解決】
剛才我打了一些的程式... 不知道哪裡有誤!

麻煩大家可不可以幫我看看哪裡程式有誤呢?

1.設計一個函式 void ClearStr(char **Str),將傳入的字串 *Str(使用指標傳送引數)內容清空。
void ClearStr (char **Str)
引數:*str為一個字串, **Str為一個指向字串的指標。
功能:將*Str內容設為空字串。

#include <iostream>
using namespace std;
int main(void)
{
  char *strl="Hello World!";
  cout << " ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被p432124在2009-01-02 02:36重新編輯 ]



獻花 x0 回到頂端 [樓 主] From:臺灣中華電信HINET | Posted:2008-12-29 22:06 |
accc0000
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x6
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

第一個問題:
#include <iostream>
using namespace std;
int main(void)
{
char *strl="Hello World!";
上面一行,編譯器會做如下動作:
1. 設定 Hello World! 為一常數字串
2. 為該字串保留夠用的記憶體並儲存,本例來說"Hello World!"+'\0' = 13
3. 把記憶體起始位置存入變數,即strl
基於常數不能被改變的特性,當然也不能清空
若改成 char strl[]="Hello World!"; 則可以
因為此時 strl 是一個字元陣列,長度13
**********************************

cout << "原始的字串為:" << strl << endl;
ClearStr(&strl);
上面一行,看得出來你要傳入一個位址
陣列名稱或去掉*字號的指標名稱,本身就是個位址
因此應改成ClearStr(strl);
**********************************


cout << "清除後字串為:" << strl << endl;
return 0;
}
綜觀您的目的,可以改成如下:
#include <iostream>
using namespace std;
void ClearStr(char *str)
{
for(int i=0;i < strlen(str) ; i++)
  *(str+i) = '\0';
/*論壇會把字吃掉,上一行的兩個單引號之間是一個反斜線跟一個數字0*/
}
int main(void)
{
char strl[]="Hello World!";
cout << "原始的字串為:" << strl << endl;
ClearStr(strl);
cout << "清除後字串為:" << strl << endl;
return 0;
}
不過意義不大
設成空字串只需用strl[0] = '\0' 或 *strl = '\0'即可
/*字被吃掉,同上*/

第二個問題:
不太懂您的意思
如果只是要把相對位置相加,可如下
#include <iostream>
using namespace std;
int main(void)
{
int A[3][4]={{1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}};
int B[3][4]={{2,4,6,8},
    {10,12,14,16},
    {18,20,22,24}};
int C[3][4]={0};
int i,j;

/********************加入程式碼,完成C=A+B**********************/
for (i=0;i<3;i++)
for (j=0;j<4;j++)
  C[j] = A[j]+B[j];
/*論壇會把字吃掉,上一行為'C'+'['+'i'+']'+'['+'j'+']'+ '='+'A'+'['+'i'+']'+'['+'j'+']'+'B'+'['+'i'+']'+'['+'j'+']'+';'*/
/************************************************************/
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
// cout << "C[" << i+1 << "," << j+1 << "]=" << C[j] << "\t";
  cout << "C[" << i << "][" << j << "]=" << C[j] << "\t";//字被吃掉'C'+'['+'i'+']'+'['+'j'+']'
}
cout << "\n";
}
system("PAUSE");
return 0;
}

有反斜線的地方好像都會被吃掉,有人可以教我如何避免嗎?

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: 因為您的參與,讓程式設計更容易!!


獻花 x0 回到頂端 [1 樓] From:臺灣數位聯合 | Posted:2008-12-30 20:15 |
teldeanmac85 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x21
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

第2題直接在迴圈裡面做就OK了~加2行上去


複製程式
int main(int argc, char* argv[])
{
                int A[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
                int B[3][4]={{2,4,6,8},{10,12,14,16},{18,20,22,24}};
                int C[3][4]={0};
                int i,j;

                for(i=0;i<3;i++){
                              for(j=0;j<4;j++){
                                        C[i][j] = A[i][j] + B[i][j]; 
                                        cout << "C[" << i+1 << "," << j+1 << "]=" << C[i][j] << "\t";
                              }
                              cout << "\n";
                }


       return 0;
}

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: 因為您的參與,讓程式設計更容易!!


獻花 x0 回到頂端 [2 樓] From:臺灣新世紀 | Posted:2008-12-31 09:18 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.052534 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言