【C/PTA】循环结构进阶练习(三)

本文结合PTA专项练习带领读者掌握循环结构,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。

文章目录

    • 7-1 循环-Fibonacci数列的运算
    • 7-2 循环-找数字
    • 7-3 循环-小智的捕食计划
    • 7-4 循环-抱大腿
    • 7-5 循环-跳!
    • 7-6 循环-生气的峰峰
    • 7-7 循环-平方根
    • 7-8 循环-得分
    • 7-9 循环-7的倍数
    • 7-10 循环-斯诺克
    • 7-11 循环-桃子与猴子
    • 7-12 循环-好吃的苹果
    • 7-13 循环-跳动的皮球
    • 7-14 循环-Lucky Number
    • 7-15 循环-奇偶
    • 7-16 循环-美丽的数
    • 7-17 循环-对峙
    • 7-18 循环-求约数个数
    • 7-19 循环-阶乘
    • 7-20 循环-斐波那契数列
    • 7-21 循环-水仙花数
    • 7-22 循环-完美素数
    • 7-23 循环-完美数
    • 7-24 循环-养兔子
    • 7-25 循环-A的B次方
    • 7-26 循环-frog
    • 7-27 循环-向前冲吧,皮蛋
    • 7-28 循环-捡馅饼
    • 7-29 循环-max_and_min
    • 7-30 循环-Perfect Number
    • 7-31 循环-平方根
    • 7-32 循环-sum
    • 7-33 循环-奇怪的斐波那契数列
    • 7-34 循环-字符统计
    • 7-35 沙漏
    • 7-36 求简单交错序列前N项和
    • 7-37 21循环-求和2
    • 7-38 个位数
    • 7-39 循环-分数矩阵

7-1 循环-Fibonacci数列的运算

小白龙最近学习了Fibonacci数列。它是这样定义的,F(1)=1; F(2)=1; F(n)=F(n-1)+F(n-2) (n>=3); 小白龙想改变一下,他把Fibonacci数列改为:

2/1, 3/2, 5/3…,F(n+2)/F(n+1)这种数列,现在给你一个数字n(2<n<=50),请你求出他前n项之和。
输入格式:

输入仅一个正整数n(2<=n<=50)。
输出格式:

输出为一个实数,保留小数点后六位,表示序列 2/1, 3/2, 5/3…,F(n+2)/F(n+1)的和。
输入样例:

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

7

输出样例:

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

11.626099

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

7-2 循环-找数字

输入一行字符串,然后计算数字的个数。
输入格式:

输入一行字符串(不超过一百个字符)。
输出格式:

输出一个整数:数字的个数。
输入样例:

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

520firefirefire

输出样例:

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

3

#include <stdio.h>
int main()
{char c;int count=0;while((c=getchar())!='\n'){if(c>='0'&&c<='9'){count++;}}printf("%d",count);
}

7-3 循环-小智的捕食计划

城市外有若干只荒神,小智当天捕食了一半,感觉收获有点少,又捕食了一只。第二天小智捕食了剩下的荒神的一半,又多捕食了一只。到了第n天,发现只剩下一只荒神。求第2天城市外有几只荒神?
输入格式:

输入仅一个整数n(2<=n<=30)。
输出格式:

输出一个整数:第2天城市外有几只荒神。
输入样例:

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

5

输出样例:

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

22

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

7-4 循环-抱大腿

新的一周里,老师给蒟蒻W新布置了n道题的作业,题目的编号1到n,第一道题的难度值为a,往后每道题的难度值比前一道题难度值多b。蒟蒻W有一个能力值c,他只能解决难度值小于等于c的题目。然而,这周的作业难度让W有点难顶,幸运的是,W同时认识hhd学长和orange学长,两位学长都太强了,没有什么题目是他们解决不掉的,然而为了让W能得到锻炼,hhd学长只会帮W解决题目编号为x的倍数且难度值大于c的题,orange学长只会帮W解决题目编号为y的倍数且难度值大于c的题目,现在蒟蒻W想知道两位学长共能帮他解决的题目的难度值之和是多少?
输入格式:

输入数据包含六个整数n,a,b,c,x,y

(0<=n<=1e5, 1<=a,b<=1e3,1<=c<=1e9,2<=x,y<=n,保证所有数据在int范围内)
输出格式:

输出两位学长能帮W解决的题目的难度值和

输入样例:

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

100 3 5 50 4 5

输出样例:

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

10043

#include <stdio.h>
int main()
{long long int n,a,b,c,x,y;scanf("%lli%lli%lli%lli%lli%lli",&n,&a,&b,&c,&x,&y);long long int sum=0,mount=0,all=0;if(a>c){all+=a;}for(long long int i=2;i<=n;i++){a=a+b;if(i%x==0&&a>c){sum+=a;}else if(i%y==0&&a>c){mount+=a;}}all=sum+mount;printf("%lld",all);
}

7-5 循环-跳!

