2023-2024-1-高级语言程序设计-第2次月考函数题

news2024/11/15 8:46:45

6-1-1 调用函数求分段函数

编写函数fun计算下列分段函数的值:

函数接口定义:

 

float fun(float x);

其中 x 是用户传入的参数。 函数须返回分段函数的计算结果。

裁判测试程序样例:

 

#include <stdio.h> #include <math.h> float fun(float x); int main() { float x,y; scanf("%f",&x); y=fun(x); printf("y=%f",y); return 0; } /* 请在这里填写答案 */

输入样例:

1.5

输出样例:

y=0.250000
float fun(float x){
    float y;
    if(x<0)y=fabs(1-x);
    else if(x>=0&&x<=1)y=1-x;
    else y=pow(1-x,2);
    return y;
}

 

6-1-2 倒数函数

请编写函数,求倒数。

函数原型
 

double Rec(double x);

说明:参数 x 为任意实数。若 x 为非零实数,则函数值 x 的倒数,否则报告错误,调用 exit 函数使程序强行结束,并将出口代码置为 1。

裁判程序
 

#include <stdio.h> #include <stdlib.h> double Rec(double x); int main() { double a, b; scanf("%lg", &a); b = Rec(a); printf("%g\n", b); return 0; } /* 你的提交代码将被嵌在这里 */

输入样例1
2

输出样例1
0.5

注:程序的出口代码为 0。

输入样例2
0

输出样例2
Divided by zero!

注:程序的出口代码为 1。

Divided by zero!
Exit code: 1
double Rec(double x){
    if(x)return 1/x;
    else{printf("Divided by zero!\nExit code: 1");exit(x);}
}

 6-1-3 两整数最小值

请编写函数,求两个整数的最小值。

函数原型
 

int IntMin(int x, int y);

说明:参数 x 和 y 为两个整数,函数值为两者中的较小者。

裁判程序
 

#include <stdio.h> int IntMin(int x, int y); int main() { int a, b, c; scanf("%d%d", &a, &b); c = IntMin(a, b); printf("%d\n", c); return 0; } /* 你提交的代码将被嵌在这里 */

输入样例1
15 36

输出样例1
15

输入样例2
-18 -47

输出样例2
-47
int IntMin(int x, int y){
    if(x>y)return y;
    else return x;
}

 

6-1-4 两整数最大值

请编写函数,求两个整数的最大值。

函数原型
 

int IntMax(int x, int y);

说明:参数 x 和 y 为两个整数,函数值为两者中的较大者。

裁判程序
 

#include <stdio.h> int IntMax(int x, int y); int main() { int a, b, c; scanf("%d%d", &a, &b); c = IntMax(a, b); printf("%d\n", c); return 0; } /* 你提交的代码将被嵌在这里 */

输入样例1
15 36

输出样例1
36

输入样例2
-18 -47

输出样例2
-18
int IntMax(int x, int y){
    if(x>y)return x;
    else return y;
}

 

6-1-5 判断倍数

请编写函数,判断一个整数是另一个整数的倍数。

函数原型
int IsMultiple(int x, int y);

说明:参数 x 和 y 为两个任意整数。若 x 是 y 的倍数,则函数值为 1 (真),否则为 0 (假)。

裁判程序
 

#include <stdio.h> int IsMultiple(int x, int y); int main() { int a, b; scanf("%d%d", &a, &b); if (IsMultiple(a, b)) { puts("Yes"); } else { puts("No"); } return 0; } /* 你提交的代码将被嵌在这里 */

输入样例1
36 -18

输出样例1
Yes

输入样例2
-27 12

输出样例2
No

输入样例3
0 0

输出样例3
Yes
int IsMultiple(int x, int y){
    if(x==0)return 1;
    if(y==0)return 0;
    if(x%y==0||y%x==0)return 1;
    else return 0;
}

 

6-1-6 三个数求最大值

本题要求实现一个函数,求三个数的最大值。

函数接口定义:

 

double Max ( double x,double y,double z );

其中 x,y和 z 都是用户传入的参数。 值不超过double的范围,函数须返回x,y和 z 的最大值。

裁判测试程序样例:

 

#include <stdio.h> double Max(double x,double y,double z); int main() { double a,b,c; scanf("%lf%lf%lf",&a,&b,&c); printf("%.2lf\n",Max(a,b,c)); } /* 请在这里填写答案 */

输入样例:

3.14 8.76 -6.23

输出样例:

8.76
double Max ( double x,double y,double z ){
    if(x>y&&x>z)return x;
    if(y>x&&y>z)return y;
    if(z>x&&z>y)return z;
}

 

