RT
我想陣列中輸入3人的5門功課成績,并利用子函式的方法,計算每門功課的平均值。編程如下
#include<stdio.h>
#include <stdlib.h>
void gkpj();
int main()
{
int a[3][5];
int i,j;
float sum=0,avg1=0,avg2=0;
int b[5],c[10];
printf("請分別輸入10個學生的語文、英語、數學、體育、計算機5門課程的成績:\n");
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);}
}
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{printf("%d ",a[i][j]);}
printf("\n");
}
gkpj(a[3][5]);
printf("%d",&b[5]);
}
void gkpj(int a[3][5]) //各科平均成績
{int k,t,b[5],avg1;
float sum;
for(k=0;k<3;k++)
{
for(t=0;t<5;t++)
{
sum=sum+a[k][t]; //*(*(avg1+i)+j)
avg1=sum/10;
b[k]=avg1;
}
// printf("%d ",a[2][2]);
}
// printf("\n");
return b[5];
}
編譯以后有錯誤
--------------------配置: mingw5 - CUI Debug, 編譯器型別: MinGW--------------------
檢查檔案依賴性...
正在編譯 C:\Users\Administrator\Desktop\C語言練習\1成績管理小.c...
[Warning] C:\Users\Administrator\Desktop\C語言練習\1成績管理小.c:41: warning: `return' with a value, in function returning void
[Warning] C:\Users\Administrator\Desktop\C語言練習\1成績管理小.c:42:2: warning: no newline at end of file
正在連接...
完成構建 1成績管理小: 0 個錯誤, 2 個警告
生成 C:\Users\Administrator\Desktop\C語言練習\1成績管理小.exe
想問下 1、如何宣告子函式 2、在子函式中呼叫main函式的陣列
uj5u.com熱心網友回復:
void gkpj(int a[3][5],int b[5]);
int main()
{
int a[3][5];
int i, j;
float sum = 0, avg1 = 0, avg2 = 0;
int b[5], c[10];
printf("請分別輸入10個學生的語文、英語、數學、體育、計算機5門課程的成績:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
gkpj(a,b);
printf("%d", &b[5]);
}
void gkpj(int a[3][5],int b[5]) // 各科平均成績
{
int k, t, avg1;
float sum;
for (k = 0; k < 3; k++)
{
for (t = 0; t < 5; t++)
{
sum = sum + a[k][t]; // *(*(avg1+i)+j)
avg1 = sum / 10;
b[k] = avg1;
}
// printf("%d ",a[2][2]);
}
// printf("\n");
return ;
}
uj5u.com熱心網友回復:
函式中對陣列引數的宣告,第一維長度是沒有意義的, 二樓函式中第一個引數a[3][5]和a[][5]是等價的,樓主在呼叫的時候,應該把陣列名傳進去。gkpj(a[3][5])應該改為gkpj(a)。陣列傳遞,傳的是地址,不是整個陣列,所以實參和形參中的陣列共有一個記憶體空間和資料
uj5u.com熱心網友回復:
自定義函式的回傳值是什么?沒有嗎?uj5u.com熱心網友回復:
那是個 程序 不是 函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/60119.html
標籤:基礎類
下一篇:vs2015平臺工具集
