【PTA-C语言】编程练习5 - 函数与指针

news2024/11/25 16:41:15

在这里插入图片描述

  • 如果代码存在问题,麻烦大家指正 ~ ~
  • 有帮助麻烦点个赞 ~ ~

    编程练习5 - 函数与指针

    • 6-1 求实数和的函数(分数 10)
    • 6-2 求解一元二次方程实根的函数(分数 10)
    • 6-3 求集合数据的均方差(分数 10)
    • 6-4 计算Fibonacci数列每一项时所需的递归调用次数(分数 10)
    • 6-5 字符串加密(分数 10)
    • 6-6 万年历显示函数(分数 15)

6-1 求实数和的函数(分数 10)

作者 吕淑琴
单位 武汉理工大学

本题要求实现一个函数,求给定的N个实数的和。

函数接口定义:

float sum (float data[], int N );

其中给定实数存放在数组 data[]中,正整数N是数组元素个数。该函数须返回N个 data[]元素的和。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 10
float sum ( float  data[], int N );
int main ()
{
   int  n, i;
   float data[MAXN];
   scanf("%d", &n);
    for ( i=0; i<n; i++ )
        scanf("%f", &data[i]);
    printf("%.2f\n", sum( data, n));
    return 0;
}

/* 请在这里填写答案 */

输入样例:

3
12.3 45.6 -67.8

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

-9.90

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

float sum(float  data[], int N)
{
    float sum = 0;
    for (int i = 0; i < N; i++)
        sum += data[i];
    return sum;
}

6-2 求解一元二次方程实根的函数(分数 10)

作者 李民
单位 武汉理工大学

要求计算一元二次方程ax2+bx+c=0(a≠0)的根。
主函数中给出3个浮点系数a、b、c,调用函数rootOfEquation()求解方程的实根。方程的根通过指针类型的参数x1、x2传回主函数,其中x1是值较大的根,x2是值较小的根。

  1. 若方程有两个相等的实根,函数返回1;
  2. 若方程有两个不等的实根,函数返回2;
  3. 若方程无实根,函数返回0。

函数接口定义:

int rootOfEquation(double a, double b, double c, double *x1, double *x2);

裁判测试程序样例:

#include<stdio.h>
#include<math.h>
int rootOfEquation(double a, double b, double c, double *x1, double *x2);
int main()
{    double a,b,c;
     double x1,x2;
     scanf("%lf %lf %lf",&a,&b,&c);
     int flag;
     flag=rootOfEquation(a,b,c,&x1,&x2);
     if(flag==0)
         printf("方程无实根");
     else if(flag==1)
          printf("方程有两个相等的实根 x1=x2=%.2f", x1);
     else
         printf("方程有两个不等的实根 x1=%.2f,x2=%.2f", x1, x2);
     return 0;
}

/* 请在这里填写答案 */

输入样例:

1 3 2

输出样例:

方程有两个不等的实根 x1=-1.00,x2=-2.00

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

int rootOfEquation(double a, double b, double c, double *x1, double *x2)
{
    double z=b*b-4*a*c;
    if(z<0) return 0;
    else if(z==0){
        *x1 = -b/(2*a);
        return 1;
    }
    else if(z>0) {
        *x1=(-b+sqrt(z))/(2*a);;
        *x2=(-b-sqrt(z))/(2*a);
        return 2;
    }
}

6-3 求集合数据的均方差(分数 10)

作者 孙骏
单位 武汉理工大学

本题希望输入 n (0<n<=100)个整数,求n个整数的均方差。若将 n个数的平均值记为 Avg,则均方差计算公式为:

https://images.ptausercontent.com/670949f9-0c21-4e07-b4ec-5718d3806f42.png

函数接口定义:

double Avg ( int N, int  data[] );
double StdDev( int N, int  data[] );

函数Avg计算并返回数组的平均值;函数StdDev计算并返回n个数据的均方差。
其中 N 和 data 都是用户传入的参数。 N 是要计算的数据个数; data 是传入的数组。

裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:

#include <stdio.h>

double Avg ( int N, int  data[] );
double StdDev( int N, int  data[] );