这是一个夏天的傍晚,hhd学长正在夕阳下愉快地在一条笔直跑道上跳跃,但由于hhd学长长期在实验室里训练,导致体力不足,已知hhd学长第一步可以跳a米,接下来的每一步都只能跳上一步的98%米,现在hhd学长想知道,如果要跳到至少距离起点x米的位置,他需要跳几步?
输入格式:

输入数据包含两个数a,x(2<=a<=5,0<=x<=100)。

a为整数,x不一定为整数。
输出格式:

输出数据仅有一个数,为对应步数。
输入样例:

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

2 4.3

输出样例:

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

3

#include <stdio.h>
#include <math.h>int main() {double a,x;scanf("%lf%lf",&a,&x);int n=0;double sum=0;while(sum<x){sum+=a*pow(0.98,n);n++;}printf("%d",n);return 0;
}

7-6 循环-生气的峰峰

小峰峰上初中了,小峰峰除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习pascal、c和c++。但是小峰峰如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设小峰峰不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下小峰峰下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入格式:

输入包括 7 行数据,分别表示周一到周日的日程安排。每行包括两个小于 10的非负整数,用空格隔开,分别表示小峰峰在学校上课的时间和妈妈安排她上课的时间。
输出格式:

一个数字。如果不会不高兴则输出 0 ,如果会则输出最不高兴的是周几(用 1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
输入样例:

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

5 3
6 2
7 2
5 3
5 4
0 4
0 6

输出样例:

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

3

#include <stdio.h>
int main()
{int a[7],b[7];for(int i=0;i<7;i++){scanf("%d %d",&a[i],&b[i]);}int flag=0;//判断不会不高兴for(int i=0;i<7;i++){if(a[i]+b[i]>8)flag=1;}	if(flag==0){printf("0");return 0;}//判断不高兴int maxday=-1;int maxhour=0;for(int i=0;i<7;i++){int allhour=a[i]+b[i];if(allhour>maxhour){maxday=i+1;maxhour=allhour;}}printf("%d",maxday);return 0;
}

7-7 循环-平方根

输入一个大于等于1000的正整数,计算输出它的平方根(如果平方根不是整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否为大于等于1000的正数,若不是,则重新读入。
输入格式:

输入若干个正整数,直到输入大于等于 1000 。保证输入数据中含有大于等于 1000 的正整数。
输出格式:

输出计算结果。
输入样例:

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

741
681
761
1066

输出样例:

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

32

#include <stdio.h>
#include <math.h>
int main() {int n;do{scanf("%d",&n);}while(n<1000);int a=sqrt(n);printf("%d",a);return 0;
}

7-8 循环-得分

众所周知,在各大比赛规则中,选手得分通常由评委团给分中去掉一个最高分和一个最低分以后的平均值。现在,小C需要用电脑算分。于是他找来机智的你来为他写个程序。
输入格式:

输入第一行为一个整数N ( 2 < N <= 100 )。

接下来N行,没行有1个整数(a1 , … , aN) 表示评委团给出的分数。(0 < ai <= 100)
输出格式:

输出一个数表示最后得分。(保留到小数点后一位)
输入样例:

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

5
98
95
97
96
100

输出样例:

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

97.0

7-9 循环-7的倍数

给出一个含有n个整数的序列,请输出这个序列中是7的倍数的数有几个。
输入格式:

第一行输入一个数 n(2 <= n <= 100),表示有 n 个整数。

第二行输入 n 个整数 ai (1 <= i <= n , 0 <= ai <= 100)。
输出格式:

输出序列中是7的倍数的数的个数。
输入样例:

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

13
36 50 13 42 88 87 66 32 28 73 94 52 11

输出样例:

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

2

#include <stdio.h>
int main()
{int n,count=0;scanf("%d",&n);int a[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);if(a[i]%7==0)count++;}printf("%d",count);}

7-10 循环-斯诺克

每逢周末,繁荣山丘的村民也会聚集在一起打斯诺克,据说冠军会奖励一台最先进的赛车喔~首先,先来介绍一下斯诺克的基本规则(熟悉的童鞋可以无视(~ ̄▽ ̄)~)

使用的球为1个白球,然后去击打15个红球和6个彩球(黄、绿、棕、蓝、粉、黑)。击球顺序为”一红、一彩”交替. 其中彩球落袋后要放回,直到红球全部落袋。 然后以黄、绿、棕、蓝、粉、黑的顺序逐个击球,最后以得分高者为胜.

分值: 红(1分)、黄(2分)、绿(3分)、棕(4分)、蓝(5分)、粉(6分)、黑(7分)

现在给出球桌上所剩球数balls,皮蛋目前得分score1,对手目前得分score2.请你判断,在最好情况下,皮蛋能否赢得这场球赛?(若出现平局,不算赢)
输入格式:

输入三个正整数balls, score1, score2, 含义如上所述。
输出格式:

若皮蛋能赢得球赛,输出"YES”,否则输出"NO”。
输入样例:

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

12 1 1

输出样例:

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

YES

7-11 循环-桃子与猴子

猴子第一天摘了若干桃子,当天吃了一半,还不过瘾,又多吃了一个。第二天,又将剩下的桃子吃掉一半,又多吃了一个。到了第n天早上想再吃时,发现只剩下一个桃子了。求第一天猴子摘下了多少桃子。
输入格式:

输入仅一个整数n(1<=n<=30)。
输出格式:

输出一个整数:第一天摘了多少桃子。
输入样例:

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

5

输出样例:

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

46

7-12 循环-好吃的苹果

小新买了一袋苹果,每个苹果都有一个val值,val值越高,这个苹果越美味。他想将val值最大的苹果留给小葵,把val值次大的苹果留给自己。你能帮他找出他想要的苹果吗?
输入格式:

输人第一行有一个整数 N (2 <= N <= 100) ,表示苹果个数。
接下来N行,每行一个不大于1000的正整数表示苹果的val值。(数据保证val值互不相同)。
输出格式:

输出最大和次大的val值,以一个空格隔开。
输入样例:

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

5
3
5
7
2
10

输出样例:

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

10 7

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

7-13 循环-跳动的皮球

一个球从100米高度自由落下,每次落地后反弹到原高度一半,再落下,再反弹…求它第n次落地时,共下落了多少米,第n次反弹多高。
输入格式:

输入仅一个整数n(1<=n<=20)。
输出格式:

输出第n次落地前下落的总路程(不计算反弹的路程),及第n次反弹的高度,保留4位小数。
输入样例:

2

输出样例:

150.0000 25.0000

注:前100米不计入路程。
输入样例:

5

输出样例:

193.7500 3.1250

#include<stdio.h>
int main()
{int n;scanf("%d",&n);double a=100,h=100;double sum=100;for(int i=1;i<=n;i++){h=h/2;//反弹的高度}if(n==1)sum=100;for(int i=2;i<=n;i++){sum+=a/2;a/=2;	}printf("%.4f %.4f",sum,h);}

7-14 循环-Lucky Number

皮蛋心爱的赛车零部件损坏严重T_T,于是皮蛋只好去求助维修达人小强,但是小强认为只有零部件损坏数量为Lucky Number才有可能修复好。若一个数的各位数字之和是素数,那么小强就认为它是Lucky Number。

请帮助可伶的皮蛋判断赛车能否修复好.
输入格式:

输入一个正整数n代表零部件损坏数量。
输出格式:

如果能修复好,请输出”Congratulations, Dao!”

反之则输出”So pity, Dao!”
输入样例:

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

7

输出样例:

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

Congratulations, Dao!

#include <stdio.h>
#include <math.h>
int main(){long long int n,sum=0;scanf("%lli",&n);while(n!=0){sum+=n%10;n/=10;}if(sum==0||sum==1){printf("So pity, Dao!");return 0;}for(int i=2;i<=sqrt(sum);i++){if(sum%i==0){printf("So pity, Dao!");return 0;}}printf("Congratulations, Dao!");return 0;
}

7-15 循环-奇偶

给出一个含有 n 个数的数列,求在奇数序号位置的数的和与在偶数序号位置上的数的和的差。

如序列: 1 5 8 6 7 9 5 2 1 4

则答案为:(1+8+7+5+1)-(5+6+9+2+4)= -4
输入格式:

第一行输入一个数 n(1 <= n <= 100) 。

第二行输入 n 个数 ai(1 <= i <= n , 0 <= ai <= 100) 。
输出格式:

输出在奇数序号位置的数的和与在偶数序号位置上的数的和的差。
输入样例:

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

10
1 5 8 6 7 9 5 2 1 4

输出样例:

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

-4

#include <stdio.h>
int main(){int n;scanf("%d",&n);int a[n],all=0,sum=0;for(int i=0;i<n;i++){scanf("%d",&a[i]);}sum+=a[0];all+=a[1];for(int i=2;i<n;i++){if(i%2==0)sum+=a[i];elseall+=a[i];}printf("%d",sum-all);
}

7-16 循环-美丽的数

Alice是个爱美的人,而且她对美有独特的见解。就拿数字来说,两个整数中如果任意一个数的所有真约数(除去本身的约数)之和等于另外一个数,则她认为这组数是美的。现在要求你用C语言编写一段程序,判断任意给定的两个整数是否是美的,如果是输出YES,否则输出NO。

如:220的所有真约数之和为1+2+4+5+10+11+20+22+44+55+110=284,且284的所有真约数之和为1+2+4+71+142=220,所以这组数是美的。
输入格式:

输入数据的第一行包含一个整数N,接下有N行,每行包含两个整数a、b,以空格作为间隔,其中 0 <= a,b <= 600000。
输出格式:

输出有N行,每行为YES或NO。
输入样例:

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

2
220 284
110 200

输出样例:

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

YES
NO

#include <stdio.h>int hanshu(int n)
{int sum=0;for(int i=1;i<n;i++){if(n%i==0)sum+=i;}return sum;
}int main()
{int x;scanf("%d",&x);int a[x],b[x];for(int i=0;i<x;i++){scanf("%d %d",&a[i],&b[i]);}for(int i=0;i<x;i++){if(hanshu(a[i])==b[i]&&hanshu(b[i])==a[i]){printf("YES\n");}elseprintf("NO\n");}}

7-17 循环-对峙

_RiverLoong和Anani_leaf在异世界里都是大土豪,而且都很谦虚,不愿意透露谁更有钱。笔者非常想知道他们俩谁更有钱,于是拜托你用编程计算出他俩的财富。

首先,_RiverLoong和Anani_leaf都会将自己的所有财产埋在一片属于自己的土地里,他们俩占据了一片没有边界的领地,然后在这片领地上划一条分界线,分界线以下为Anani_leaf的地盘,以上为_RiverLoong的地盘,在这片领地上建立一个笛卡尔二维坐标系,分界线为y=ax+b,现在笔者告诉你a,b,n的值,以及所有埋在地下的财产的坐标(x,y)与财产值p,请你计算出谁更有钱。
输入格式:

数据第一行给出三个整数n,a,b,然后接下来n行每行给出三个整数x,y,p。
输出格式:

如果_RiverLoong更有钱输出“_RiverLoong is richer.”;如果Anani_leaf更有钱输出“Anani_leaf is richer.”;如果两个人财产一样多输出“They are as rich as each other.”最后再分别输出_RiverLoong和Anani_leaf的总财富值。
输入样例:

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

2 1 0
1 3 2
2 -1 2

输出样例:

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

They are as rich as each other.
2 2

#include <stdio.h>
int main()
{long long int n,a,b;scanf("%lli%lli%lli",&n,&a,&b);long long int x,y,p,sum=0,all=0;for(long long int i=0;i<n;i++){scanf("%lli%lli%lli",&x,&y,&p);if(y>a*x+b){sum+=p;}else if(y<a*x+b){all+=p;}}if(sum>all)printf("_RiverLoong is richer.\n");else if(sum<all)printf("Anani_leaf is richer.\n");else{printf("They are as rich as each other.\n");}printf("%lld %lld",sum,all);}

7-18 循环-求约数个数

求一个正整数n的约数个数。注意: int范围过小时,请用long long。
输入格式:

输入一行包括一个正整数n(1<=n<=10^12)。
输出格式:

输出仅有一个数,为n的约数个数。
输入样例:

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

2

输出样例:

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

2

#include <stdio.h>
#include <math.h>int main() {long long int n;scanf("%lli", &n);int count = 0;for (int i=1;i<=sqrt(n);i++){//如果n的约数i不大于√n,那么n/i一定是n的约数if(n%i==0){count++;if(n/i!=i){  // 如果n/i不等于i,说明i和n/i是一对不同的约数,count再加上1count++;}}}printf("%d",count);return 0;
}

7-19 循环-阶乘

给一个数 n,输出 n 的阶乘。
输入格式:

输入一个整数 n(1 <= n <= 12) 。
输出格式:

输出 n 的阶乘 n! 。
输入样例:

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

3

输出样例:

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

6

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

7-20 循环-斐波那契数列

比萨的列奥纳多,又称斐波那契,意大利数学家,西方第一个研究斐波那契数,并将现代书写数和乘数的位值表示法系统引入欧洲。
斐波那契在《算盘书》中提出了一个有趣的兔子问题:
  一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
那么,第一个月,我们有1对兔子。第二个月,就有了2对兔子。依次类推,用F[i]来表示第i个月能繁殖多少兔子。于是:
F[0]=1,
F[1]=1,
F[2]=2,
F[3]=3,

F[n]=F[n-1]+F[n-2],
现在的问题是,给定n个数字ai,请你计算出F[ai]%1000007的值。
输入格式:

输入的第一行包括1个数字n(0<n<=1000),表示接下来有N个询问。
接下来,有N个数字a1~an(0<ai<400)
输出格式:

对于每次询问,先输出一行“ Case %d:”,再输出f[ai]%1000007的值.具体格式参照输出示例。
输入样例:

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

6
3
6
2
1
4
7

输出样例:

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

Case 1:
3
Case 2:
13
Case 3:
2
Case 4:
1
Case 5:
5
Case 6:
21

7-21 循环-水仙花数

一个三位数,当其各个位数字的立方和等于它本身时,它就是一个水仙花数。
小新希望你帮他找出两个数之间有多少个水仙花数。
输入格式:

输入仅一行,包括两个整数n 和m (100 <= n,m < 1000,m可能小于n)。
输出格式:

输出n 和 m 之间有多少个水仙花数(包括n 和 m 在内)。
输入样例:

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

300 380

输出样例:

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

2

#include <stdio.h>
int main()
{int n,m;scanf("%d%d",&n,&m);if(n>m){int t=m;m=n;n=t;}int count=0;for(int i=n;i<=m;i++){int c=i%10;int b=i/10%10;int a=i/100;if(c*c*c+a*a*a+b*b*b==i)count++;}printf("%d",count);
}

7-22 循环-完美素数

对于质数P,如果存在两个正整数a,b使得P=a3-b3,则称P为完美素数。现在给你一个质数,你需要判断它是否为完美素数。
输入格式:

输入一个质数P ,2<=P<=10000000。
输出格式:

P如果为完美素数输出“YES”,否则输出“NO"。
输入样例:

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

7

输出样例:

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

YES

#include <stdio.h>
int main()
{int p;scanf("%d",&p);for(int a=1;a<=1000;a++){for(int b=1;b<=1000;b++){if(p==a*a*a-b*b*b){printf("YES");return 0;}}}printf("NO");return 0;
}

7-23 循环-完美数

各个真约数的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。(列出某数的所有约数,去掉该数本身,剩下的就是它的真约数)

例如对于28的真约数为1、2、4、7、14,1+2+4+7+14=28

输入一个数字N,请输出该数字的真约数和,及该数字是否为完全数。
输入格式:

输入仅包含一个数字n(0<n<1000)。
输出格式:

输出数字n的真约数和,并输出n是否为完全数。是则输出“YES”,否则输出“NO”。
输入样例:

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

6

输出样例:

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

6 YES

输入样例:

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

10

输出样例:

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

8 NO

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

7-24 循环-养兔子

假如,一对新生的兔子在两个月后有繁殖能力,即一对新生的兔子在第三个月及以后的每一个月都将生下一对小兔子。一位农夫在第一个月买了一对刚出生的兔子,请你帮忙算出第N个月,这位农夫将拥有多少对兔子。(假设兔子不会死。)
输入格式:

输入一个整数N ( 0 < N <= 40 )
输出格式:

输出一个整数表示第N个月农夫将拥有多少对兔子。
输入样例:

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

2

输出样例:

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

1

输入样例:

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

3

输出样例:

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

2

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

7-25 循环-A的B次方

AB表示的是"A的B次方",即B个A相乘,VayH觉得如果数大一点的话,结果岂不是长得眼花缭乱吗?所以,他决定只要得到AB结果的最后四位数。
输入格式:

两个正整数A和B(1 <= A, B <= 10000),A和B之前用空格隔开
输出格式:

输出一行, 输出A^B的后四位,若不足四位,则补上前导零。
输入样例:

3 17

输出样例:

0163

#include<stdio.h>
int main()
{int a,b;scanf("%d %d",&a,&b);int x=1;for(int i=0;i<b;i++){x=(x*a)%10000;}printf("%04d",x);
}

7-26 循环-frog

琪露诺很喜欢冻青蛙,她第一天冻一只,之后每天都比前一天多冻一只,现在问,她要过几天才会总计冻不少于n只青蛙?
输入格式:

输入一行包括一个正整数n(1<=n<=10^9)。
输出格式:

输出一行包括一个正整数,为冻超过n只青蛙至少需要的天数。
输入样例:

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

2

输出样例:

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

2

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

7-27 循环-向前冲吧,皮蛋

最近,帅气的皮蛋每天都会驾驶着他心爱的尖峰 HT 驰骋在繁荣山丘的赛道上。已知皮蛋跑了 n 条赛道,第 i (1 <=i <=n) 条赛道长度为 di , 用时为 ti .(假设每条赛道只有 一圈).求皮蛋行驶的平均速度.
输入格式:

输入第 1 行为一个整数 n (1 <=n <=10000) .
接着n行,每 行 有 两 个 实 数 d 和 t 。
输出格式:

输出平均速度(保留到小数点后 3 位)。
输入样例:

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

3
1505 90
1230 45
2300 110

输出样例:

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

20.551

#include<stdio.h>
int main()
{int n;scanf("%d",&n);double sum=0,all=0,a[n],b[n];for(int i=0;i<n;i++){scanf("%lf %lf",&a[i],&b[i]);sum+=a[i];all+=b[i];}printf("%.3f",sum/all);
}

7-28 循环-捡馅饼

最近_RiverLoong在做题的空闲时间没事写了一个捡馅饼的游戏,游戏是这样的:在一条数轴上有一个永远饥饿的人RL,他会在数轴上不停地捡馅饼,每隔t+1秒时间天上会掉下来一个馅饼,并在地上停留持续t秒,t秒后会消失,RL每秒能走1米,他必须在它消失前捡到它并在捡到后站在该处等待下一个馅饼掉落,如果捡不到他就不会去走。由于RL不知道下一秒馅饼会落在哪,所以干脆每个他能捡到的馅饼他都会去捡。

​ 一开始给出馅饼个数n,RL的位置pos和馅饼消失的时间值t,然后接下来n行每行给出1个数,代表每个馅饼在落在数轴上的位置,求最后他最后捡到的馅饼数和走过的总距离。
输入格式:

输入第一行给出三个整数n,p,time(所有整数绝对值小于100000),接下来n行每行给出一个整数pos。
输出格式:

输出最后捡到的馅饼数和他走过的总距离。
输入样例:

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

4 2 5
1
-1
0
7

输出样例:

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

3 4

7-29 循环-max_and_min

输入n个数,请你找出次最大值和次最小值。
输入格式:

输入一行,第一个数为n(1<n<=100),表示数的个数,接下来有n个数,均为小于10^6的非负整数,每个之间用空格隔开,最后以换行结束。题目保证次最大值和次最小值存在。
输出格式:

输出次最大值和次最小值。
输入样例:

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

4 1 2 3 4

输出样例:

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

3 2

#include <stdio.h>
int main()
{int max=0,secondmax=0;int min=10000,secondmin=10000;int n;scanf("%d",&n);int s;for(int i=0;i<n;i++){scanf("%d",&s);if(s>max){secondmax=max;max=s;	}else if(s<max&&s>secondmax)secondmax=s;if(s<min){secondmin=min;min=s;}else if(s>min&&s<secondmin)secondmin=s;}printf("%d %d",secondmax,secondmin);
}

7-30 循环-Perfect Number

在繁荣山丘,存在着一种神奇的数,人们都称之为 Perfect Number。它是指在A进制下的各位数字之和 等于在B进制下的各位数字之和。比如说,2992的十进制表示的各位数字之和为 2+9+9+2 = 22, 它的十二进制表示为1894,各位数字之和为 1+8+9+4 = 22。So perfect!!!

请你根据输入的正整数,判断其是否为Perfect Number.
输入格式:

输入三个正整数n A B,进制A,进制B。
输出格式:

若该数为perfect number,请输出 “n is a perfect number.”

否则,输出 "n is not a perfect number.”
输入样例:

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

123 2 8

输出样例:

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

123 is not a perfect number.

#include <stdio.h>
int hanshu(int n,int x)
{int sum=0;	while(n>0){int t=n%x;sum+=t;n/=x;}return sum;}int main()
{int n,a,b;scanf("%d%d%d",&n,&a,&b);int c=hanshu(n,a);int d=hanshu(n,b);if(c==d)printf("%d is a perfect number.",n);elseprintf("%d is not a perfect number.",n);
}

7-31 循环-平方根

利用迭代法计算x=sqrt(a)。

求平方根的迭代公式为:

xn+1=0.5*(xn+a/xn)。
输入格式:

输入仅一个实数a。
输出格式:

输出x,保留6位小数。
输入样例:

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

5.0

输出样例:

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

2.236068

#include <stdio.h>
#include <math.h>
double hanshu(double a)
{double x0=a;double x1=0.5*(x0+a/x0);while(fabs(x1-x0)>=1e-6){x0=x1;x1=0.5*(x0+a/x0);}return x1;
}int main()
{double a;scanf("%lf",&a);double result=hanshu(a);printf("%.6f",result);return 0;
}

7-32 循环-sum

统计给定的n(n<10000)个数中,所有正数的和与负数的和。
输入格式:

第一行是一个n,n的范围已在题意中给出。

接下来一行输入n个整数。
输出格式:

输出两个数字,第一个为正数和,第二个为负数和,以空格隔开

如果没有正数或者负数则输出“no positive number 负数和”或“正数和 no negative number”,

如果正数负数都没有,则输出"no positive number no negative number"。
输入样例:

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

3
1 2 -1

输出样例:

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

3 -1

#include <stdio.h>
int main()
{int n;scanf("%d",&n);int a;int sum=0,count=0,all=0,geshu=0;for(int i=0;i<n;i++){scanf("%d",&a);if(a>0){sum+=a;count++;}else if(a<0){all+=a;geshu++;}}if(count==0&&geshu==0){printf("no positive number no negative number");}else if(count==0&&geshu!=0){printf("no positive number %d",all);}else if(count!=0&&geshu==0){printf("%d no negative number",sum);}else{printf("%d %d",sum,all);}}

7-33 循环-奇怪的斐波那契数列

在繁荣山丘,有一种奇怪的斐波那契数列,人们不关心他第几项是多少,只关心它能否被3整除。在这里,,F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2)。

请你判断一下第n项是否能被3整除?
输入格式:

输入一行,包括1个正整数n。
输出格式:

若F(n)能被3整除,则输出"YES",否则输出"NO"。
输入样例:

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

5

输出样例:

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

NO

#include <stdio.h>
int main() 
{int a[8] = {1, 2, 0, 2, 2, 1, 0, 1};int n;scanf("%d", &n);if (a[n % 8] == 0) {printf("YES");} else {printf("NO");}return 0;
}

7-34 循环-字符统计

输入一行字符,请分别统计出其中英文字母、空格、数字和其他字符的个数。
输入格式:

输入仅包含一行字符串,包含空格。字符串长度小于100。
输出格式:

输出包括4个数字,分别表示英文字母、空格、数字和其他字符的个数,以空格隔开。
输入样例:

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

You have 7 new messages!

输出样例:

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

18 4 1 1

#include <stdio.h>int main() {int letterCount=0,spaceCount=0,digitCount=0,otherCount=0;char c;while((c=getchar())!='\n'){if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){letterCount++;}else if(c==' '){spaceCount++;}else if(c>='0'&&c<='9'){digitCount++;} else{otherCount++;}}printf("%d %d %d %d",letterCount,spaceCount,digitCount,otherCount);return 0;
}

