2017-06-29 46 views
0

您好的平均所有我有該練習語言C.
的鍛鍊是一個問題:
給定一個矩陣寫一個函數是:
A)計算並返回元素的總和。
乙)計算並返回第i行的平均值
我做了我自己的程序,但我有很多錯誤。
我的程序是:總和元件,並計算第i個線

#include <stdio.h> 
#include <stdlib.h> 

void main(){ 
int n=10; 
int m=10; 
int i; 
int j; 
int mat [i][j]; 
int sum=0; 
for (i=0;i<n;i++){ 
    for (j=0; j<m;j++) 
     sum=sum+mat[i][j];} 
printf("The sum of all elements of matrix is:%d",sum); 
somma=0; 
for (j=0;j<m;i++){ 
    sum=sum+mat[i][j]; 
    sum=sum/m 
     printf("The average of i-th line is:%d",sum); 
} 
} 

我認爲我必須把scanf函數的地方,但我不知道在哪裏。 我希望你能幫助我 謝謝!

+0

C沒有程序:)看來你需要編寫兩個獨立的函數。 –

+0

@VladfromMoscow [tag:c]有程序:'void foo(...)' – LPs

+0

你能告訴我嗎?明天我有考試ç_ç –

回答

1

您聲明矩陣不確定的大小

int mat [i][j]; 

其中ij被uninitizlized。

你可能想

int mat [n][m]; 

而且你的矩陣應該值inizialized,否則你會得到堆棧垃圾的總和。

最後,一個可能的解決方案是

#include <stdio.h> 

int main(void) 
{ 
    int n = 2; 
    int m = 2; 
    int i; 
    int j; 
    int mat[n][m]; 
    int sum = 0; 

    for (i = 0; i < n; i++) 
    { 
     for (j = 0; j < m; j++) 
     { 
      printf("Insert value of mat[%d][%d]: ", i, j); 
      scanf("%d", &mat[i][j]); 
     } 
    } 

    for (i = 0; i < n; i++) 
    { 
     for (j = 0; j < m; j++) 
     { 
      sum = sum + mat[i][j]; 
     } 
    } 

    printf("The sum of all elements of matrix is: %d\n", sum); 

    for (i = 0; i < n; i++) 
    { 
     sum = 0; 
     for (j = 0; j < m; j++) 
     { 
      sum = sum + mat[i][j]; 
     } 
     sum = sum/m; 
     printf("The average of line %d is: %d\n", i, sum); 
    } 
} 

正如你看到的,我改變了平均計算:

  1. 首先你寫一個j循環遞增i
  2. 你必須循環所有行,所以你必須添加一個包含行的循環
  3. 總和必須在每次計算行平均值時重置

注意到平均值是用整數計算的,所以不會有小數點。

+0

我把「int mat [n] [m]」但是我又有錯誤 –

+0

你添加了init值嗎?如圖所示,你是否改變了平均值?在等待假釋海里讓我們互動續集? – LPs

+0

@PietroDimichele你得到了什麼錯誤信息?你使用C99或更高版本的C編譯器嗎? – BLUEPIXY