2024入门测参考答案(c语言版)

news/2024/10/20 0:29:51/

先自己看代码思考,不理解的地方可以截图私聊……

7-1 祝福祖国!

这是一个编程题模板。

2024年即将到来,作为一名大学生,为了表达在新的一年里,对祖国的祝福,请编写程序输出祝福语:在新的一年里,愿祖国更加强大,国民更加幸福!

输入格式:

此题无输入。

输出格式:

在新的一年里,愿祖国更加强大,国民更加幸福!

输入样例:

 

输出样例:

在新的一年里,愿祖国更加强大,国民更加幸福!

参考答案:

#include<stdio.h>
int main(){printf("在新的一年里,愿祖国更加强大,国民更加幸福!");
}

7-2 宇宙无敌大招呼

据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。

输入格式:

输入在第一行给出一个星球的名字S,是一个由不超过7个英文字母组成的单词,以回车结束。

输出格式:

在一行中输出Hello S,跟输入的S星球打个招呼。

输入样例:

Mars

输出样例:

Hello Mars

 参考答案:

#include<stdio.h>
int main(){char name[10];gets(name);printf("Hello ");for (int i = 0; name[i] != '\0'; i++) {printf("%c", name[i]);}
}

 7-3 2018我们要赢

2018年天梯赛的注册邀请码是“2018wmyy”,意思就是“2018我们要赢”。本题就请你用汉语拼音输出这句话。

输入格式:

本题没有输入。

输出格式:

在第一行中输出:“2018”;第二行中输出:“wo3 men2 yao4 ying2 !”。

输入样例:

本题没有输入。

输出样例:

2018
wo3 men2 yao4 ying2 !

参考答案:

#include<stdio.h>
int main(){printf("2018\n");printf("wo3 men2 yao4 ying2 !");
}

7-4 重要的话说三遍

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I'm gonna WIN!”——连续输出三遍就可以了。

注意每遍占一行,除了每行的回车不能有任何多余字符。

参考答案:

#include<stdio.h>
int main(){for (int i = 0; i < 3; i++) {printf("I'm gonna WIN!\n");}
}

7-5 计算天数

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

输入格式:

输入在一行中按照格式“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);
}

7-6 输出上半张九九乘法表

请输出上半张九九乘法表,即下三角的半张。

1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 ......8*8=64 8*9=72 9*9=81 

输入格式:

输出格式:

按下面的格式输出,每个乘法结果值占2位(默认右对齐),其他数值仅占1位,每对之间一个空格隔开,最后一个也有空格,即每行结束后都有一空格,如1×9=9后有一空格再回车到第二行。

注意:从第二行开始前面都有空格,提示每个乘法共占6位,一定要注意上下是对齐的。

1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 ...... 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81

输入样例:

输出样例:

1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81 

参考答案:

#include<stdio.h>
int main(){for (int i = 1; i <= 9; i++) {int blank_num = (i-1)*7;for (int j = 0; j < blank_num; j++) {printf(" ");}for (int j = i; j <= 9; j++) {printf("%d*%d=%2d ",i,j,i*j);}printf("\n");}
}

7-7 加法口诀表

请编写程序,输出 n+n 的加法口诀表。

样例输入
5
样例输出
1+1= 2 2+1= 3 3+1= 4 4+1= 5 5+1= 6
1+2= 3 2+2= 4 3+2= 5 4+2= 6 5+2= 7
1+3= 4 2+3= 5 3+3= 6 4+3= 7 5+3= 8
1+4= 5 2+4= 6 3+4= 7 4+4= 8 5+4= 9
1+5= 6 2+5= 7 3+5= 8 4+5= 9 5+5=10

注:和的域宽2格(右对齐);两列之间空1格;行末没有空格。

参考答案:

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

7-8 输出下三角队形,数值从大到小,逐渐增长

输出下三角队形,数值从大到小,逐渐增长

输入格式:

m

输出格式:

1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1

输入样例:

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

6

输出样例:

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

1 
2 1 
3 2 1 
4 3 2 1 
5 4 3 2 1 
6 5 4 3 2 1 

参考答案:

#include<stdio.h>
int main() {int n;scanf("%d",&n);for (int i = 1; i <= n; i++) {for (int j = i; j >= 1; j--) {printf("%d ",j);}printf("\n");}
}

7-9 素数对猜想

让我们定义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-10 求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-11 查找孪生素数

孪生素数是指间隔为2的两个相邻素数,因为它们之间的距离已经近得不能再近了,如同孪生兄弟一样,故将这一对素数称为孪生素数。
例如(3,5),(5,7),(11,13)等
输入2个正整数m和n 求两个数之间的所有孪生素数。

输入格式:

在一行中输入2个整数m和n 。

输出格式:

若该区间有:则输出形如(3,5)素数对,一行输出一对,在最后一行统计输出共有几对孪生素数
若区间没有:输出“没有找到”