7-35 沙漏

给一个正整数 n,表示一个高度为 2 * n - 1 的沙漏,请打印出这个沙漏。
输入格式:

输入一个正整数 n (1 <= n <= 20)。
输出格式:

输出一个高度为 2 * n - 1 的沙漏(每行末尾换行无空格,不要输出多余空格)。
输入样例:

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

3

输出样例:

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

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

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

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + … 的前N项之和。
输入格式:

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

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

10

输出样例:

sum = 0.819

#include<stdio.h>
int main()
{double a=1,b=1,sum=1;int n;scanf("%d",&n);for(int j=2;j<=n;j++){a=-a;b+=3;sum+=a/b;	}printf("sum = %.3f",sum);
}

7-37 21循环-求和2

sxtc爱做数学题,今天他又拿到一道数学题:给定n,求出

在这里插入图片描述
他希望擅长求和的你帮他解出这个求和问题。
输入格式:

读入一个数n。
输出格式:

输出求和结果。
输入样例:

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

114

输出样例:

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

240

#include <stdio.h>
#include <math.h>
int main()
{long long int n;scanf("%lli",&n);long long int sum=0;for(int i=1;i<=sqrt(n);i++){if(n%i==0){sum+=i;if(n/i!=i){sum+=n/i;}  	}}printf("%lli\n",sum);
}