6-1-7 分段函数1(函数)

定义一个名为Fen1的函数,完成如下分段函数的计算功能,并将结果返回。
f(x)=⎩⎨⎧​5∗x2∗xx/2​x>1−1<=x<=1x<−1​⎭⎬⎫​

函数接口定义:

 

double Fen1(double x);

该函数完成上述分段函数并将计算结果返回。

裁判测试程序样例:

 

#include <stdio.h> double Fen1(double x); int main() { double a, b; scanf("%lf", &a); b = Fen1(a); printf("%.2f", b); return 0; } /* 请在这里填写答案 */

输入样例:

2

输出样例:

10.00
double Fen1(double x){
    if(x>1)return 5*x;
    if(x>=-1&&x<=1)return x*2;
    if(x<-1)return x/2;
}

 6-1-8 分段函数2(函数)

定义一个名为Fen2的函数,完成如下分段函数的计算功能,并将结果返回。
f(x)=⎩⎨⎧​x/2+11−2∗x−1​x>0x=0x<0​⎭⎬⎫​

函数接口定义:

 

double Fen2(int x);

该函数完成上述分段函数并将计算结果返回。

裁判测试程序样例:

 

#include <stdio.h> double Fen2(int x); int main() { int a; double b; scanf("%d", &a); b = Fen2(a); printf("%.2f", b); return 0; } /* 请在这里填写答案 */

输入样例:

2

输出样例:

2.00
double Fen2(int x){
    double y;
    if(x>0)y=x*1.0/2+1;
    if(x==0)y=1;
    if(x<0)y=-2*x-1;
    return y;
}

 6-2-1 使用递归函数计算1到n之和

本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。

函数接口定义:

 

int sum( int n );

该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。

裁判测试程序样例:

 

#include <stdio.h> int sum( int n ); int main() { int n; scanf("%d", &n); printf ("%d\n", sum(n)); return 0; } /* 你的代码将被嵌在这里 */

输入样例1:

10

输出样例1:

55

输入样例2:

0

输出样例2:

0
int sum( int n ){//非递归
    int s=0;
    for(int i=1;i<=n;i++)s+=i;
    return s;
}
int sum( int n ){//递归
    int s;
    if(n<=0)s=0;
    else if(n==1)s=1;
    else s=sum(n-1)+n;
    return s;
}

 

 

6-2-2 递归实现指数函数

本题要求实现一个计算xn(n≥1)的函数。

函数接口定义:

 

double calc_pow( double x, int n );

函数calc_pow应返回xn次幂的值。建议用递归实现。题目保证结果在双精度范围内。

裁判测试程序样例:

 

#include <stdio.h> double calc_pow( double x, int n ); int main() { double x; int n; scanf("%lf %d", &x, &n); printf("%.0f\n", calc_pow(x, n)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

2 3

输出样例:

8
double calc_pow( double x, int n ){
    int s=1;
    for(int i=1;i<=n;i++)
        s*=x;
    return s;
}
double calc_pow( double x, int n ){
    int s;
    if(n==1)s=x;
    else s=x*calc_pow(x,n-1);
    return s;
}

 

6-2-3 递归计算Ackermenn函数

题要求实现Ackermenn函数的计算,其函数定义如下:

函数接口定义:

 

int Ack( int m, int n );

其中mn是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型

范围内。

裁判测试程序样例:

 

#include <stdio.h> int Ack( int m, int n ); int main() { int m, n; scanf("%d %d", &m, &n); printf("%d\n", Ack(m, n)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

2 3

输出样例:

9

 

int Ack( int m, int n ){
    if(m==0)return n+1;
    else if(n==0&&m>0)return Ack(m-1,1);
    else if(m>0&&n>0)return Ack(m-1,Ack(m,n-1));
}

6-2-4 递归求Fabonacci数列

本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

函数接口定义:

 

int f( int n );

函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。

裁判测试程序样例:

 

#include <stdio.h> int f( int n ); int main() { int n; scanf("%d", &n); printf("%d\n", f(n)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

6

输出样例:

8
int f( int n ){
    if(n==0)return 0;
    else if(n==1)return 1;
    else return f(n-2)+f(n-1);
}

6-2-5 递归实现顺序输出整数

本题要求实现一个函数,对一个整数进行按位顺序输出。

函数接口定义:

 

void printdigits( int n );

函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。

裁判测试程序样例:

 

#include <stdio.h> void printdigits( int n ); int main() { int n; scanf("%d", &n); printdigits(n); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