int main()
{

  int N ,i, data[100];

  scanf("%d", &N);
    for(i=0;i<N;i++)
          scanf("%d",&data[i]);
  printf("Average = %.4f\n", Avg(N, data));
  printf("Standard Deviation = %.4f",StdDev(N,data));

  return 0;

}

/* 请在这里填写答案 */

输入样例:

10
6 3 7 1 4 8 2 9 11 5

输出样例:

Average = 5.6000
Standard Deviation = 3.0397

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

double Avg ( int N, int data[])
{
    double sum=0;
    for(int i=0; i<N; i++)
        sum += data[i];
    return sum/N;
}

double StdDev( int N, int data[])
{
    double sum=0.0, avg=Avg(N, data);
    for(int i=0; i<N; i++)
        sum += (data[i]-avg)*(data[i]-avg);
    return sqrt(sum/N);
}

6-4 计算Fibonacci数列每一项时所需的递归调用次数(分数 10)

作者 李宁x
单位 武汉理工大学

计算并打印Fibonacci数列每一项时所需的递归调用次数,数列第一项从1开始。
要求:
1)定义表示调用次数的全局变量count;
2)定义用递归方法求Fibonacci数列的Fib()函数。

函数接口定义:

long Fib(int a);

a为大于0的正整数。

裁判测试程序样例:

#include <stdio.h>
long Fib(int a);

/* 你的代码将被嵌在这里 */

int main()
{
    int n, i, x;
    printf("Input n:");
    scanf("%d", &n);
    for (i=1; i<=n; i++)
    {
        count = 0;       //计算下一项Fibonacci数列时将计数器count清零 
        x = Fib(i);
        printf("Fib(%d)=%d, count=%d\n", i, x, count);
    }
    return 0;
}

输入样例:

3

输出样例:

Fib(1)=1, count=1
Fib(2)=1, count=1
Fib(3)=2, count=3

代码长度限制
20 KB
时间限制
1000 ms
内存限制
100 MB

参考代码

int count=0;
long Fib(int a)
{
    count++;
    if(a<3)
        return 1;
    else 
        return Fib(a-1)+Fib(a-2);
}

6-5 字符串加密(分数 10)

作者 吕淑琴
单位 武汉理工大学

本题要求实现一个函数,能对一行字符串(字符串的长度<80)加密。
加密函数采用的加密算法:如果不是英文字母,就不加密,原样显示;否则就将字母加上一个偏移值5实现加密。注意大小写英文字母分别构成一个封闭环,如字符‘w’,加密后为字符‘b’。

函数接口定义:

void cryptograp(char ch[],int n);

其中给定一行英文字符串存放在数组ch[]中,n是这行字符串的实际长度。

裁判测试程序样例:

#include<stdio.h>
#include<string.h>
void cryptograp(char ch[],int n);    //加密函数
    
int main()
{
    int count = 0;
    char text[80] = {'\0'};            //存放明文字符串
   
    gets(text);
    count = strlen(text);
    cryptograp(text,count);
    printf("加密后的密文是:\n%s\n", text);
    return 0;
}

/* 请在这里填写答案 */

输入样例:

Hello World!

输出样例:

加密后的密文是:
Mjqqt Btwqi!

代码长度限制
99 KB
时间限制
400 ms
内存限制
64 MB

参考代码

void cryptograp(char ch[],int n)
{
    for(int i=0; i<n; i++) {
        if(ch[i]>='a' && ch[i]<='u')
            ch[i] += 5;
        else if(ch[i] >='v' && ch[i]<='z')
            ch[i] -= 21;
        if(ch[i]>='A' && ch[i]<='U')
            ch[i] += 5;
        else if(ch[i]>='V' && ch[i]<='Z')
            ch[i] -= 21;
    }
}

6-6 万年历显示函数(分数 15)

作者 吕淑琴
单位 武汉理工大学

设计一个万年历,当用户输入年份和月份时,显示这个月的日历表。程序重点是这个月的第一天是星期几和这个月有几天,有了这两个值,只需通过排列,就可以显示这个日历。程序要求用户输入的年份是从1900年开始,已知1900年1月1日是星期一。
日历中每个具体的日期占5个字符宽度,右对齐,上下的分隔线分别是由35个’*’ 连字符构成,表示星期的字符是三个字符,加两个空格分隔。

函数接口定义:

void ShowDate(int y, int m);