7-38 个位数

最近zyz大佬喜欢上了个位数,所以他讨厌除了个位数之外的所有数,于是他看到一个大于9的数,便用其数位之和去代替这个数,如果位数仍然大于9,则继续重复上述步骤,直到其小于10为止。

例如:13421 -> 1+3+4+2+1 = 11 -> 1+1 = 2
输入格式:

一个非负整数(int范围内)。
输出格式:

经过变换后的答案。
输入样例:

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

19260817

输出样例:

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

7

#include <stdio.h>
int main()
{int n;scanf("%d",&n);while(n>=10)//使得到的数小于10为止{int sum=0;while(n>0)//位数相加{sum+=n%10;n/=10;}n=sum;}printf("%d",n);
}

7-39 循环-分数矩阵

我们定义如下矩阵:

1/1  1/2  1/3
1/2  1/1  1/2
1/3  1/2  1/1

矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。

请求出这个矩阵所有元素的和。
输入格式:

每行给定整数N (N<50000),表示矩阵为 N*N。当N为0时,输入结束。
输出格式:

输出答案,保留2位小数。
输入样例:

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

1
2
3
4
0

输出样例:

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

1.00
3.00
5.67
8.83

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

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

相关文章

Docker学习——⑤

文章目录 1、什么是Docker Container&#xff08;容器&#xff09;2、容器的生命周期2.1 容器 OOM2.2 容器异常退出2.3 容器暂停 3、容器命令详解4、容器操作案例4.1 容器批量处理技巧4.2 容器交互模式4.3 容器自动重启4.4 容器环境变量配置 5、综合实战5.1 Mysql 容器化安装5.…