12345

输出样例:

1
2
3
4
5
void printdigits( int n ){
    if(n<10)printf("%d",n);
    else{printdigits(n/10);printf("\n%d",n%10);}
}

 

6-2-6 递归计算P函数

本题要求实现下列函数P(n,x)的计算,其函数定义如下:

函数接口定义:

 

double P( int n, double x );

其中n是用户传入的非负整数,x是双精度浮点数。函数P返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。

裁判测试程序样例:

 

#include <stdio.h> double P( int n, double x ); int main() { int n; double x; scanf("%d %lf", &n, &x); printf("%.2f\n", P(n,x)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

10 1.7

输出样例:

3.05
double P( int n, double x ){
    if(n==0)return 1;
    else if(n==1)return x;
    else if(n>1)return ((2*n-1)*P(n-1,x)-((n-1)*P(n-2,x)))/n;
}

 

6-3-1 菲波那切数列(循环版)

请编写函数,用循环的方法求菲波那切(Fibonacci)数列某一项的值。

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

函数原型
double Fib(int index);

说明:参数 index 为数列项的索引号,从 0 开始计数。函数值为 Fibonacci 数列第 index 项的值。

裁判程序
 

#include <stdio.h> double Fib(int index); int main() { int n; scanf("%d", &n); printf("%.10g\n", Fib(n)); return 0; } /* 你提交的代码将被嵌在这里 */

要求:试试看,不使用选择语句,只用循环语句完成函数的设计,

输入样例
8

输出样例
21

 

double Fib(int index)
{
	double f1 = 1, f2 = 0, f = 0;
	int k = 1;
	while (k <= index)
	{
		f = f1 + f2;
		f1 = f2;
		f2 = f;
		++k;
	}
	return f;
}

6-3-2 自然数的任意位数字(循环版) 

请编写函数,用循环方法求自然数的任意一位数字。

函数原型
 

int Digit(int number, int index);

说明:参数 number、index 均为非负整数。index 为数位的索引号。个位、十位、百位、……依次编号为 0, 1, 2, ...。函数值为 number 的第 index 位数字。

裁判程序
 

#include <stdio.h> int Digit(int number, int index); int main() { int n, i; scanf("%d%d", &n, &i); printf("%d\n", Digit(n, i)); return 0; } /* 你提交的代码将被嵌在这里 */

要求:不用选择语句,用循环方法完成函数设计。

输入样例
25173 2

输出样例
1
while(index > 0 && number > 0)
    {
        number = number / 10;
        index--;
    }
    return number % 10;

 

6-3-3 自然数的位数(循环版)

请编写函数,用循环方法求自然数的位数。

函数原型
 

int NumDigit(int number);

说明:参数 number 为非负整数。函数值为 number 的位数。若 number 为零,则函数值为零。

裁判程序
 

#include <stdio.h> int NumDigit(int number); int main() { int n; scanf("%d", &n); printf("%d\n", NumDigit(n)); return 0; } /* 你提交的代码将被嵌在这里 */

要求:不使用选择语句,用循环方法完成函数的设计。

输入样例
25173

输出样例
5

 

int NumDigit(int number){
    int n=number,x=0;
    while(n){
        n/=10;
        x++;
    }return x;
}

 

6-3-4 自然数各位数字之和(循环版)

请编写函数,求自然数各位数字之和。

函数原型
 

int SumDigit(int number);

说明:参数 number 为非负整数。函数值为 number 的各位数字之和。若 number 为零,则函数值为零。

裁判程序:

 

#include <stdio.h> int SumDigit(int number); int main() { int n; scanf("%d", &n); printf("%d\n", SumDigit(n)); return 0; } /* 你提交的代码将被嵌在这里 */

输入样例
35184

输出样例
21

要求:不得使用选择语句。

int SumDigit(int number){
    int n=number,x=0;
    while(n){
        x+=n%10;
        n/=10;
    }return x;
}

 6-3-5 求阶乘之和(高效循环版)

请编写函数,用循环方法求阶乘之和。

SumFac(n)=0!+1!+2!+3+⋯+n!

函数原型
 

double SumFac(int x);

说明:参数 x 为非负整数,函数值为 0 到 x 的阶乘之和。

要求:直接通过循环求得结果。

裁判程序
 

#include <stdio.h> double SumFac(int x); int main() { int n; scanf("%d", &n); printf("%.10g\n", SumFac(n)); return 0; } /* 你提交的代码将被嵌在这里 */

输入样例1
4

输出样例1
34

输入样例2
70

