C语言上机实验

  1. 1!+2!+3!+…+n!
    要求使用函数嵌套调用来实现。

2.已知数组中存放有n个整数,试通过两种方式编程实现该函数–找出并输出最小数和最大数的函数,函数原型:
方式一:int * FindMaxMin1(int a[], int n);
方式二:void FindMaxMin2(int a[],int n,int *max,int *min)
其中a是存放有数据的数组,n为数组大小

3.利用指针实现串比较操作,函数原型如下:
int MyStrCmp(char *sa, char *sb);
返回值:0—两串相等,1 — sa比sb大,-1 — sa比sb小

4.编写一个将n个整数用选择法按由小到大的顺序排序的函数void sort(int array[], int n),在主函数中调用该函数实现排序。

5.编写一个求3个学生的各科平均成绩和总成绩的程序,每个学生有4科成绩,学生成绩存放在a数组中,函数原型:
void Ave_Sum(float array[][4], int n, int *ave, int *sum),n为学生数。
其中a数组的矩阵表示为。


```c
#include<stdio.h>
#pragma warning(disable:4996)
#define N 9
#define A 12
#include<assert.h>
int power(int n)
{
int i;
int p = 1;
for (i = 1; i <= n; i++)
p = p * i;
return p;
}
int sum(int m)
{
int i;
int s = 0;
for (i = 1; i <= m; i++)
s = s + power(i);
return s;
}
void zuoye1()
{
int i;
int result;
result = sum(N);
for(i = 1; i <= N-1; i++)
printf("%d!+", i); 
printf("%d!=%1d\n", N,result);

}
int *FindMaxMin1(int a[],int n)
{
int max,min;
max = min = a[0];
int i;
for(i = 1; i <n; i++)
{
if (a[i] > max)
max = a[i];
else if (a[i] < min)
min = a[i];
}
printf("%d %d", max, min);
return a;
}
void zuoye2()
{
int i,f;
int a[5];
for (i = 0; i < 5; i++)
scanf("%d", &a[i]);
f = *FindMaxMin1(a, 5);

}

void FindMaxMin2(int a[], int n, int *max, int *min)
{
int i;
//int *b;
*min = *max = a[0];
for (i = 0; i < n; i++)
{
if (a[i] < *min)
*min = a[i];
if (a[i] > *max)
*max = a[i];
}
}

void zuoye3()
{
int a[5] = { 1,2,3,45,7 };
int max, min;
   FindMaxMin2(a, 5, &max, &min);
   printf("%d %d", min, max);
}

int mystrcmp(char *sa, char *sb)
{
assert((sa != NULL) && (sb != NULL));
while (*sa==*sb)
{
if (*sb == 0)
return 0;
sa++;
sb++;
}
if(*sa>*sb)
{
return 1;
}
else {
return -1;
}
7
}
void zuoye4()
{
char *a = (char*)"nihao";
char *b = (char*)"wohaoa";
printf("%d\n", mystrcmp(a, b));
}

int sort(int array[], int n)
{
 // array[7] = { 3,8,9,4,5,7,87 };
int i, j, m, t;
for (i = 0; i < 7 - 1; i++)
{
m = i;
for (j = i + 1; j < 7; j++)
if (array[j] < array[m])
m = j;
if (m != i)
{
t = array[i], array[i] = array[m], array[m] = t;
}
}
printf("选择排列:\n");
for (i = 0; i < 7; i++)
printf("%4d", array[i]);
printf("\n");
return  array[0];
}
void zuoye5()
{
int a[7] = { 8,0,6,4,77,9,2 };
int b;
b = sort(a, 7);
}
void Ave_Sum(int array[][4], int n, int *ave, int *sum)
{
int i = 0;
sum[0] = 0; ave[0] = 0;
for (i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
sum[i] = sum[i] + array[i][j];
}
ave[i] = sum[i] / 4;
}

}
void zuoye6()
{
int ave[3] = { 0 }, sum[3] = { 0 };
int array[][4] = { 65,97,70,80,80,87,90,81,90,99,100,98 };
Ave_Sum(array, A, ave, sum);
printf("%d %d\n", ave[0], sum[0]);
printf("%d %d\n", ave[1], sum[1]);
printf("%d %d\n", ave[2], sum[2]);

}
int main()
{
//zuoye1();
//zuoye2();
//zuoye3();
//zuoye4();
//zuoye5();
zuoye6();
return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值