〔003〕虚幻 UE5 基础教程和蓝图入门

✨ 目录 ▷ 新建项目▷ 快捷操作▷ 镜头移动速度▷ 新建蓝图关卡▷ 打印字符串▷ 蓝图的快捷键▷ 场景中放置物体▷ 通过蓝图改变物体位置▷ 展现物体运动轨迹▷ 队列运行▷ 新建项目 打开虚幻启动程序,选择 引擎版本 后点击 启动选择 游戏 类型,默认设置中选择 蓝图,项目名…

C# winform 定时器

1.加入Timer using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace Te…

基于Fuzzing和ChatGPT结合的AI自动化测试实践分享

一、前言 有赞目前&#xff0c;结合insight接口自动化平台、horizons用例管理平台、引流回放平台、页面比对工具、数据工厂等&#xff0c;在研发全流程中&#xff0c;已经沉淀了对应的质量保障的实践经验&#xff0c;并在逐渐的进化中。 在AI能力大幅进步的背景下&#xff0c…

挑战100天 AI In LeetCode Day03(热题+面试经典150题)

挑战100天 AI In LeetCode Day03&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-52.1 题目2.2 题解 三、面试经典 150 题-53.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&am…

MySQL基础操作

注:mysql是大小写不敏感的. 1.数据库基础操作(展示) //1.展示当前数据库 show databases;//2.创建数据库 create database 数据库名;//3.使用数据库 use 数据库名;//4.删除数据库 drop database 数据库名;2.SQL中基本类型 2.1 数值类型(整数和浮点型) 注:decimal和numeric…