输出样例2
1.215221118e+100
double SumFac(int x){
    double y=1,s=1;
    for(int i=1;i<=x;i++){
        y*=i;
        s+=y;
    }
    return s;
}

 

6-3-6 求整数区间[a,b]中偶数之和

编写函数,求给定整数区间[a,b]中偶数之和。

函数接口定义:

 

在这里描述函数接口。例如: int sumEven(int begin, int end);

参数begin是整数区间的左边界, end是整数区间的右边界,函数的值是该区间所有偶数之和。

裁判测试程序样例:

 

在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> /* 你编写的函数将嵌入在这里 */ int main() { int a,b; scanf("%d%d",&a,&b); printf("SumEven = %d\n",sumEven(a,b)); return 0; }

输入样例:

在这里给出一组输入。例如:

1 10

输出样例:

在这里给出相应的输出。例如:

SumEven = 30
int sumEven(int begin, int end){
    int s=0;
    for(int i=begin;i<=end;i++){
        if(i%2==0)
        s+=i;
    }
    return s;
}

 

6-3-7 自守数

谓自守数(也称守形数),是指其平方数的低位部分恰为该数本身的自然数。
例如:52 =25,而25 的低一位是5,因此 5 是自守数,还有762 =5776,而5776 的低二位是76,因此 76 是自守数,

注:0 和 1 也算自守数。

从键盘上输入正整数n的值(这里确保n的平方不超过int范围),请编写函数,计算[2,n]区间自守数的个数。

函数接口定义:
 

int IsAutomorphic(int x);

若 x 为自守数,则函数值为 1(真),否则为 0(假)。

裁判测试程序:
 

#include <stdio.h> int IsAutomorphic(int x); int main() { int n,i,num=0; scanf("%d", &n); for(i=2;i<=n;i++) if(IsAutomorphic( i)) num++; printf("自守数个数为:%d",num); return 0; } /* 你提交的代码将被嵌在这里 */

输入样例:
25
输出样例:
自守数个数为:3

//题外话,我记得之前不能直接改变函数内的值,比如x/=10,这里其实是可以的,不可以的那种是因为传入的值在主体函数部分的其它地方有使用到。

