1.函数1:数列求和
请输入两个整型数m和n(注:n>m),请编写函数sum(注意:函数的原型如下:int sum(int m,int n)),计算m+(m+1)+(m+2)+...+(n-1)+n的值。并在main函数中调用它。
#include<stdio.h>
//请输入两个整型数m和n(注:n>=m),请编写函数sum
//(注意:函数的原型如下:int sum(int m,int n)),
//计算m+(m+1)+(m+2)+...+(n-1)+n的值。并在main函数中调用它。
int sum(int m, int n)
{
int i = 0;
int num = 0;
for (i = m; i <= n; i++)
{
num += i;
}
return num;
}
int main()
{
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int ret = sum(m, n);
printf("%d", ret);
return 0;
}
2.函数2:求兀的值
编写函数,自己选用一种方法计算兀的近似值,并在main函数中调用它。请输出兀的值(要求保留小数点后2位)
【问题描述】根据公式π/4=1-1/3+1/5-1/7+...... ,直到最后一项小于10^-6。计算并输出π的值。
【输入形式】无输入
【输出形式】π的值
【输出样例】3.14159
#include<iostream>
#include<cmath>
#include<stdio.h>
//using namespace std;
int main()
{
int i = 0;
double sum = 0;
int flag = -1;
for (i = 1; fabs(1.0 / i )>1e-6; i+=2)
{
flag = -flag;
sum +=( 1.0 / i)*flag;
}
sum = sum*4;
printf("%.2lf", sum);
return 0;
}
3.函数3:成绩
定义函数f,实现对某班4门课程成绩分别求出平均分,函数原型如下:void f(int score[][4],int n,double aver[]),其中score为四门课程的成绩,n为学生人数,aver为四门课的平均分。并在main函数中调用它。请在主函数中输入学生人数及四门课程成绩;并在主函数中输出score及aver(aver中的数组元素均保留一位小数)
#include<stdio.h>
//定义函数f,实现对某班4门课程成绩分别求出平均分,函数原型如下:
//void f(int score[][4], int n, double aver[]),
//其中score为四门课程的成绩,n为学生人数,aver为四门课的平均分。并在main函数中调用它。
//请在主函数中输入学生人数及四门课程成绩;
//并在主函数中输出数组score及aver(aver中的数组元素均保留一位小数)
void f(int score[10][4], int n, double aver[4])
{
int i = 0;
int ti = 0;
static int j = 0;
int s = 0;
for (s = 0; s < 4; s++)
{
int sum = 0;
for (i = 0; i <= n; i++)
{
j = ti;
sum += score[i][j];
j += 4;
}
ti++;
aver[s] = (double)sum / n;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int score[10][4] = { 0 };
//输入四门课的成绩
int i = 0;
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
scanf("%d", &score[i][j]);
}
}
double aver[4] = { 0 };
//求每一门课的平均分数
f(score, n, aver);
//打印
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("%d ", score[i][j]);
}
printf("\n");
}
for (i = 0; i < 4; i++)
{
printf("%.1lf ", aver[i]);
}
return 0;
}
4.函数4:进制转换
定义函数bin,实现将一个十进制整数n转换成二进制数s(注意:s为字符串),函数原型为void bin(int n,char s[]);并在main函数中调用它。请在主函数中输入十进制整数,并在主函数中输出字符串s
#include<iostream>
using namespace std;
#include<stdio.h>
//请使用函数改写数组题目9。定义函数bin,
//实现将一个十进制整数n转换成二进制数s(注意:s为字符串),函数原型为:void bin(int n,char s[]);,
//并在main函数中调用它。请在主函数中输入十进制整数,并在主函数中输出字符串s
int i = 0;
void bin(int n, char s[])
{
while (n)
{
s[i] = n % 2;
n /= 2;
i++;
}
}
int main()
{
int n = 0;
char s[1000] = { 0 };
scanf("%d", &n);
bin(n, s);
int j = 0;
for (j = i-1; j >= 0; j--)
{
printf("%d", s[j]);
}
//逆序打印s
}
5.函数5:求最大值与最小值
定义函数f,实现求出一批整数(最多10个)的最大值与最小值,函数的原型为void f(int a[],int n,int &max,int &min),其中max和min分别存储a的最大值和最小值。并在main函数中调用它。请在主函数中输入整型数的个数与这批整型数;并在主函数中输出这批数的最大值和最小值。
#include<iostream>
using namespace std;
#include<stdio.h>
//定义函数f,实现求出一批整型数(最多10个)的最大值与最小值,函数的原型为
//void f(int a[], int n, int& max, int& min)
//其中max和min分别存储a的最大值和最小值。并在main函数中调用它。
//请在主函数中输入整型数的个数与这批整型数;并在主函数中输出这批数的最大值与最小值。
void f(int arr[], int n, int& pmax, int& pmin)
{
int i = 0;
pmax = arr[0];
pmin = arr[n - 1];
for (i = 1; i < n; i++)
{
if (pmax < arr[i])
pmax = arr[i];
if (pmin > arr[i])
pmin = arr[i];
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int arr[10] = { 0 };
int i = 0;
int max;
int min;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
f(arr, n, max, min);
printf("%d %d", max, min);
return 0;
}
6.函数6:函数重载
请分别编写两个函数,利用函数重载,分别求出两个整型数及三个double类型数的最大值。并在main函数中调用它。
#include<stdio.h>
using namespace std;
//请分别编写两个函数,利用函数重载,分别求出三个整型数及三个double类型数的最大值。并在main函数中调用它。
//请在主函数中输入三个整型数及三个实型数,并在主函数中输出两个最大值
int Find_max(int arr1[])
{
int i = 0;
int max = arr1[0];
for (i = 1; i < 3; i++)
{
if (max > arr1[i])
{
;
}
else
{
max = arr1[i];
}
}
return max;
}
double Find_max(double arr2[])
{
int i = 0;
double max = arr2[0];
for (i = 1; i < 3; i++)
{
if (max > arr2[i])
{
;
}
else
max = arr2[i];
}
return max;
}
int main()
{
int arr1[3] = { 0 };
double arr2[3] = { 0 };
int i = 0;
for (i = 0; i < 3; i++)
{
scanf("%d", &arr1[i]);
}
for (i = 0; i < 3; i++)
{
scanf("%lf", &arr2[i]);
}
int ret1 = Find_max(arr1);
double ret2 = Find_max(arr2);
printf("%d\n", ret1);
printf("%.1lf\n", ret2);
return 0;
}
7.函数7:运算器
定义一个100以内的四则运算器的函数,实现系统随机生成n个运算式,用户分别输入运算结果,并返回结果正确率,函数原型为:double cal(int n);并在main函数中调用它。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//定义一个100以内的四则运算器的函数,实现系统随机生成n个运算式,用户分别输入运算结果,
//并返回运算结果正确率,函数原型为:double cal(int n);
//并在main函数中调用它。请在主函数中输入运算式的个数,
//并在主函数中输出运算结果正确率(保留小数点后2位)
char is_char(int e3)
{
if (e3 == 1)
return '+';
if (e3 == 2)
return '-';
if (e3 == 3)
return '*';
if (e3 == 4)
return '/';
}
double cal(int n)
{
//随机数的生成,每次都生成不同的数,也就是应该在循环内部
int i = 0;
static int j = 0;
int arr1[100] = { 0 };//存放正确答案的数组
int arr2[100] = { 0 };//存放用户输入的数组
for (i = 0; i < n; i++)
{
int e1 = rand() % 100 + 1;
int e2 = rand() % 100 + 1;
int e3 = rand() % 4 + 1;
printf("%d %c %d = ", e1, is_char(e3), e2);
int k = 0;//用户输入答案
scanf("%d", &k);
arr2[i] = k;//将用户输入的答案存放到一个数组中
for (; j <= i; j++)
{
if (is_char(e3) == '+')
arr1[j] = e1 + e2;
if (is_char(e3) == '-')
arr1[j] = e1 - e2;
if (is_char(e3) == '*')
arr1[j] = e1 * e2;
if (is_char(e3) == '/')
arr1[j] = e1 / e2;
}
}
//两个数组元素进行比较,统计正确的个数
int count = 0;
for (i = 0; i < n; i++)
{
if (arr1[i] == arr2[i])
count++;
}
double d = (double)count /n;
return d;
}
int main()
{
//实现随机生成数
//打印算式
//总体输入计算结果,存入数组中
//将计算结果与正确答案配对,统计正确的个数
//计算正确率
int n = 0;
scanf("%d", &n);
srand((unsigned)time(NULL));//随机数的生成
double ret = cal(n);
printf("%.2lf", ret);
return 0;
}