close
 有三個題目想請教你ˊˇˋ可不可以教教我...我有心想學好這個了... 

1.設定一個陣列Arr[5],並以指標變數piVal指向陣列,當你輸入5個數字到陣列中,將其加總並求其平均至小數點以下第2位 

2.請用指標方式改寫CH05_1之一維陣列程式(須宣告一個指標變數piVal來指向該陣列第一個元素的位址) 

3.請設定一個指標陣列ptr1,計算以下結果 4+9+14+19....+99=1030



我先回答你第一題 , 其他如果有回答我會再更新這篇的內容 (2010.02.27)  1.設定一個陣列Arr[5],並以指標變數piVal指向陣列,當你輸入5個數字到陣列中,將其加總並求其平均至小數點以下第2位 

#include <stdlib.h>
#include <iostream>
#include <iomanip>

using namespace std;

int main(int argc, char *argv[]){

  float Arr[5]; // 宣告陣列
  float *piVal; // 宣告指標
  float sum; // 和
  float avg; // 平均
  piVal = &Arr[0]; // 將指標指向陣列
  int a;
  cout << "please give me '5' value:";
  int i;
  // 開始輸入 Arr[i]
  for(i=0;i<5;++i){
   cout << "please give me Arr["<<i<<"]:";   
   cin >> Arr[i] ;

   }
 // 輸入結束
   sum = 0;
// 開始計算和 , 這邊是用指標計算
// 因為指標指到的是Arr , 所以會用到剛剛輸入的那五個數字
// 這也是題目所要求的 如果沒有這樣寫並不能符合題目的要求
 
   for(i=0;i<5;++i){
   sum+= *(piVal+i);
   }
// 計算結束
// 計算平均
   avg = sum/5;
// 顯示剛剛計算的結果
   cout << "Sum: " <<fixed<<setprecision(2)<< sum << endl;
   cout << "Average: "  <<fixed<<setprecision(2)<< avg << endl;


return 0;
}

說明:
#include <iomanip>
我 include iomanip 是因為我要用 setprecision這個 function , 這個函式的作用是限制所顯示的位數 ,
加 fixed的話這個函式就能限定小數點後要取幾位

指標的宣告是   :    變數型態   星號 變數名稱

 piVal = &Arr[0];   
這個就是把指標指向陣列的第一個元素 , 因為陣列的第一個元素就是 index = 0
在陣列前面加 & 的意思就是要取址
如果你在這一行下面再加上 cout << piVal 你會發現他會印出 0x7fff854c7ce0
這是這個陣列存放的位置 這個指標指到了這個位置
如果我們想印出的是這個位置的值的話 , 就加個 *
cout << piVal  會印出位置
cout << *piVal  會印出這個位置的值

因為我們輸入了 Arr[0] Arr[1] ... Arr[4] 五個數字
如果改用指標表示的話 ,
就是 *piVal , *(piVal+1) ... *(piVal+4)


如果你看得懂的話應該會寫第二題
如果不懂的話你再問問看!!!
 
arrow
arrow
    全站熱搜

    偽新聞新聞雜誌 發表在 痞客邦 留言(5) 人氣()