其中,参数y是给定年,参数m是给定月,函数功能是根据给定的年月,显示该月日历。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
int IsLeapYear(int y);   /*判断是否闰年,细节不表*/
int GetDaysofMonth(int y, int m); /*确定某个月的天数,细节不表*/
int GetTotalDays(int y, int m); /*计算从1900年1月开始到给定年月间的天数,不包含给定月的天数,细节不表*/
int GetFirstDayInTable(int y, int m); /*计算给定年月的第一天在日历表中的位置,返回值为0对应Sun位置,返回值为6对应Sta位置,细节不表*/
void ShowDate(int y, int m); /*显示日历*/

int main()
{
    int y,m;
    
    scanf("%d%d",&y,&m);   
    ShowDate(y,m);
    return 0;
}

/* 请在这里填写答案 */

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

1949  10

输出样例:

***********************************
  Sun  Mon  Tue  Wen Thur  Fri  Sta
                                  1
    2    3    4    5    6    7    8
    9   10   11   12   13   14   15
   16   17   18   19   20   21   22
   23   24   25   26   27   28   29
   30   31
***********************************

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

void ShowDate(int y, int m)
{
    int i, flag=0, index=0;
    int n = GetFirstDayInTable(y,m);
    int x = GetDaysofMonth(y,m);
    printf("***********************************\n");
    printf("  Sun  Mon  Tue  Wen Thur  Fri  Sta\n");
    for(i=0; i<5*n; i++)
        printf(" ");
    for(i=1; i<=x; i++) {
        if(n+i==8 && flag==0) {
            flag=1;
            index=0;
            printf("\n");
        }
        printf("%5d", i);
        if(flag && ++index%7==0)
            printf("\n");
    }
    printf("\n***********************************");
}

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

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

相关文章

.cer格式证书文件和 .pfx格式证书文件有什么区别?

这里我们将讨论.cer和.pfx文件类型之间的差异。 什么是数字证书&#xff1f; 数字证书在电子通信中用作验证身份的密码机制。我们需要这些证书来建立安全的在线通信渠道&#xff0c;并确保数字数据的隐私、真实性和正确性。 数字证书包括主题&#xff08;实体详细信息&#xf…

智能型参数可设置比例阀放大器

智能型参数可设置比例阀放大器是一种电液控制技术&#xff0c;它可以驱动不带电气位移反馈的各种比例溢流阀、比例流量阀、比例减压阀、比例方向阀和比例插装阀等。 这种放大器的特点是可以将输入的模拟量指令信号进行处理运算&#xff0c;通过比例电磁铁将驱动电流线性转换为作…

Win10电脑关闭OneDrive自动同步的方法

在Win10电脑操作过程中&#xff0c;用户想要关闭OneDrive的自动同步功能&#xff0c;但不知道具体要怎么操作&#xff1f;首先用户需要打开OneDrive&#xff0c;然后点击关闭默认情况下将文档保存到OneDrive选项保存&#xff0c;最后关闭在这台电脑上同步设置保存就好了。接下来…

使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本

目录 一、在阿里云上官网上创建项目 二、将 IDEA 中创建项目的源地址修改为阿里云官网 三、创建 3.x.x 的项目之后修改配置降低至 2.7.x 版本和使用 JDK8&#xff08;修改 Spring Boot 的 JDK 版本同理&#xff09; 从上面的 Spring Boot 官网的截图中可以发现&#xff0c;自…