在Kotlin中设置User-Agent以模拟搜索引擎爬虫

前言 随着双十一电商活动的临近&#xff0c;电商平台成为了狂欢的中心。对于商家和消费者来说&#xff0c;了解市场趋势和竞争对手的信息至关重要。在这个数字时代&#xff0c;爬虫技术成为了获取电商数据的有力工具之一。本文将以亚马逊为例&#xff0c;介绍如何使用Kotlin编…

第22章_数据库的设计规范

文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库&#xff0c;设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff…

系列一、Spring + SpringMVC + MyBatis整合

一、概述 整合 Spring、SpringMVC、MyBatis。 二、整合步骤 2.1、pom <dependencies><!-- 普通maven项目中使用Sl4j注解 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1…

【JVM】运行时数据区、程序计数器

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JVM 一、 运行时数据区二、 程序计数器程序…

关于 pthread_create 传参的疑问

对于函数原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg) 里的参数 arg&#xff0c;之前一直有疑问&#xff0c;就是把 &thread 传给 arg时&#xff0c;新创建的线程里是否能取到这个值呢&#xff1…

macOS电池续航工具:Endurance中文

Endurance for Mac是一款强大而实用的电池管理和优化软件&#xff0c;专为MacBook设计。通过智能调整系统设置和管理后台应用&#xff0c;它能有效延长电池续航时间&#xff0c;提升工作和娱乐效率&#xff0c;成为你在各种场合下的得力助手。 Endurance for Mac软件的功能特色…

