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

在这里插入图片描述

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

    编程练习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);elseprintf("方程有两个不等的实根 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  Sta12    3    4    5    6    7    89   10   11   12   13   14   1516   17   18   19   20   21   2223   24   25   26   27   28   2930   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.mzph.cn/news/595424.shtml

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

相关文章

天融信TOPSEC Cookie 远程命令执行漏洞

产品介绍 天融信TopSec 安全管理系统&#xff0c;是基于大数据架构&#xff0c;采用多种技术手段收集各类探针设备安全数据&#xff0c;围绕资产、漏洞、攻击、威胁等安全要素进行全面分析&#xff0c;提供统一监测告警、集中策略管控、协同处置流程&#xff0c;实现客户等保合…

FindMy技术用于鼠标

鼠标是计算机的标准配置之一&#xff0c;其设计初衷是为了使计算机的操作更加简便快捷&#xff0c;减少用户在操作中的负担。用户可以通过移动鼠标&#xff0c;实现光标的精确移动&#xff0c;进而选择、拖拽、复制、粘贴等操作。这种操作方式&#xff0c;使得计算机的操作变得…

人工智能未来发展前景怎么样?

人工智能的未来发展前景怎么样&#xff1f;人工智能的未来发展前景非常广阔&#xff0c;有以下几个方面的发展趋势和前景&#xff1a; 1、人工智能的未来发展前景-应用领域扩展&#xff1a;人工智能将在各个领域得到广泛应用&#xff0c;包括医疗保健、金融、交通、制造业、农业…

<软考高项备考>《论文专题 - 45 范围管理(4) 》

5 过程4-创建WBS 5.1 问题 4W1H过程做什么把项目可交付成果和项目工作分解成较小、更易于管理的组件的过程作用&#xff1a;为所要交付的内容提供0架构为什么做WBS代表着项目范围说明书所规定的工作&#xff0c;可以针对WBS 的工作包安排进度&#xff0c;估算成本和实施监控谁…

java SSM体育器材租借管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM体育器材租借管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要…

海外服务器2核2G/4G/8G和4核8G配置16M公网带宽优惠价格表

腾讯云海外服务器租用优惠价格表&#xff0c;2核2G10M带宽、2核4G12M、2核8G14M、4核8G16M配置可选&#xff0c;可以选择Linux操作系统或Linux系统&#xff0c;相比较Linux服务器价格要更优惠一些&#xff0c;腾讯云服务器网txyfwq.com分享腾讯云国外服务器租用配置报价&#x…

GZ075 云计算应用赛题第5套

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷5 某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenSt…

17|回调函数:在AI应用中引入异步通信机制

17&#xff5c;回调函数&#xff1a;在AI应用中引入异步通信机制 回调函数和异步编程 回调函数&#xff0c;你可能并不陌生。它是函数 A 作为参数传给另一个函数 B&#xff0c;然后在函数 B 内部执行函数 A。当函数 B 完成某些操作后&#xff0c;会调用&#xff08;即“回调”…

如何对APP进行安全加固

引言 如今&#xff0c;移动应用市场蓬勃发展&#xff0c;APP数量呈现爆炸性增长。随着5G技术的广泛应用&#xff0c;APP的增长趋势持续增强。然而&#xff0c;由于APP的泛滥&#xff0c;网络攻击者的目标也在逐渐转移&#xff0c;数亿的移动互联网用户面临着病毒攻击的威胁&am…

计算机毕业设计——SpringBoot 房屋销售租赁平台 房屋购物网站(附源码)

1&#xff0c;绪论 1.1 背景调研 在房地产行业持续火热的当今环境下&#xff0c;房地产行业和互联网行业协同发展&#xff0c;互相促进融合已经成为一种趋势和潮流。本项目实现了在线房产平台的功能&#xff0c;多种技术的灵活运用使得项目具备很好的用户体验感。 这个项目的…

杨中科 ASP.NET MVC

ASP.NET Core 入门 什么是ASP.NET CORE 1、ASP.NET Core是.NET中做Web开发的框架 2、ASP.NET Core MVC 传统MVC项目&#xff0c;前后端都做在一起 3、ASP.NET Core Web API: 前后端分离、多端开发。(是属于MVC中的一部分) 4、ASPNET Core MVC其实包含Web API&#xff0c;不过…

未来十年不变的AI是什么?吴恩达等专家关于2024年AI发展趋势的预测

随着2024年的到来&#xff0c;人工智能领域正迎来前所未有的变革和发展。从深度学习到自然语言处理&#xff0c;AI技术的每一个分支都在经历着快速的进步。在这个关键的时刻&#xff0c;业界专家们提出了对未来趋势的深刻洞察&#xff0c;预测了将形成AI发展主流的关键方向。智…

雍禾医疗以患者为中心 雍禾植发医生文志清专注做精每一台手术

随着生活方式的改变&#xff0c;晚睡、长期使用电子产品等原因让脱发成为消费者不可忽视的问题。有相关数据显示&#xff0c;76%消费者关注自己的头皮健康状况&#xff0c;53%的人群受到脱发困扰&#xff0c;已经有20%消费者认识到专业毛发医疗机构的重要性&#xff0c;选择到专…

V8R6小版本升级步骤(单机环境)

在KingbaseES V8R6版本提供了sys_upgrade的升级工具。 sys_upgade介绍 sys_upgrade实现KingbaseES服务器实例版本升级。 sys_upgrade 允许将存储在KingbaseES数据文件中的数据升级到一个更高的KingbaseES主版本&#xff0c;而无需进行主版本升级(例如从 V8R6C4 到 V8R6C5)通常…

STL——vector详解

目录 &#x1f4a1;基本概念 &#x1f4a1;存放内置数据类型 &#x1f4a1;存放自定义数据类型 &#x1f4a1;存放自定义数据类型指针 &#x1f4a1;vector容器嵌套容器 &#x1f4a1;vector构造函数 &#x1f4a1;vector赋值操作 &#x1f4a1;vector容量和大小 &…

西电期末1018.logistic方程

一.题目 二.分析与思路 根据题目递归即可&#xff0c;用while函数判断是否到达1000项&#xff0c;内部用abs函数&#xff08;绝对值函数&#xff09;判断是否收敛&#xff0c;最后按照结果输出即可。 三.代码实现 #include<bits/stdc.h>//万能头 int main() {double …

React实现简单登录

一 实现效果(样式是之前设置的&#xff09; 二 具体实现代码 2.1 Login.js import {useNavigate} from "react-router-dom"; import React from "react"; // import ./style2.cssfunction Login(){const navigateuseNavigate()func…

nginx在国产服务器上stream配置项无法识别的问题

最近在搭建k8sranchar&#xff0c;需要用到nginx做负载均衡&#xff0c;之前在系统中也会用到&#xff0c;之前一直使用http选项&#xff0c;做转发配置。 基本格式如下图所示&#xff1a; 但是在ranchar的安装中默认方式使用stream配置项。 使用yum默认安装的nginx不支持该关…

Yapi安装配置(CentOs)

环境要求 nodejs&#xff08;7.6) mongodb&#xff08;2.6&#xff09; git 准备工作 清除yum命令缓存 sudo yum clean all卸载低版本nodejs yum remove nodejs npm -y安装nodejs,获取资源,安装高版本nodejs curl -sL https://rpm.nodesource.com/setup_8.x | bash - #安装 s…

Spring Cloud Config相关面试题及答案(2024)

1、什么是 Spring Cloud Config&#xff0c;它解决了哪些问题&#xff1f; Spring Cloud Config 是一个为微服务架构提供集中化外部配置支持的项目。它是构建在 Spring Cloud 生态系统之上&#xff0c;利用 Spring Boot 的开发便利性&#xff0c;简化了分布式系统中的配置管理…