纯纯新人,大佬捞捞。
实验题目(1)【见实验教材实验五的题目1】:编写程序exp5_1.c,在主函数中定义一维数组int array[10],自定义以下函数:
1)输入数组元素;
2)输出数组元素;
3)求数组元素平均值;
4)输出数组元素最大值;
5)输出数组元素最小值;
6)查找某数值元素是否存在(若存在,请输出下标);
7)给数组元素排序。
要求在主函数中对各子函数进行调用和测试。
#include <stdio.h>
void input(int a[],int n)//输入函数
{
int i;
for (i = 0; i < n; i++)
scanf_s("%d", &a[i]);
}
void output(int a[], int n)//输出函数
{
int i;
for (i = 0; i < n; i++)
printf("%d", a[i]);
printf("\n");
}
int max(int a[], int n)//最大值
{
int max = 0 , i = 0;
max = a[i];
for (i = 0; i < n; i++)
{
if (a[i] >= max)
max = a[i];
}
printf("%d", max);
return max;
}
int min(int a[], int n)//最小值
{
int min = 0, i = 0;
min = a[i];
for (i = 0; i < n; i++)
{
if (a[i] <= min)
min = a[i];
}
printf("%d", min);
return min;
}
int find(int a[], int n,int b)//查找
{
int judge = 0;
int i = 0;
while (i < n)
{
if (a[i] == b)
break;
i++;
}
return i;
}
double ave(int a[],int n)//平均值
{
int sum = 0,i;
double ave;
for (i = 0; i < n; i++)
sum += a[i];
ave = sum * 1.0 / n;
return ave;
}
void Bubble(int a[],int n)//排序
{
int i, j, k;
for (i = 0; i < n - 1; i++)
{
for (j = n - 1; j > i; j--)
if (a[j] < a[j - 1])
{
k = a[j - 1];
a[j - 1] = a[j];
a[j] = k;
}
}
}
int main()
{
int array[10] = { 0 };
int n,judge,b=0;
double a = 0;
do
{
printf("输入个数");
scanf_s("%d",&n);
} while (n <= 0 || n > 10);
printf("输入元素");
input(array,n);
output(array, n);
printf("输入查找的数");
scanf_s("%d", &b);
judge = find(array, n, b);
if (judge < n)
printf("查找的数%d在里面", b);
else
printf("没有");
printf("\n");
a=ave(array, n);
printf("平均数为%f\n", a);
Bubble(array, n);
output(array, n);
return 0;
}
实验题目(2)【见实验教材实验五的题目2】:编写程序exp5_2.c,定义一个3*3的矩阵,要求实现:
- 读入矩阵;
- 输出矩阵;
- 矩阵转置;
- 输出矩阵主对角线元素之和。
所有功能均采用子函数实现。
#include <stdio.h>
#define ROW 3
#define COL 3
int input(int a[ROW][COL])//读入数组
{
int i = 0, j = 0;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
scanf_s("%3d", &a[i][j]);
}
}
return (a[i][j]);
}
int output(int a[ROW][COL])//输出数组
{
int i, j;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}
int zhuan(int a[ROW][COL])//转置矩阵
{
int b[ROW][COL], i, j;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
b[i][j] = a[j][i];
printf("%3d", b[i][j]);
}
printf("\n");
}
return a[j][i];
}
int he(int a[ROW][COL])//对角线之和
{
int i,sum=0;
for (i = 0; i < ROW; i++)
{
sum += a[i][i];
}
return sum;
}
int main()
{
int array[ROW][COL] = { 0 };
printf("请输入数字,总个数小于9\n");
input(array);
printf("\n");
output(array);
printf("\n");
zhuan(array);
printf("\n");
printf("%5d",he(array));
printf("\n");
return 0;
}
实验题目(3)【见实验教材实验五的题目4】:编写程序exp5_4.c,输出一个N阶螺旋方阵。如图1所示:
|
1 |
2 |
3 |
4 |
|
12 |
13 |
14 |
5 |
|
11 |
16 |
15 |
6 |
|
10 |
9 |
8 |
7 |
图 1 N=4 时的方阵
#include<stdio.h>
int main()
{
int i, j, k, w = 1, n;
int a[20][20] = { 1 };
scanf_s("%d", &n);
for (k = 0; k < n / 2; k++)
{
for (i = k; i <= n - 1 - k; i++)
a[k][i] = w++;
for (j = k + 1; j < n - 1 - k; j++)
a[j][n - 1 - k] = w++;
for (i = n - 1 - k; i > k; i--)
a[n - 1 - k][i] = w++;
for (j = n - 1 - k; j > k; j--)
a[j][k] = w++;
if (n % 2 == 1)
a[(n - 1) / 2][(n - 1) / 2] = w;
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%5d", a[i][j]);
printf("\n");
}
return 0;
}
&spm=1001.2101.3001.11974&articleId=128106900&d=1&t=3&u=5ddd52008d6244dead17fdaa3c7a5143)
671


&spm=1001.2101.3001.11976&articleId=128106900&d=1&t=3&u=01f8489935dd42919a7c2ae1cb2e2d0e)

被折叠的 条评论
为什么被折叠?