国网计算机类2024年最新考试大纲国家电网大纲

今年的专业部分变化较大&#xff0c;关注社长的早在很久前就知道会新增科目&#xff0c;新增科目的对应题库讲义已经编写完成&#xff0c;有需要的学弟可以后台私信我 欢迎大家后台私信咨询~ 公共部分没有变化&#xff0c;考点跟每年一样&#xff0c;考试临近如果时间充足备考…

OpenCV(opencv_apps)在ROS中的视频图像的应用(重点讲解哈里斯角点的检测)

1、引言 通过opencv_apps&#xff0c;你可以在ROS中以最简单的方式运行OpenCV提供的许多功能&#xff0c;也就是说&#xff0c;运行一个与功能相对应的launch启动文件&#xff0c;就可以跳过为OpenCV的许多功能编写OpenCV应用程序代码&#xff0c;非常的方便。 对于想熟悉每个…

JVM之jps虚拟机进程状态工具

jps虚拟机进程状态工具 1、jps jps&#xff1a;(JVM Process Status Tool)&#xff0c;虚拟机进程状态工具&#xff0c;可以列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执 行主类&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;的名称&#xff0c…

MCU系统的调试技巧

MCU系统的调试技巧对于确保系统稳定性和性能至关重要。无论是在嵌入式系统开发的初期阶段还是在产品维护和优化的过程中&#xff0c;有效的调试技巧可以帮助开发人员快速发现和解决问题&#xff0c;本文将讨论一些MCU系统调试的技巧。 首先&#xff0c;使用调试工具是非常重要…

