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

news2024/12/23 13:31:04

本文结合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];
		else
		all+=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");
		}
		else
		printf("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再加上1
                count++;
            }
        }
    }
    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);
	else
	printf("%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);
	else
	printf("%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.coloradmin.cn/o/1185324.html

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

相关文章

金融帝国实验室(Capitalism Lab)推出一个密钥即完成注册机制!

为了方便趸购『金融帝国实验室』&#xff08;Capitalism Lab&#xff09;正版玩家&#xff0c;Enlight官方正式推出『一个密钥即完成注册』机制&#xff0c;切实简化游戏账户注册流程&#xff01; ————————————— 『一个密钥即完成注册』适用于趸购“游戏本体4DLC”…

前端工程化(vue脚手架安装)

用命令行安装&#xff0c;先安装NodeJs&#xff0c;配置环境变量 1.npm config set prefix "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Node.js" //引号内路径是NodeJs安装所在路径 2.npm config get prefix 查看其是否成功 3.npm install -g vue/cli 4…

Flutter——最详细(AppBar)使用教程

AppBar简介 Material Design 应用栏(标题栏) 使用场景&#xff1a; 顶部标题栏包括一些常用的菜单按钮 属性作用leading左边工具视图automaticallyImplyLeading左边图标的颜色title标题视图actions右边菜单按钮flexibleSpace其高度将与应用栏的整体高度相同bottom左侧底部文本内…

程序员怎样才能学好算法?这本书送几本给大家!

目录 笔者对算法的理解 写书的初衷及过程 本书的内容 购买方式 数据结构和算法是计算机科学的基石&#xff0c;是计算机的灵魂&#xff0c;要想成为计算机专业人员&#xff0c;学习和掌握算法是十分必要的。不懂数据结构和算法的人不可能写出效率更高的代码。计算机科学的很…

【原理篇】二、Bean加载控制

文章目录 1、编程式Bean加载控制2、注解式Bean加载控制3、Conditional派生注解4、Bean依赖的属性配置 Bean的加载控制指根据特定情况对bean进行选择性加载以达到适用于项目的目标 上篇Bean声明的方式中&#xff0c;后4种可以实现对Bean加载的控制&#xff0c;分别是&#xff1a…

0.1+0.2为什么不等于0.3

目录 一、0.10.2是如何执行的&#xff1f;1、转成浮点数2、浮点数相加3、浮点数转成十进制 二、BigDecimal 大家好&#xff0c;我是哪吒。 最近碰到一个问题&#xff0c;很有趣&#xff0c;我就不贴代码了&#xff0c;要不你们会以为我在无中生有。 我现在的心情很复杂&#x…

无人机航迹规划:五种最新智能优化算法(KOA、COA、LSO、GRO、LO)求解无人机路径规划MATLAB

一、五种算法&#xff08;KOA、COA、LSO、GRO、LO&#xff09;简介 1、开普勒优化算法KOA 开普勒优化算法&#xff08;Kepler optimization algorithm&#xff0c;KOA&#xff09;由Mohamed Abdel-Basset等人于2023年提出。五种最新优化算法&#xff08;SWO、ZOA、EVO、KOA、…

如何在Visual Studio上创建项目并运行【超级详细】

工欲善其事&#xff0c;必先利其器。想要学好编程&#xff0c;首先要把手中的工具利用好&#xff0c;今天小编教一下大家如何在史上最强大的编译器--Visual Studio上创建项目。&#x1f357; 一.打开编译器&#x1f357; 双击你电脑上的vs&#xff0c;(2012,2019,2022)都行。&…

【原理篇】四、自定义starter

文章目录 1、案例分析2、业务功能的实现3、中途调试4、开启定时任务打印报表5、引入属性配置类&#xff0c;写活业务参数配置6、拦截器7、开启yml提示功能 做一个记录系统访客独立IP访问次数的功能&#xff0c;并把它自定义成一个starter&#xff0c;实现&#xff1a;在现有项目…

systemctl enable docker.service报错“Failed to execute operation: Bad message“

将docker加入到开机自启&#xff0c;报错&#xff1a; 解决&#xff1a; 重新粘贴复制&#xff1a; [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target…

【基带开发】AD9361通信基础:复数乘法 除法

复数 是实数和虚数的组合 例子&#xff1a;3.6 4i, −0.02 1.2i, 25 − 0.3i, 0 2i 乘法 除法

apple mobile device ethernet

莫名其妙使用了一次apple mobile device ethernet&#xff0c;原本正常的网络突然之间抽筋了&#xff0c;在网卡界面看到有两个&#xff0c;以太网3原本启用状态&#xff0c;禁用恢复。 通过搜索apple mobile device ethernet&#xff0c;在网上看到该答案&#xff0c;原来是接…

DDD技术方案落地实践

1. 引言 从接触领域驱动设计的初学阶段&#xff0c;到实现一个旧系统改造到DDD模型&#xff0c;再到按DDD规范落地的3个的项目。对于领域驱动模型设计研发&#xff0c;从开始的各种疑惑到吸收各种先进的理念&#xff0c;目前在技术实施这一块已经基本比较成熟。在既往经验中总结…

PPT NO.3 如何设置日期自动更新

打开PPT,停留在你想放入时间的那页上&#xff1a; ​ 点击“插入”-->"时间和日期"&#xff1a; 然后会弹出一个窗口&#xff0c; 选择“日期和时间”&#xff0c;自动更新里面可以选择自己喜欢的日期格式&#xff0c;左下角“应用”就是当前的这张ppt&#xff0…

Workbench环境中常见问题

问题描述&#xff1a;1 解决方案&#xff1a;2 问题描述&#xff1a;在WB中启动Fluent&#xff0c;报错&#xff0c;提示 “The requested operatjon requires elevation” 解决方案&#xff1a;这个问题是因为WB主程序没有管理员权限导致。使用管理员权限启动WB后&#xff0c…

机器学习练习1

线性回归 数据集模型,第一列代表人口,第二列代表利润 此处的线性回归 与 常规的 y wx b 不同的是 将b换成了w的一部分 故需要在数据集x前面加个1, 求出b . 可以简化计算,只需要一个乘法就可以

音频恢复怎么做?这3招很管用!

“我是一名电台主播&#xff0c;所以经常需要用电脑录制并保存一些音频&#xff0c;今天想对某期节目进行加工时&#xff0c;突然有一部分音频丢失了&#xff0c;有什么方法能找回这些音频吗&#xff1f;” 在日常工作中&#xff0c;或许我们也会将很多重要的音频文件保存在电脑…

论文速览 | TRS 2023: 使用合成微多普勒频谱进行城市鸟类和无人机分类

注1:本文系“最新论文速览”系列之一,致力于简洁清晰地介绍、解读最新的顶会/顶刊论文 论文速览 | TRS 2023: Urban Bird-Drone Classification with Synthetic Micro-Doppler Spectrograms 原始论文:D. White, M. Jahangir, C. J. Baker and M. Antoniou, “Urban Bird-Drone…

【CSP认证考试】202309-1:坐标变换(其一)100分解题思路+代码

解题思路 暴力解决&#xff0c;不考虑时空开销就一直用for循环也可以做出来。按照题目意思输入两个数组&#xff0c;然后将第一个输入的数组的x部分累加起来记作x&#xff0c;再将y部分累加起来记作y。再将第二个数组的x部分都加上x&#xff0c;y部分加上y。最后输出第二个数组…

Git的入门详细教程

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《git》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这…