【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);
     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***********************************");
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

来自云仓酒庄分享为什么同一种葡萄会使用不同的名称?

如果你只是刚刚走进葡萄酒世界&#xff0c;走在葡萄酒通道上可能会令人生畏&#xff0c;因为有不同的国家、地区和生产商&#xff0c;除此之外还有数千酿酒葡萄品种。更令人困惑的是&#xff0c;有些地方对同一种葡萄使用不同的名称&#xff01;一个著名的例子是西拉和它澳大利…

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…

免费分享:中国地下水资源分布图(附下载方法)

中国地下水资源分布图是一种展示中国各地区地下水资源丰富程度的地图。它通过不同的颜色和图案来表示地下水资源的分布情况&#xff0c;帮助我们了解中国地下水资源的分布特点和规律。 数据简介 中国地下水资源分布图展示了中国各地区地下水资源的丰富程度&#xff0c;包括地…

当老了的完美世界,押注了更老的MMO端游

​“一个测试激活码至少上千&#xff0c;还只是租号&#xff0c;只能玩几天。” 12月29日&#xff0c;完美世界重磅产品《诛仙世界》开启二测&#xff0c;斗鱼包含PPD在内等多位大主播进驻游戏&#xff0c;将游戏冲至斗鱼端游热度第一位。 游戏的测试码也被卖到了天价&#x…

移动神器RAX3000M路由器变身家庭云之四:开放LuCI管理界面,网站服务

前面已经改造成了家庭云供外网访问了。由于这个路由本来就是openwrt&#xff0c;openwrt本身的管理界面LuCI-admin很好用&#xff0c;但被屏蔽了&#xff0c;需要打开。 打开界面 ssh登录路由器&#xff0c;修改 /etc/config/uhttpd配置文件如下&#xff1a; config uhttpd …

AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘

解决方案是降级您的版本&#xff1a; pip install pillow9.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

Liunx(CentOS)安装Nacos(单机启动,绑定Mysql)

Liunx安装Nacos(单机启动&#xff0c;绑定Mysql) 一&#xff0c;准备安装包 github下载点 二&#xff0c;在/usr/local/目录下创建一个文件夹用于上传和解压Nacos cd /usr/local/ #这里创建文件夹名字可随意&#xff0c;解压后会生成一个名为nacos的文件夹&#xff0c;后续…

CSS免费在线字体格式转换器 CSS @font-face 生成器

今天竟意外发现的一款免费的“网页字体生成器”&#xff0c;功能强大又好用~ 工具地址&#xff1a;https://transfonter.org/ 根据你设置生成后的文件预览&#xff1a; 支持TTF、OTF、WOFF、WOFF2 或 SVG字体格式转换生成&#xff0c;每个文件最大15MB。转换完成以后还会生成一…

【LeetCode每日一题】2487. 从链表中移除节点(调用栈+递归+翻转链表)

2024-1-3 文章目录 [2487. 从链表中移除节点](https://leetcode.cn/problems/remove-nodes-from-linked-list/)方法一&#xff1a;调用栈方法二&#xff1a;递归方法三&#xff1a;翻转链表 2487. 从链表中移除节点 方法一&#xff1a;调用栈 1.将所有节点按顺序压入栈中 2.从…

2020年认证杯SPSSPRO杯数学建模D题(第一阶段)让电脑桌面飞起来全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 D题 让电脑桌面飞起来 原题再现&#xff1a; 对于一些必须每天使用电脑工作的白领来说&#xff0c;电脑桌面有着非常特殊的意义&#xff0c;通常一些频繁使用或者比较重要的图标会一直保留在桌面上&#xff0c;但是随着时间的推移&#xff0c;…

WSL2连接USB设备

准备在WSL2上继续搞点事情&#xff0c;可是当我在WSL内的Linux操作系统上连接USB存储设备时却出现了问题。本文是我解决这个问题的简单记录&#xff0c;以备后查&#xff0c;如果能够帮助到您&#xff0c;那更是我莫大的荣幸。 我的环境。 windows11 22h2WSL 2 Ubuntu 2004 w…

计算机毕业设计-----SSM在线个人PC电脑商城平台网站系统

项目介绍 该项目为前后台项目&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台普通用户登录&#xff0c;后台管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,用户管理,一级分类管理,二级分类管理,商品管理,所有订单管理,留言管理,公告管理…

html中的form表单以及相关控件input、文本域、下拉select等等的详细解释 ,点赞加关注持续更新~

文章目录 表单创建表单forminput 标签input标签的value属性设置input标签格式单选框多选框上传文件下拉菜单文本域设置文本域格式label 标签按钮 表单 作用&#xff1a;收集用户信息。 使用场景&#xff1a; 登录页面注册页面搜索区域 创建表单form <form action".…

Spring 七种事务传播性介绍

作者&#xff1a;vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识。 Spring中定义了7种事务传播性&#xff1a; PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED…

QT上位机开发(简易图像处理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大家都知道图像处理非常地重要&#xff0c;因为它不仅仅是可以用于拍照美颜&#xff0c;而且在工业、医疗和军事等方面也发挥着巨大的作用。另外一…

Python办公自动化 – 人脸识别和自动化测试

Python办公自动化 – 人脸识别和自动化测试 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动化 – 对Ex…

nodejs-day1——模块、第三方包管理

自定义模块 我们创建的每个JS文件都是一个自定义模块&#xff0c;并且具有模块作用域&#xff0c;也就是在一个模块中创建的变量、常量、函数等等一切&#xff0c;都只能在当前模块中使用 优点&#xff1a; 1.共享&#xff08;导出/暴露&#xff09;内容给其它模块用&#x…

门店总数超9000家,手握大众茶饮“下沉市场牌”的古茗冲刺上市

奶茶品牌上市潮来袭。1月2日&#xff0c;奶茶品牌古茗控股有限公司&#xff08;下称“古茗”&#xff09;、蜜雪冰城股份有限公司&#xff08;下称“蜜雪冰城”&#xff09;一同递交招股书&#xff0c;计划在港交所主板上市。 近年来&#xff0c;随着现制茶饮的爆火&#xff0…

使用pytorch搭建ResNet并基于迁移学习训练

这里的迁移学习方法是载入预训练权重的方法 net resnet34()# load pretrain weights# download url: https://download.pytorch.org/models/resnet34-333f7ec4.pthmodel_weight_path "./resnet34-pre.pth"assert os.path.exists(model_weight_path), "file {}…

使用Go语言采集1688网站数据对比商品价格

目录 引言 一、数据采集原理 二、数据采集流程 三、数据采集代码实现 四、数据分析与比较 五、注意事项 六、结论 引言 随着电子商务的快速发展&#xff0c;越来越多的消费者开始通过在线平台购买商品。在众多电商平台中&#xff0c;1688作为中国最大的批发交易平台&am…