输入样例1:

2 20

输出样例1:

(3,5)
(5,7)
(11,13)
(17,19)
共找到4对孪生素数

输入样例2:

18  25

输出样例2:

没有找到

参考答案:

#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 m,n;scanf("%d %d",&m, &n);if (m > n) {int temp = m;m = n;n = temp;}int prime[9999];int index = 0;int ans = 0;for (int i = m; 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,%d)\n",prime[i-1],prime[i]);}}if (ans == 0) {printf("没有找到");}else{printf("共找到%d对孪生素数",ans);}
}

7-12 验证“哥德巴赫猜想”

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。

输入格式:

输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。

输出格式:

在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。

输入样例:

24

输出样例:

24 = 5 + 19

 参考答案:

#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);for(int i = 2; i <= n; i++) {if (isPrime(i) == true && isPrime(n-i) == true) {printf("%d = %d + %d",n,i,n-i);break;}}
}

7-13 天梯赛座位分配

天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的队伍还没有分配座位,则需要安排他们的队员隔位就坐。本题就要求你编写程序,自动为各校生成队员的座位号,从 1 开始编号。

输入格式:

输入在一行中给出参赛的高校数 N (不超过100的正整数);第二行给出 N 个不超过10的正整数,其中第 i 个数对应第 i 所高校的参赛队伍数,数字间以空格分隔。

输出格式:

从第 1 所高校的第 1 支队伍开始,顺次输出队员的座位号。每队占一行,座位号间以 1 个空格分隔,行首尾不得有多余空格。另外,每所高校的第一行按“#X”输出该校的编号X,从 1 开始。

输入样例:

3
3 4 2

输出样例:

#1
1 4 7 10 13 16 19 22 25 28
31 34 37 40 43 46 49 52 55 58
61 63 65 67 69 71 73 75 77 79
#2
2 5 8 11 14 17 20 23 26 29
32 35 38 41 44 47 50 53 56 59
62 64 66 68 70 72 74 76 78 80
82 84 86 88 90 92 94 96 98 100
#3
3 6 9 12 15 18 21 24 27 30
33 36 39 42 45 48 51 54 57 60

参考答案:

#include<stdio.h>
int main()
{int n = 0;scanf("%d", &n);int num[120] = {0};int max = 0;int id = 0;int pos[120][15][15] = {0};int pre = 0;//输入各高校队伍数并求出最大的队伍数for (int i = 1; i <= n; i++){scanf("%d", &num[i]);max = num[i] > max ? num[i] : max;}//编号for (int j = 1; j <= max; j++){for (int k = 1; k <= 10; k++){for (int i = 1; i <= n; i++){if (j <= num[i]){//同一个学校隔位坐if (pre == i){id += 2;}else{//不同学校正常坐id += 1;}pre = i;pos[i][j][k] = id;}}}}//打印编号信息for (int i = 1; i <= n; i++){printf("#%d\n", i);for (int j = 1; j <= num[i]; j++){for (int k = 1; k <= 10; k++){if (k > 1){printf(" ");}printf("%d", pos[i][j][k]);}printf("\n");}}return 0;
}

7-14 打印沙漏

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

************
*****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

19 *

输出样例:

************
*****
2

参考答案: 

#include<stdio.h>
#include<math.h>
int main(){int n;char c;scanf("%d %c",&n,&c);int m=sqrt((n+1)/2);for(int i = 1;i <= m; i++){for(int j = 0; j < i-1; j++){printf(" ");}for(int j = 1; j <= 2*m-2*i+1; j++){printf("%c",c);}printf("\n");}for(int i = 1; i <= m-1; i++){for(int j = 1; j <= m-i-1; j++){printf(" ");}for(int j = 1; j <= 2*(i+1)-1; j++){printf("%c",c);}printf("\n");}printf("%d",n-2*m*m+1);
}

7-15 币值转换

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:

输入在一行中给出一个不超过9位的非负整数。

输出格式:

在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

 参考答案:

#include<stdio.h>
int main()
{char rate[10] = {'0','0','S','B','Q','W','S','B','Q','Y'};char flag[10] = {'a','b','c','d','e','f','g','h','i','j'};char num[10];int n;scanf("%d",&n);if(n == 0){printf("a");return 0;}int i = 0;while(n != 0){num[i+1] = n % 10;n /= 10;i++;}for(i ; i > 0 ; i--){if(num[i] == 0 &&num[i-1] == 0){if(i == 5){printf("%c",rate[i]);}continue;}printf("%c",flag[num[i]]);if(i != 1 && num[i] != 0){printf("%c",rate[i]);}}return 0;
}

7-16 N个数求和

本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。

输入格式:

输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

输出格式:

输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

输入样例1:

5
2/5 4/15 1/30 -2/60 8/3

输出样例1:

3 1/3

输入样例2:

2
4/3 2/3