[C#]使用纯opencvsharp部署yolov8-onnx图像分类模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 是一个 SOTA 模型&#xff0c;它建立在以前 YOLO 版本的成功基础上&#xff0c;并引入了新的功能和改进&#xff0c;以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新…

Docker mysql 主从复制

目录 介绍&#xff1a;为什么需要进行mysql的主从复制 主从复制原理&#xff1a; ✨主从环境搭建 主从一般面试问题&#xff1a; 介绍&#xff1a;为什么需要进行mysql的主从复制 在实际的生产中&#xff0c;为了解决Mysql的单点故障已经提高MySQL的整体服务性能&#xff…

单位转换工具类

单位转换工具类 1. 工具类转换- 定义装换枚举转换类型- 创建转换工具类,1. 通过反射去除字段,2.对照传入map标记的字段需要转换的类型转换3. 重新赋值 2. 注解转换- 定义注解- 解析注解 1. 工具类转换 - 定义装换枚举转换类型 public enum UnitConvertType {/*** 精确度*/ACC…

openmediavault(OMV)(30)插件介绍(3)filebrowser文件管理器

简介 filebrowser可以对omv的文件进行图形化管理,而不需要每次都通过命令进行修改。 更新omv系统 此时已经更新到omv 6.9.10-4 filebrowser安装

java基于SSM的校内信息服务发布系统的设计与实现+vue论文

校内信息服务发布系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定校内信息服务发…

Multipath多路径管理基础介绍与安装配置使用

0x00 前言简述 Q:什么是Multipath多路径? 答:Multipath I/O 电脑储存技术&#xff0c;指利用两个以上的路径同时在CPU与储存设备之间传送讯号&#xff0c;以达到侦错与强化效能的目的。 简单的说当服务器到某一存储设备有多条路径时&#xff0c;每条路径都会识别为一个单独的…

阿里云服务器地域怎么选择?哪个地域好?

阿里云服务器地域和可用区怎么选择&#xff1f;地域是指云服务器所在物理数据中心的位置&#xff0c;地域选择就近选择&#xff0c;访客距离地域所在城市越近网络延迟越低&#xff0c;速度就越快&#xff1b;可用区是指同一个地域下&#xff0c;网络和电力相互独立的区域&#…

uniapp上传图片,上传头像,多张图片上传,图片回显,图片删除,图片预览

效果图&#xff1a; 上代码不废话&#xff1a; <template><view class"familyCreateMemory"><view class"box"><view class"title"><view>文字&#xff1a;</view><textarea :maxlength"-1"/…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端架构搭建

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

Linux查看物理CPU个数、核数、逻辑CPU个数

查看CPU信息&#xff08;型号&#xff09; [rootAAA ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 24 Intel Xeon CPU E5-2630 0 2.30GHz 查看物理CPU个数 [rootAAA ~]# cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l 2 查看每个物理CPU中co…

【Adobe Acrobat DC】弹窗:正在准备文档以供阅读,请稍候

问题描述 Acrobat打开PDF就会有这个弹窗&#xff0c;要所有扫一遍才能看&#xff0c;要等特别久 解决办法1 参考这篇博客评论区里给出的方法 1. 转到“编辑”>“首选项”>“朗读”。 2. 在“屏幕阅读器选项”下面&#xff0c;选择“仅阅读当前可见页面”。 再次打开…

Linux内核源码下载与在线浏览10种方式

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

顶顶通呼叫中心中间件配置指定振铃时间挂断(mod_cti基于FreeSWITCH)

介绍 一般情况默认是振铃60秒挂断&#xff0c;但是如果想振铃10秒就挂断可以根据下方配置方法一步步去配置。 一、通过线路控制振铃时间 打开ccadmin-》点击线路-》点击你需要控制振铃时间的线路-》配置呼叫超时-》点击更新。 二、通过队列外呼控制振铃时间 打开ccadmin-》…

2024了,如何学习OpenCV?

不知道提问这位有没有了解卷积神经网络这个东西&#xff0c;早在二三十年之前就有手写数字识别了&#xff0c;但是这技术也就是2012年开始火爆了的&#xff0c;所以你看到的当下的热门技术很多都是沉寂了几年、十几年甚至几十年的。 当下对传统的cv技术有些冲击&#xff0c;那…

【计算机毕业设计】SSM二手交易网站

项目介绍 该项目分为前后台&#xff0c;前台普通用户角色&#xff0c;后台管理员角色。 管理员主要功能如下&#xff1a; 登陆,商品分类管理,商品管理,商品订单管理,用户管理等功能。 用户角色主要功能如下&#xff1a; 包含以下功能&#xff1a;查看所有商品,用户登陆注册…

DHTMLX Spreadsheet v5.1.1 Crack

DHTMLX Spreadsheet 5.1 具有新主题、简化的数字格式本地化、与框架的实时集成演示等 推出 DHTMLX Spreadsheet v5.1。新版本提供了一组有用的功能&#xff0c;这对开发人员和最终用户都有吸引力。 首先&#xff0c;新的电子表格版本提供了 4 个内置主题&#xff0c;可以根据您…