2024第三次随堂测验参考答案

7-1 求一组数组中的平均数

输入10个整数,输出这10个整数的的平均数,要求输出的平均数保留2位小数

输入样例:

1 2 3 4 5 6 7 8 9 10

输出样例:

5.50

参考答案:

#include <stdio.h>
int main(){int sum = 0;for (int i = 1; i <= 10; i++) {int num;scanf("%d", &num);sum += num;}double ans = sum/10.0;printf("%.2f",ans);return 0;
}

7-2 翻转数组

输入一组数(少于50个元素),要求对该数组元素进行倒序输出。

输入格式:

第一行输入一个数n表示数组中元素个数,然后一行输入n个整数,数与数间用空格隔开。

输出格式:

将该组数倒序输出,数与数间用一个空格隔开,第一个数前无空格,最后一个数后无空格。

输入样例:

12
36 74 20 96 21 48 99 68 84 81 34 53

输出样例:

53 34 81 84 68 99 48 21 96 20 74 36

参考答案:

#include <stdio.h>
int main(){int n;scanf("%d", &n);int num[60];for (int i = 0; i < n; i++) {scanf("%d", &num[i]);}for (int i = n-1; i >= 0; i--) {if (i != n-1) printf(" ");printf("%d", num[i]);}return 0;
}

7-3 求数组中偶数之和

从键盘输入n个整数存入一维数组中,计算数组元素中所有偶数之和并输出。

输入格式:

第一行,输入整数个数n;
第二行,n 个整数,数据之间用空格隔开。

输出格式:

输出和,最后换行。

输入样例:

8
10 19 18 16 17 15 14 13

输出样例:

58

参考答案:

#include <stdio.h>
int main(){int n;scanf("%d", &n);int sum = 0;for (int i = 0; i < n; i ++) {int num;scanf("%d", &num);if (num%2 == 0) sum += num;}printf("%d", sum);return 0;
}

7-4 计算天数

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天。

输入样例1:

2009/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62

参考答案:

#include<stdio.h>
int common_year[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int leap_year[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){int year,month,day;scanf("%d/%d/%d",&year,&month,&day);int ans = 0;if (year%400 == 0 || (year%4 == 0 && year%100 != 0)) {for (int i = 0; i < month; i++) {ans += leap_year[i];}ans += day;}else {for (int i = 0; i < month; i++) {ans += common_year[i];}ans += day;}printf("%d",ans);return 0;
}

7-5 输出该月天数

从键盘输入一个年份year和月份month,输出该月有多少天(考虑闰年)。
提示:如果年份能被400整除,则它是闰年;如果能被4整除,而不能被100整除,则也是闰年,否则不是闰年。

输入格式:

输入任意符合范围(1月~12月)的月份和(1900年~9999年)年份,且两个值之间空格分隔。

输入样例:

2000 2

输出样例:

year = 2000 month = 2 days=29

输入样例:

2014 8

输出样例:

year = 2014 month = 8 days=31

参考答案:

#include<stdio.h>
int common_year[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int leap_year[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){int year, month;scanf("%d %d", &year, &month);if ((year%400 == 0) || (year%4 == 0 && year%100 != 0)) {printf("year = %d month = %d days=%d", year, month, leap_year[month]);    }else {printf("year = %d month = %d days=%d", year, month, common_year[month]);    }return 0;
}

7-6 春夏秋冬

气象意义上,通常以阳历3~5月为春季(spring),6~8月为夏季(summer),9~11月为秋季(autumn),12月~来年2月为冬季(winter)。请根据输入公历的年份以及月份,输出对应的季节。

输入格式:

输入的数据格式是固定的YYYYMM的形式,即:年份占4个数位,月份占2个数位,且没有不合理的输入,如2017!@#$%13^&*之类的形式。

输出格式:

输出月份对应的季节(用英文单词表示,全部用小写字母)。

输入样例1:

201901

输出样例1:

winter

输入样例2:

201807

输出样例2:

summer

参考答案:

#include<stdio.h>
int main(){int num;scanf("%d", &num);int month = num%100;if (month >= 3 && month <= 5) printf("spring");if (month >= 6 && month <= 8) printf("summer");if (month >= 9 && month <= 11) printf("autumn");if ((month >= 1 && month <= 2) || month == 12) printf("winter");return 0;
}

7-7 求N分之一序列前N项和

本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

输入样例:

6

输出样例:

sum = 2.450000

参考答案:

#include<stdio.h>
int main(){int n;scanf("%d", &n);double sum = 0;for (int i = 1; i <= n; i ++) {sum += 1.0/i;}printf("sum = %.6f", sum);return 0;
}

7-8 求简单交错序列前N项和

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。

输入样例:

10

输出样例:

sum = 0.819

参考答案:

#include<stdio.h>
int main(){int n;scanf("%d", &n);int flag = 1;double ans = 0;for (int i = 1; i <= n; i++) {ans += flag*1.0/(3*i-2);flag = -flag;}printf("sum = %.3f", ans);return 0;
}

7-9 求交错序列前N项和

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,结果保留三位小数。

输入样例:

5

输出样例:

0.917

参考答案:

#include<stdio.h>
int main(){int n;scanf("%d", &n);int flag = 1;double ans = 0;for (int i = 1; i <= n; i++) {ans += flag*1.0*i/(2*i-1);flag = -flag;}printf("%.3f", ans);return 0;
}

7-10 求阶乘序列前N项和

本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。

输入格式:

输入在一行中给出一个不超过12的正整数N。

输出格式:

在一行中输出整数结果。

输入样例:

5

输出样例:

153

参考答案:

#include<stdio.h>int factorial(int x) {int y = 1;for (int i = 1; i <= x; i++) {y *= i;}return y;
}int main(){int n;scanf("%d", &n);int ans = 0;for (int i = 1; i <= n; i++) {ans += factorial(i);}printf("%d", ans);return 0;
}

7-11 求分数序列前N项和

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:

20

输出样例:

32.66

参考答案:

#include<stdio.h>
int main(){int n;scanf("%d", &n);double ans = 0;double fenzi = 2;double fenmu = 1;for (int i = 1; i <= n; i++) {ans += fenzi/fenmu;double new_fenzi = fenzi + fenmu;double new_fenmu = fenzi;fenzi = new_fenzi;fenmu = new_fenmu;}printf("%.2f", ans);return 0;
}

7-12 素数对猜想

让我们定义dn​为:dn​=pn+1​−pn​,其中pi​是第i个素数。显然有d1​=1,且对于n>1有dn​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

参考答案:

#include<stdio.h>
#include <stdbool.h>
bool isPrime(int x) {bool flag = true;if (x == 1) flag = false;if (x == 2) flag = true;if (x > 2) {for (int i = 2; i <= sqrt(x); i++) {if (x%i == 0) {flag = false;break;}}}return flag;
}int main(){int n;scanf("%d",&n);int prime[9999];int index = 0;int ans = 0;for (int i = 1; i <= n; i++) {if (isPrime(i) == true) {prime[index] = i;index++;}}for (int i = 1; i < index; i++) {if (prime[i] - prime[i-1] == 2) {ans++;}}printf("%d",ans);
}

7-13 求n以内最大的k个素数以及它们的和

本题要求计算并输出不超过n的最大的k个素数以及它们的和。

输入格式:

输入在一行中给出n(10≤n≤10000)和k(1≤k≤10)的值。

输出格式:

在一行中按下列格式输出:

素数1+素数2+…+素数k=总和值

其中素数按递减顺序输出。若n以内不够k个素数,则按实际个数输出。

输入样例1:

1000 10

输出样例1:

997+991+983+977+971+967+953+947+941+937=9664

输入样例2:

12 6

输出样例2:

11+7+5+3+2=28

参考答案:

#include<stdio.h>
int isPrime(int x) {int flag = 1;if (x == 1) flag = 0;if (x == 2) flag = 1;if (x > 2) {for (int i = 2; i <= sqrt(x); i++) {if (x%i == 0) {flag = 0;break;}}}return flag;
}
int main(){int n, k;scanf("%d %d",&n, &k);int sum = 0;int flag = 1;while(n > 0 && k > 0) {if (isPrime(n) == 1) {if (flag == 0) printf("+");printf("%d",n);sum += n;flag = 0;k--;}n--;}printf("=%d",sum);
}

7-14 哥德巴赫猜想

哥德巴赫猜想大家都很熟悉,今日常见的猜想陈述为欧拉的版本,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。由于一个偶数可能有多组不同的素数对,所以要求输出两个彼此最接近的素数。

输入格式:

输入有多行,每一行有一个偶整数n(5<n≤10000)

输出格式:

对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数(较小的素数放在较大的素数前).

输入样例:

20
30
40

输出样例:

7 13
13 17
17 23

参考答案:

#include<stdio.h>
int isPrime(int x) {int flag = 1;if (x == 1) flag = 0;if (x == 2) flag = 1;if (x > 2) {for (int i = 2; i <= sqrt(x); i++) {if (x%i == 0) {flag = 0;break;}}}return flag;
}
int main(){int n, a, b;while(scanf("%d", &n) != EOF){for(int i = n/2; i >= 1; i --){a = i;b = n-i;if(isPrime(i) == 1 && isPrime(n-i) == 1){break;}}printf("%d %d\n", a, b);}return 0;
}

7-15 数组元素循环右移问题

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0​A1​⋯AN−1​)变换为(AN−M​⋯AN−1​A0​A1​⋯AN−M−1​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

6 2
1 2 3 4 5 6

输出样例:

5 6 1 2 3 4

参考答案:

#include<stdio.h>
int main(){int n, m;scanf("%d %d", &n, &m);int num[110];for (int i = 0; i < n; i++) scanf("%d", &num[i]);for (int i = 0; i < m; i++) {int temp = num[n-1];for (int j = n-1; j > 0; j--) {num[j] = num[j-1];}num[0] = temp;}for (int i = 0; i < n; i++) {if (i != 0) printf(" ");printf("%d", num[i]);}return 0;
}

7-16 猴子选大王

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:

输入在一行中给一个正整数N(≤1000)。

输出格式:

在一行中输出当选猴王的编号。

输入样例:

11

输出样例:

7

参考答案:

#include<stdio.h>
int flag[1010] = {0};
int main(){int n;scanf("%d", &n);int cnt = 0;int total = n;while(total > 1) {for (int i = 1; i <= n; i++) {if (flag[i] == 1) continue;if (flag[i] == 0) cnt++;if (cnt == 3) {flag[i] = 1;cnt = 0;total--;}}}for (int i = 1; i <= n; i++) {if (flag[i] == 0) {printf("%d", i);break;}}return 0;
}

7-17 数组循环左移

本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(am​⋯an−1​a0​a1​⋯am−1​)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

8 3
1 2 3 4 5 6 7 8

输出样例:

4 5 6 7 8 1 2 3

参考答案:

#include<stdio.h>
int main(){int n, m;scanf("%d %d", &n, &m);int num[1010];for (int i = 0; i < n; i++) scanf("%d", &num[i]);for (int i = 0; i < m; i++) {int temp = num[0];for (int j = 0; j < n-1; j++) {num[j] = num[j+1];}num[n-1] = temp;}for (int i = 0; i < n; i++) {if (i != 0) printf(" ");printf("%d", num[i]);}return 0;
}

7-18 利用数组计算斐波那契数列

本题要求编写程序,利用数组计算菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证计算结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如::1,1,2,3,5,8,13,...。

输入格式:

输入在一行中给出一个整数N(1≤N≤46)。

输出格式:

输出前N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行。

如果输入的N不在有效范围内,则输出"Invalid."。

输入样例1:

7

输出样例1:

          1          1          2          3          58         13

输入样例2:

0

输出样例2:

Invalid.

参考答案:

#include<stdio.h>
int main(){int n;scanf("%d", &n);int num[50];num[1] = 1;num[2] = 1;if (n < 1 || n > 46) {printf("Invalid.");return 0;}if (n >= 3) {for (int i = 3; i <= n; i++) {num[i] = num[i-1] + num[i-2];}}for (int i = 1; i <= n; i++) {printf("%11d", num[i]);if (i%5 == 0 || i == n) printf("\n");}return 0;
}

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

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

相关文章

Docker 镜像体积优化实践:从基础镜像重建到层压缩的全流程指南

​ 由于最近在发布的时候发现docker镜像体积变得越来越大&#xff0c;导致整个打包发布流程变得非常耗时了。所以又接到一个差事&#xff0c;优化最终镜像体积。顺便也记录一下docker镜像体积优化的一些步骤。 大概步骤可以分为以下几个步骤&#xff1a; 重做基础镜像&#x…

[linux 驱动]PWM子系统详解

目录 1 描述 2 结构体 2.1 pwm_chip 2.2 pwm_ops 2.3 pwm_device 2.4 pwm_class 3 相关函数 3.1 注册与注销 PWM 控制器 3.1.1 pwmchip_add 3.1.2 pwmchip_remove 3.2 申请与释放 PWM 设备 3.2.1 pwm_request 3.2.2 devm_pwm_get 3.2.3 pwm_free 3.3 控制 PWM …

Linux入门(2)

林纳斯托瓦兹 Linux之父 1. echo echo是向指定文件打印内容 ehco要打印的内容&#xff0c;不加任何操作就默认打印到显示器文件上。 知识点 在Linux下&#xff0c;一切皆文件。 打印到显示器&#xff0c;显示器也是文件。 2.重定向 >重定向操作&#xff0c;>指向的…

如何判断本地DNS是否污染

本地DNS污染是一种比较复杂且会对网络访问产生负面影响的现象。DNS即域名系统&#xff0c;它的主要功能是将便于人们记忆的域名转换为计算机能够理解的IP地址。本地DNS污染是指在本地网络环境中&#xff0c;DNS解析过程受到恶意干扰或错误配置的影响&#xff0c;使得域名被解析…

线程池使用实战

线程池使用实战 1. 线程池使用1.1 例子11.2 例子2 1. 线程池使用 // 使用 ThreadPoolExecutor 创建线程池private final ThreadPoolExecutor executorService new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // 核心线程数Runtime.ge…

asp.net网站项目如何设置定时器,定时获取数据

在 Global.asax.cs 文件中编写代码来初始化和启动定时器。Global.asax.cs 文件定义了应用程序全局事件&#xff0c;比如应用程序的启动和结束。在这里&#xff0c;我们将在应用程序启动时初始化和启动定时器。 using System; using System.Timers;public class Global : Syste…

【数据仓库】Hive 拉链表实践

背景 拉链表是一种数据模型&#xff0c;主要是针对数据仓库设计中表存储数据的方式而定义的&#xff1b;顾名思义&#xff0c;所谓拉链表&#xff0c;就是记录历史。记录一个事务从开始一直到当前状态的所有变化的信息。 拉链表可以避免按每一天存储所有记录造成的海量存储问题…

Mysql在oracle的安装与配置(怕忘)

1、获取iso 安装oracle:https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-24.03-LTS/ISO/x86_64/openEuler-24.03-LTS-x86_64-dvd.iso openEuler-22.03-LTS-x86_64-dvd.iso 2、安装os 手动设置固定IP,建议大家网卡vm net8 网关:x.x.x.2 DNS:114.114.114.11…

日常工作采坑,关于图片压缩哪些坑一次性踩完。

文章目录 0.前言1.代码实现2.压缩工具包的配置 0.前言 首先说明一下这个图片压缩为什么那么艰难&#xff0c;主要原因还是在于需求过于奇葩。比较奇葩的原因有如下几点&#xff1a;   1.图片是一个很大的文件&#xff0c;我长这么大还没见过这个大的文件。图下可以图片文件可…

语音识别ic赋能烤箱,离线对话操控,引领智能厨房新体验

一、智能烤箱产品的行业背景 随着科技的飞速发展&#xff0c;智能家居已经成为现代家庭的新宠。智能烤箱作为智能家居的重要组成部分&#xff0c;正逐渐从高端市场走向普通家庭。消费者对于烤箱的需求不再仅仅局限于基本的烘焙功能&#xff0c;而是更加注重其智能化、便捷化和…

LeetCode 每日一题 2024/10/28-2024/11/3

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 10/28 685. 冗余连接 II10/29 3211. 生成不含相邻零的二进制字符串10/30 3216. 交换后字典序最小的字符串10/31 3165. 不包含相邻元素的子序列的最大和11/1 3259. 超级饮料…

faiss用于大数据量的向量检索

背景:10亿(Billion级别)的数据应该是一个很大的数据了,尤其是维度在768+级别(还有1024,1536等),这个数据量我做了一个实验,shape为(1kw,768)的array(numpy)占内存为30G(float32格式),如果能降低为float16更好不过,但似乎faiss没有这种方法或者精度有所损失。 …

一文详解开源ETL工具Kettle!

一、Kettle 是什么 Kettle 是一款开源的 ETL&#xff08;Extract - Transform - Load&#xff09;工具&#xff0c;用于数据抽取、转换和加载。它提供了一个可视化的设计环境&#xff0c;允许用户通过简单的拖拽和配置操作来构建复杂的数据处理工作流&#xff0c;能够处理各种数…

D59【python 接口自动化学习】- python基础之异常

day59 捕获异常常见问题 学习日期&#xff1a;20241105 学习目标&#xff1a;异常 -- 75 避坑指南&#xff1a;编写捕获异常程序时经常出现的问题 学习笔记&#xff1a; 捕获位置设置不当 设置范围不当 捕获处理设置不当 嵌套try-except语法错误 总结 位置&#xff0c;范围…

深度学习在大数据处理中的应用

深度学习在大数据处理中扮演着至关重要的角色&#xff0c;其应用广泛且深入。以下是一些深度学习在大数据处理中的具体应用&#xff1a; 1. 自然语言处理&#xff08;NLP&#xff09; 深度学习技术在大数据处理中的自然语言处理方面取得了显著进展。语义理解方面&#xff0c;…

Java开发配置文件的详情教程配置文件类型

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

应审稿人要求| pseudo bulk差异分析

一、写在前面 最近有粉丝提问&#xff0c;收到了如下的审稿人意见&#xff1a; 审稿人认为在单细胞测序过程中&#xff0c;利用findMarker通过Wilcox获得的差异基因虽然考虑到了不同组别细胞数量的不同&#xff0c;但是未能考虑到每组样本数量的不同。因此作者希望纳入样本水平…

Android13 系统/用户证书安装相关分析总结(二) 如何增加一个安装系统证书的接口

一、前言 接着上回说&#xff0c;最初是为了写一个SDK的接口&#xff0c;需求大致是增加证书安装卸载的接口&#xff08;系统、用户&#xff09;。于是了解了一下证书相关的处理逻辑&#xff0c;在了解了功能和流程之后&#xff0c;发现settings中支持安装的证书&#xff0c;只…

矩阵特殊打印方式

小伙伴们大家好&#xff0c;好几天没更新了&#xff0c;主要有个比赛。从今天起继续给大家更新&#xff0c;今天给大家带来一种新的题型&#xff1a;矩阵特殊打印方式。 螺旋打印矩阵 解题思路 首先给大家看一下什么是螺旋方式打印&#xff1a; 就像这样一直转圈圈。 我想大多…

IO同步异步/阻塞非阻塞

同步和异步&#xff1a;当前线程是否需要等待方法调用执行完毕。 阻塞和非阻塞&#xff1a;当前接口数据还未准备就绪时&#xff0c;线程是否被阻塞挂起 同步和异步其实是处理框架这种高层次维度来看待问题的&#xff0c;而阻塞和非阻塞往往是针对底层的系统调用方法来抉择&a…