神经网络可视化:卷积核可视化

文章目录 前言一般过程&#xff1a; 一、代码示例二、卷积核和输入图片相乘可视化总结 前言 卷积核可视化是一种用于理解卷积神经网络 (CNN) 中卷积层的工作原理和特征提取能力的方法。通过可视化卷积核&#xff0c;我们可以观察卷积层学习到的特征模式&#xff0c;帮助我们理…

CSS 网页布局

网页布局有很多种方式&#xff0c;一般分为以下几个部分&#xff1a;头部区域、菜单导航区域、内容区域、底部区域&#xff1a; 1&#xff09;、头部区域位于整个网页的顶部&#xff0c;一般用于设置网页的标题或者网页的logo。 <style> body { margin: 0; } /* 头部样…

04【保姆级】-GO语言指针

之前我学过C、Java、Python语言时总结的经验&#xff1a; 先建立整体框架&#xff0c;然后再去抠细节。先Know how&#xff0c;然后know why。先做出来&#xff0c;然后再去一点点研究&#xff0c;才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

大厂面试题-b树和b+树的理解

为了更清晰的解答这个问题&#xff0c;从三个方面来回答&#xff1a; a.了解二叉树、AVL树、B树的概念 b.B树和B树的应用场景 1.B树是一种多路平衡查找树&#xff0c;为了更形象的理解&#xff0c;我们来看这张图。 二叉树&#xff0c;每个节点支持两个分支的树结构&#xff…