输出样例2:

2

输入样例3:

3
1/3 -1/6 1/8

输出样例3:

7/24

参考答案: 

#include<stdio.h>
typedef long long ll;
int n;
ll zi[110];
ll mu[110];
//求最大公因数,用于化简
ll gcd(ll a,ll b) {return a%b == 0 ? b : gcd(b, a%b);
}
int main()
{scanf("%d",&n);for (int i = 1; i <= n; i++) {scanf("%lld/%lld",&zi[i],&mu[i]);}//只有一个分数直接输出if (n == 1) {printf("%lld/%lld\n",zi[1]/(gcd(zi[1],mu[1])),mu[1]/(gcd(zi[1],mu[1])));}else {ll a = zi[1];ll b = mu[1];for (int i = 2; i <= n; i++) {a = a*mu[i] + zi[i]*b;b *= mu[i];int temp_a = a/gcd(a,b);int temp_b = b/gcd(a,b);a = temp_a;b = temp_b;}if (a%b == 0) {printf("%lld",a/b);}else {//处理真分数if (a < b) {printf("%lld/%lld",a/gcd(a,b),b/gcd(a,b));}//处理假分数else {printf("%lld %lld/%lld",a/b, (a%b)/gcd(a%b,b), b/gcd(a%b,b));}}}}


http://www.ppmy.cn/news/1540376.html

相关文章

【Linux】进程ID和线程ID在日志中的体现

在分析内核打印日志流程的时候&#xff0c;发现有时候同一个进程函数调用关系比较混乱&#xff08;因为只打印了进程号&#xff09;&#xff0c;现象就是一个函数走着走着不知道走哪里去了。 另一个现象是&#xff0c;在Linux启动Firefox的时候&#xff0c;启了大概80个进程&…

android11 usb摄像头添加多分辨率支持

部分借鉴于&#xff1a;https://blog.csdn.net/weixin_45639314/article/details/142210634 目录 一、需求介绍 二、UVC介绍 三、解析 四、补丁修改 1、预览的限制主要存在于hal层和framework层 2、添加所需要的分辨率&#xff1a; 3、hal层修改 4、frameworks 5、备…

视频美颜SDK与直播平台的融合:实现实时美颜的技术方案详解

视频美颜SDK作为一种技术解决方案&#xff0c;已经广泛应用于各类直播平台中&#xff0c;实现了实时美颜效果的优化。那么&#xff0c;视频美颜SDK是如何与直播平台融合&#xff0c;打造高效的实时美颜效果的&#xff1f;本文将对此技术方案进行详细解析。 一、视频美颜SDK的核…

滚雪球学Redis[6.2讲]:Redis脚本与Lua:深入掌握Redis中的高效编程技巧

全文目录&#xff1a; &#x1f4dd;前言&#x1f6a6;正文&#x1f31f;6.2.1 Lua脚本的优势&#x1f58b;️6.2.2 EVAL命令与Lua脚本编写&#x1f435;编写Lua脚本的基本步骤&#x1f436;示例&#xff1a;简单的GET和SET操作&#x1f431;示例&#xff1a;Lua实现自增和过期…

FFMPEG录屏(19)--- 枚举Windows下的屏幕列表,并获取名称、缩略图

在Windows下枚举显示器列表并获取名称、缩略图 在Windows系统中&#xff0c;枚举显示器列表并获取它们的名称和缩略图是一个常见的需求。本文将详细介绍如何实现这一功能&#xff0c;涉及到的主要技术包括Windows API和C编程。 获取显示器信息 首先&#xff0c;我们需要一个…

【升华】python基础包NumPy学习

NumPy是使用Python进行科学计算的基础软件包。除其他外&#xff0c;它包括&#xff1a; 功能强大的N维数组对象。精密广播功能函数。集成 C/C和Fortran 代码的工具。强大的线性代数、傅立叶变换和随机数功能。 # 1、安装包 $ pip install numpy# 2、进入python的交互式界面 $…

FFmpeg 4.3 音视频-多路H265监控录放C++开发四 :RGB颜色

一 RGB 的意义&#xff1f; 为什么要从RGB 开始讲起呢&#xff1f; 因为最终传输到显卡显示器的颜色都是RGB 即使能处理YUV的API&#xff0c;本质上也是帮你做了从 YUV 到 RGB的转换。 RGB888 表示 R 占8bit&#xff0c;G 占8bit&#xff0c;B 占8bit&#xff0c;也就是每一…

解锁A/B测试:如何用数据驱动的实验提升你的网站和应用

来源&#xff1a;Gallo, A. (2017, June 28). A refresher on A/B testing. Harvard Business Review. https://hbr.org/2017/06/a-refresher-on-ab-testing 在数字化时代&#xff0c;我们每天都在被大量的信息和广告轰炸。那么&#xff0c;如何让你的网站或应用脱颖而出&…