浙江師范大學c語言函數實驗答案
1. c語言程序設計蘇小紅版第七章課後實驗答案
不知道你說的是不是這一次實驗
2.2.7實驗7:二維數組和函數綜合編程練習
成績排名次
某班期末考試科目為數學(MT)、英語(EN)和物理(PH),有最多不超過30人參加考試。考試後要求:
(1)計算每個學生的總分和平均分;
(2)按總分成績由高到低排出成績的名次;
(3)列印出名次表,表格內包括學生編號、各科分數、總分和平均分;
(4)任意輸入一個學號,能夠查找出該學生在班級中的排名及其考試分數。
【思考題】請讀者思考如下問題。
①如果增加一個要求:要求按照學生的學號由小到大對學號、成績等信息進行排序,那麼程序如何修改呢?
②如果要求程序運行後先列印出一個菜單,提示用戶選擇:成績錄入、成績排序、成績查找,在選擇某項功能後執行相應的操作,那麼程序如何修改呢?
答案
#include <stdio.h>
#define STU 30
#define COURSE 3
void Input(long num[],int score[][COURSE],int n);
void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);
void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);
void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);
int Search(long num[], int n, long x);
main()
{
int n, score[STU][COURSE], sum[STU], pos;
long num[STU], x;
float aver[STU];
printf("Please enter the total number of the students(n<=30):");
scanf("%d", &n); /*輸入參加考試的學生人數*/
printf("Enter No. and score as: MT EN PH ");
Input(num, score, n); /*輸入學生成績*/
GetSumAver(score, n, sum, aver); /*計算總分和平均分*/
printf("Before sort: ");
Print(num, score, n, sum, aver);
Sort(num, score, n, sum, aver); /*排名次*/
printf("After sort: ");
Print(num, score, n, sum, aver);
printf("Please enter searching number:");
scanf("%ld", &x); /*以長整型格式輸入待查找學生的學號*/
pos = Search(num, n, x); /*名次查詢*/
if (pos != -1)
{
printf("position: NO MT EN PH SUM AVER ");
printf("%8d %4ld %4d %4d %4d %5d %5.0f ",
pos+1,num[pos], score[pos][0],score[pos][1],
score[pos][2], sum[pos],aver[pos]);
}
else
{
printf("Not found! ");
}
}
/* 函數功能:輸入某班學生期末考試三門課程成績
函數參數:長整型數組num,存放學生學號
整型數組score,存放學生成績
整型變數n,存放學生人數
函數返回值:無
*/
void Input(long num[], int score[][COURSE], int n)
{
int i, j;
for (i=0; i<n; i++)
{
scanf("%ld", &num[i]);
for (j=0; j<COURSE; j++)
{
scanf("%d", &score[i][j]);
}
}
}
/* 函數功能:計算每個學生的總分和平均分
函數參數: 整型數組score,存放學生成績
整型變數n,存放學生人數
整型數組sum,計算得到的每個學生的總分
實型數組aver,計算得到的每個學生的平均分
函數返回值:無
*/
void GetSumAver(int score[][COURSE], int n, int sum[], float aver[])
{
int i, j;
for (i=0; i<n; i++)
{
sum[i] = 0;
for (j=0; j<COURSE; j++)
{
sum[i] = sum[i] + score[i][j];
}
aver[i] = (float)sum[i] / COURSE;
}
}
/* 函數功能:按總分成績由高到低排出成績的名次
函數參數:長整型數組num,存放學生學號
整型數組score,存放學生成績
整型變數n,存放學生人數
整型數組sum,存放每個學生的總分
實型數組aver,存放每個學生的平均分
函數返回值:無
*/
void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[])
{
int i, j, k, m;
int temp1;
long temp2;
float temp3;
for (i=0; i<n-1; i++)
{
k = i;
for (j=i+1; j<n; j++)
{
if (sum[j] > sum[k]) k = j;
}
if (k != i)
{
temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;
temp2 = num[k]; num[k] = num[i]; num[i] = temp2;
temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;
for (m=0; m<COURSE; m++)
{
temp1 = score[k][m];
score[k][m] = score[i][m];
score[i][m] = temp1;
}
}
}
}
/* 函數功能: 列印名次表,表格內包括學生編號、各科分數、總分和平均分
函數參數: 長整型數組num,存放學生學號
整型數組score,存放學生成績
整型變數n,存放學生人數
整型數組sum,存放每個學生的總分
實型數組aver,存放每個學生的平均分
函數返回值:無
*/
void Print(long num[], int score[][COURSE], int n,
int sum[], float aver[])
{
int i, j;
printf(" NO | MT EN PH SUM AVER ");
printf("---------------------------------------------------- ");
for (i=0; i<n; i++)
{
printf("%ld | ", num[i]);
for (j=0; j<COURSE; j++)
{
printf("%4d ", score[i][j]);
}
printf("%5d %5.0f ", sum[i], aver[i]);
}
}
/* 函數功能:在學號數組中順序查找學生的學號
函數參數:長整型數組num,存放學生學號
整型變數n,存放學生人數
長整型變數x,存放待查找學生的學號
函數返回值:找到時,返回學生學號在學號數組中的下標位置,否則返回值-1
*/
int Search(long num[], int n, long x)
{
int i;
for (i=0; i<n; i++)
{
if (num[i] == x) return(i);
}
return (-1);
}
2. 跪求C語言程序設計課後習題答案及C語言程序設計習題解答與實驗指導答案。
第一部分習題解答
第1章引言習題解答1
第2章基本的程序語句習題解答2
第3章程序的簡單演算法制定習題解答6
第4章分支結構習題解答11
第5章循環結構習題解答19
第6章函數和宏定義習題解答30
第7章數組習題解答38
第8章指針習題解答48
第9章構造數據類型習題解答56
第10章文件操作習題解答65
第11章位運算習題解答73
第二部分實驗
第1章引言實驗79
1.1目的和要求79
1.2實驗練習79
1.3綜合練習83
第2章基本的程序語句實驗83
2.1目的和要求83
2.2相關知識83
2.3實驗練習84
2.4綜合練習90
第3章程序的簡單演算法制定實驗91
3.1目的和要求91
3.2實驗練習91
第4章分支結構實驗96
4.1目的和要求96
4.2相關知識96
4.3實驗練習97
4.4綜合練習105
第5章循環結構實驗107
5.1目的和要求107
5.2相關知識107
5.3實驗練習108
5.4綜合練習118
第6章函數和宏定義實驗120
6.1目的和要求120
6.2相關知識121
6.3實驗練習122
6.4綜合練習126
第7章數組實驗127
7.1目的和要求127
7.2相關知識128
7.3實驗練習129
7.4綜合練習134
第8章指針實驗136
8.1目的和要求136
8.2相關知識136
8.3實驗練習137
8.4綜合練習144
第9章構造數據類型實驗145
9.1目的和要求145
9.2相關知識145
9.3實驗練習147
9.4綜合練習153
第10章文件操作實驗155
10.1目的和要求155
10.2相關知識156
10.3實驗練習157
10.4綜合練習164
第11章位運算實驗165
11.1目的和要求165
11.2相關知識165
11.3實驗練習166
11.4綜合練習168
第三部分其他
第12章集成開發環境介紹170
12.1Turbo C的安裝及使用170
12.1.1Turbo C的安裝170
12.1.2Turbo C簡介170
12.1.3Turbo C的使用173
12.2Borland C++的安裝及使用175
12.2.1Borland C++的安裝175
12.2.2編輯、編譯和運行程序175
第13章常見編譯錯誤信息176
13.1致命錯誤177
13.2一般錯誤177
13.3警告185
