20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises23
P241
源始下载的代码
#include <stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int arrA[5], arrB[8];
printf("请输入5个数:");
scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
printf("请输入8个数:");
scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
printf("\narrA = ");
______________________________ /* userCode(<30字符): 调用函数输出arrA的所有元素 */
printf("\narrB = ");
______________________________ /* userCode(<30字符): 调用函数输出arrB的所有元素 */
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改以后的代码
#include <stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
void printfArr(int arr[], int cnt);
int main(void)
{
int arrA[5], arrB[8];
printf("请输入5个数:");
scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
printf("请输入8个数:");
scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
printf("\narrA = ");
printfArr(arrA, 5); /* userCode(<30字符): 调用函数输出arrA的所有元素 */
printf("\narrB = ");
printfArr(arrB, 8); /* userCode(<30字符): 调用函数输出arrB的所有元素 */
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void printfArr(int arr[], int cnt)
{
int i;
for ( i = 0; i < cnt; i++)
{
printf("%d ", arr[i]);
}
}
P243
源始下载的代码
#include <stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int arrA[5], arrB[8];
float avgA, avgB;
printf("请输入5个数:");
scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
printf("请输入8个数:");
scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
______________________________ /* userCode(<30字符): 调用函数计算arrA所有元素的平均值 */
printf("\nAvg(arrA) = %.1f", avgA);
______________________________ /* userCode(<30字符): 调用函数计算arrB所有元素的平均值 */
printf("\nAvg(arrB) = %.1f\n", avgB);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改以后的代码
#include <stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
float getAvg(int arr[], int cnt);
int main(void)
{
int arrA[5], arrB[8];
float avgA, avgB;
printf("请输入5个数:");
scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
printf("请输入8个数:");
scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
avgA = getAvg(arrA, 5); /* userCode(<30字符): 调用函数计算arrA所有元素的平均值 */
printf("\nAvg(arrA) = %.1f", avgA);
avgB = getAvg(arrB, 8); /* userCode(<30字符): 调用函数计算arrB所有元素的平均值 */
printf("\nAvg(arrB) = %.1f\n", avgB);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
float getAvg(int arr[], int cnt)
{
float avg;
float sum = 0;
int i;
// 求和
for ( i = 0; i < cnt; i++)
{
sum += (float)arr[i];
}
// 求平均
avg = sum / cnt;
return avg;
}
P244
源始下载的代码
#include <stdio.h>
/* userCode(<70字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int arrA[5], arrB[8], searchVal, positionA, positionB;
printf("请输入5个数:");
scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
printf("请输入8个数:");
scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
printf("请输入一个欲查找的数:");
scanf("%d", &searchVal);
______________________________ /* userCode(<50字符): 调用函数查找searchVal在arrA中的下标 */
if (-1 == positionA)
{
printf("\narrA: not Find!");
}
else
{
printf("\narrA: position = %d", positionA);
}
______________________________ /* userCode(<50字符): 调用函数查找searchVal在arrB中的下标 */
if (-1 == positionB)
{
printf("\narrB: not Find!\n");
}
else
{
printf("\narrB: position = %d\n", positionB);
}
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改以后的代码
#include <stdio.h>
/* userCode(<70字符): 自定义函数之原型声明 */
int indexArr(int arr[], int cnt, int search);
int main(void)
{
int arrA[5], arrB[8], searchVal, positionA, positionB;
printf("请输入5个数:");
scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
printf("请输入8个数:");
scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
printf("请输入一个欲查找的数:");
scanf("%d", &searchVal);
positionA = indexArr(arrA, 5, searchVal); /* userCode(<50字符): 调用函数查找searchVal在arrA中的下标 */
if (-1 == positionA)
{
printf("\narrA: not Find!");
}
else
{
printf("\narrA: position = %d", positionA);
}
positionB = indexArr(arrB, 8, searchVal); /* userCode(<50字符): 调用函数查找searchVal在arrB中的下标 */
if (-1 == positionB)
{
printf("\narrB: not Find!\n");
}
else
{
printf("\narrB: position = %d\n", positionB);
}
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int indexArr(int arr[], int cnt, int search)
{
int result = -1;
int i;
for (i = 0; i < cnt; i++)
{
if (search == arr[i]) // (不考虑在数组中存在多个searchVal的情况),只要找一个,就可以结束搜索
{
result = i;
break;
}
}
return result;
}
P814
源始下载的代码
#include <stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int num[3][3], i, j, sum;
printf("Please input the 3x3 Matrix:\n");
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
scanf("%d", &num[i][j]);
}
}
______________________________ /* userCode(<50字符): 调用函数计算矩阵所有元素之和 */
printf("\nsum=%d\n", sum);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改以后的代码
#include <stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
int getSumArr(int num[][3], int cnt);
int main(void)
{
int num[3][3], i, j, sum;
printf("Please input the 3x3 Matrix:\n");
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
scanf("%d", &num[i][j]);
}
}
sum = getSumArr(num, 3); /* userCode(<50字符): 调用函数计算矩阵所有元素之和 */
printf("\nsum=%d\n", sum);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int getSumArr(int num[][3], int cnt)
{
int sum = 0;
int i, j;
// 完成所有元素累加求和
for ( i = 0; i < cnt; i++)
{
for ( j = 0; j < cnt; j++)
{
sum += num[i][j];
}
}
return sum;
}
P823
源始下载的代码
#include <stdio.h>
#define MAX 20
/* userCode(<80字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int arrayA[MAX][MAX], arrayB[MAX][MAX], i, j, m;
printf("Please input m: ");
scanf("%d", &m);
printf("Please input arrayA:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
scanf("%d", &arrayA[i][j]);
}
}
______________________________ /* userCode(<60字符): 调用函数实现数组内容变换 */
printf("\nafter rotate:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
printf("%6d", arrayB[i][j]);
}
putchar('\n');
}
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改以后的代码
#include <stdio.h>
#define MAX 20
/* userCode(<80字符): 自定义函数之原型声明 */
void rotate(int arrA[][MAX], int arrB[][MAX], int m);
int main(void)
{
int arrayA[MAX][MAX], arrayB[MAX][MAX], i, j, m;
printf("Please input m: ");
scanf("%d", &m);
printf("Please input arrayA:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
scanf("%d", &arrayA[i][j]);
}
}
rotate(arrayA, arrayB, m); /* userCode(<60字符): 调用函数实现数组内容变换 */
printf("\nafter rotate:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
printf("%6d", arrayB[i][j]);
}
putchar('\n');
}
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void rotate(int arrA[][MAX], int arrB[][MAX], int m)
{
int i, j;
// 先处理其它列的元素,不论怎么处理,矩阵A没有变化,只是在完成对矩阵B元素赋值
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
arrB[i][j] = arrA[i][j];
}
}
// 首列
for ( i = 0; i < m; i++)
{
arrB[i][0] = arrA[m-1][i];
}
// 最后一列
for ( i = 0; i < m; i++)
{
arrB[i][m-1] = arrA[0][i];
}
}