int IsAutomorphic(int x)
{
	int y = x * x;
	while (x)
	{
		if (x % 10 != y % 10)
			return 0;
		x /= 10;
		y /= 10;
	}
	return 1;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1285006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

06 数仓平台MaxWell

Maxwell简介 Maxwell是由Zendesk公司开源&#xff0c;用 Java 编写的MySQL变更数据抓取软件&#xff0c;能实时监控 MySQL数据库的CRUD操作将变更数据以 json 格式发送给 Kafka等平台。 Maxwell输出数据格式 Maxwell 原理 Maxwell工作原理是实时读取MySQL数据库的二进制日志…

Windows 10安装FFmpeg详细教程

Windows 10安装FFmpeg详细教程 0. 背景 在搭建之前的项目环境时&#xff0c;需要安装ffmpeg&#xff0c;在此记录下过程 1. 官网下载 点击进入官网&#xff1a;ffmpeg&#xff0c;官网地址&#xff1a;https://ffmpeg.org/download.html 如图所示&#xff0c;点击Windows图标…

【Windows】永久屏蔽系统更新

永久关闭电脑更新服务 操作思路&#xff1a; 第一步 winR 输入 services.msc 回车 进入服务管理窗口第二步 进入窗口后 找到 w 开头的文件夹 并找到Windows Update 双击打开 Windows Update 将启动类型&#xff08;E&#xff09; 改为禁用 上方的 “常规” “登录” “恢…

MATLAB学习QPSK之QPSK_MOD_DEMOD_SALIMup分析

学习的背景说明 因为在学习5G物理层&#xff0c;一直很忙&#xff0c;没有时间。最近稍有一点空闲&#xff0c;所以&#xff0c;学习一下算法。 QPSK的算法&#xff0c;虽然说我没有完全学透&#xff0c;大致还是懂的。只能一直没时间用MATLAB来研究一下。 然后看到这个实例&…

fastapi框架可以自动生成接口文档

安装FastAPI pip install fastapi test1.py from fastapi import FastAPIapp FastAPI()app.get("/") def read_root():return {"Hello": "World"}app.get("/items/{item_id}") def read_item(item_id: int, q: str None):#路由处理…

01-应用扩展和架构演进

文章目录 前言一、项目扩展二、架构演进总结 前言 随着项目从使用者范围到用户体积的不断扩大&#xff0c;最原始的单体项目已经无法很好地支撑现代项目所需的要求。因此&#xff0c;项目的架构也随之不断演进。本文将介绍架构的演进过程&#xff0c;初步了解微服务架构。 一…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(3)》(19)

《Linux操作系统原理分析之linux存储管理&#xff08;3&#xff09;》&#xff08;19&#xff09; 6 Linux存储管理6.4 Linux 的分段和分页结构6.4.1Linux 的分段结构6.4.2 Linux 的三级分页结构6.4.3 内核页表和进程页表 6 Linux存储管理 6.4 Linux 的分段和分页结构 本节主…

【滑动窗口】LeetCode2953:统计完全子字符串

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本题其它解法 【离散差分】LeetCode2953:统计完全子字符串 题目 给你一个字符串 word 和一个整数 k 。 如果 word 的一个子字符串 s 满足以下条件&#xff0c;我们称它是 完全字符串&#xff1a; s 中每个字符…

014 OpenCV canny边缘检测

一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、canny原理 OpenCV中的Canny边缘检测算法是一种基于图像处理的计算机视觉技术&#xff0c;主要用于检测图像中的边缘。Canny边缘检测算法的原理是通过计算图像中像素点之间的梯度值来…

导入JDBC元数据到Apache Atlas

前言 前期实现了导入MySQL元数据到Apache Atlas, 由于是初步版本&#xff0c;且功能参照Atlas Hive Hook&#xff0c;实现的不够完美 本期对功能进行改进&#xff0c;实现了导入多种关系型数据库元数据到Apache Atlas 数据库schema与catalog 按照SQL标准的解释&#xff0c;…

【Latex笔记】标题页

整体结构 模板结构如下&#xff1a; \documentclass{book} % 导言区&#xff0c;加载宏包和各项设置&#xff0c;包括参考文献、索引等 \usepackage{makeidx} % 调用makeidx 宏包&#xff0c;用来处理索引 \makeindex % 开启索引的收集 \bibliographystyle{plain} % 指定参考…

OpenCV-Python:图像卷积操作

目录 1.图像卷积定义 2.图像卷积实现步骤 3.卷积函数 4.卷积知识考点 5.代码操作及演示 1.图像卷积定义 图像卷积是图像处理中的一种常用操作&#xff0c;主要用于图像的平滑、锐化、边缘检测等任务。它可以通过滑动一个卷积核&#xff08;也称为滤波器&#xff09;在图像…

【C/PTA —— 14.结构体1(课内实践)】

C/PTA —— 14.结构体1&#xff08;课内实践&#xff09; 6-1 计算两个复数之积6-2 结构体数组中查找指定编号人员6-3 综合成绩6-4 结构体数组按总分排序 6-1 计算两个复数之积 struct complex multiply(struct complex x, struct complex y) {struct complex product;product.…

Shopify二次开发之三:liquid语法学习(Tags)

目录 Tags 变量声明 assign capture decrement increment 条件语句 if else unless case HTML form表单生成 style Iteration (遍历) for else break continue cycle paginate Theme &#xff08;主题&#xff09; render渲染一个snippet&#xff0c;可…

用友NC word.docx接口存在任意文件读取漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、产品介绍 用友 NC Cloud&#xff0c;大型企业数字化平台&#xff…

MySQL笔记-第04章_运算符

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第04章_运算符1. 算术运算符2. 比较运算符3. 逻辑运算符4. 位运算符5. 运算符的优先级拓展&#xff1a;使用正则表达式查询 第04章_运算符 …

轻量封装WebGPU渲染系统示例<43>- PBR材质与阴影实(源码)

原理简介: 1. 基于rendering pass graph实现。 2. WGSL Shader 基于文件系统和宏机制动态组装。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/PBRShadowTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&a…

【Windows】使用SeaFile搭建本地私有云盘并结合内网穿透实现远程访问

1. 前言 现在我们身边的只能设备越来越多&#xff0c;各种智能手机、平板、智能手表和数码相机充斥身边&#xff0c;需要存储的数据也越来越大&#xff0c;一张手机拍摄的照片都可能有十多M&#xff0c;电影和视频更是按G计算。而智能设备的存储空间也用的捉襟见肘。能存储大量…

探索CSS:从入门到精通Web开发(二)

前言 当我们谈论网页设计和开发时&#xff0c;CSS&#xff08;层叠样式表&#xff09;无疑是其中的重要一环。作为HTML的伴侣&#xff0c;CSS赋予网页以丰富的样式和布局&#xff0c;使得网站看起来更加吸引人并且具备更好的可读性。本书将通过一系列深入浅出的方式&#xff0…