第七第八mooc+循环练习

A. 算命先生

最近荷黛缘小姐姐喜欢上了一个男生叫彭于晏,但是不知道自己和人家有没有缘分,现在她请你来为她算生辰八字。

我们知道两个人是否有缘分是把两个人的年月日加起来看他们是否有相同的奇偶性。

输入

两行输入。

第一行是荷黛缘小姐姐的生辰

第二行是彭于晏的生辰

输出

如果两个人有缘分就输出“YES”(不包含双引号)

否则输出“NO”

#include <stdio.h>
int main()
{
	int a,b,c,d,e,f;
	int x,y,z,w;
	scanf("%d/%d/%d",&a,&b,&c);
	scanf("%d/%d/%d",&d,&e,&f);
	x=a+b+c;
	y=d+e+f;
	z=x%2;
	w=y%2;
	if(z==w)
	printf("YES\n");
	else
	printf("NO\n");
	return 0;
}

B. 输出扑克牌(选择)

假设使用字母A、B、C、D(大小写不限)表示扑克牌的四种花色黑桃、红桃、梅花、方块,使用数字1、2、3......13表示牌的大小,输入字母与数字的组合后,请输出相应的扑克牌。例如,

输入"a 1",输出“黑桃A”;

输入“b 6”,输出“红桃6”;

输入“C 11”,输出“梅花J“

.......不需要考虑输出大小鬼。

输入

代表花色的字母  代表大小的数字

输出

相应的扑克牌

#include <stdio.h>
int main()
{
	char ch1,ch2;
	int x;
	scanf("%c%d",&ch1,&x);
	if(x>=2&&x<=10)
	ch2=x+48;
	else if(x==1)
	ch2 ='A';
	else if(x==11)
	ch2='J';
	else if(x==12)
	ch2=='Q';
	else if(x==13)
	ch2='K';
	{
	if((ch1=='a')||(ch1=='A'))
	printf("黑桃%c",ch2);
	else if((ch1=='b')||(ch1=='B'))
	printf("红桃%c",ch2);
	else if((ch1=='c')||(ch1=='C'))
	printf("梅花%c",ch2);
	else if((ch1=='d')||(ch1=='D'))
	printf("方块%c",ch2);
	}
	return 0;
}

C. ASCII码排序

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

输入

输入多组数据,每组占一行,有三个字符组成,之间无空格

输出

对于每组输入数据,输出一行,字符中间用一个空格分开。

#include <stdio.h>
int main()
{	
	char ch1,ch2,ch3;
	while(scanf("%c%c%c",&ch1,&ch2,&ch3)!=EOF)
	{
	if(ch1>=ch2&&ch1>=ch3&&ch2>=ch3)
	printf("%c %c %c\n",ch3,ch2,ch1);
	else if(ch1>=ch2&&ch1>=ch3&&ch3>=ch2)
	printf("%c %c %c\n",ch2,ch3,ch1);
	else if(ch2>=ch1&&ch2>=ch3&&ch3>=ch1)
	printf("%c %c %c\n",ch1,ch3,ch2);
	else if(ch2>=ch1&&ch2>=ch3&&ch1>=ch3)
	printf("%c %c %c\n",ch3,ch1,ch2);
	else if(ch3>=ch1&&ch3>=ch2&&ch2>=ch1)
	printf("%c %c %c\n",ch1,ch2,ch3);
	else if(ch3>=ch1&&ch3>=ch2&&ch1>=ch2)
	printf("%c %c %c\n",ch2,ch1,ch3);
	getchar();
	}
	return 0;
}

D. 最佳损友(不计分)

现在法外狂徒张三和李四捡到了n元。

现在他们要把这钱分成两份,如果分不齐张三要拿多的那一部分

输入

一行输入一个整数n

输出

输出张三拿了多少钱

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

A. 序列求和(循环)

有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。

输入

N

输出

数列前N项和

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

B. 公约数与公倍数(循环)

输入两个正整数m和n,求其最大公约数和最小公倍数。

输入

两个整数

输出

最大公约数,最小公倍数

#include <stdio.h>
int main()
{
	int  m,n,k,l,o,p;
	int y,b;
	scanf("%d%d",&m,&n); 
	if(m<n)
	{
	k=m;
	m=n;
	n=k;
	o=m;
	}//判断m和n的大小 
	while(n!=0)
	{
		l=m%n;
		m=n;
		n=l;
		y=m;
	}
	n=k;
	m=o;//让m,n变回初值 
	b=n;
	for(p=1;(b%m!=0);p++) 
	b=n*p;
	printf("%d %d",y,b);
	return 0;
}

C. n!(循环)

计算n!,就是计算1*2*3*...*n的乘积。注意0!=1。

输入

n的值

输出

n!的值

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a,n;
	long int sum=1;
	scanf("%d",&n);
	if(n==0)
	printf("0!=1");//排除0 
	else if(n<0)
	exit(-1);//排除负数 
	else
	{
	for(a=1;a<=n;a++)
	sum*=a;
	printf("%d!=%ld",n,sum);
	}		
}//分别两次输入5,0输出:120,1

A. 计算并输出1!+2!+3!+...+n!

输入n,计算并输出n项阶乘的和

输入

n

输出

n项阶乘的和

#include<stdio.h>
int main()
{
	int n,k,s=1;
	long sum=0;
	scanf("%d",&n);
	for(k=1;k<=n;k++)
	{
		s*=k;
		sum+=s;
	}
	printf("%d\n",sum);
 } //输入4 输出33

B. 求字符串中各种字符的个数(循环)

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

输入

一行字符

输出

统计值

#include<stdio.h>
int main()
{
	char ch;
	int a=0,b=0,c=0,d=0;
	scanf("%c",&ch);
	while(ch!=10)//判断ch不是换行 
	{
	if((ch>=65&&ch<=90)||(ch>=97&&ch<=122))//判断ch是不是英文字母 
	a++;
	else if(ch>=48&&ch<=57)//判断ch是不是数字 
	b++;
	else if(ch==32)//判断ch是不是空格 
	c++;
	else//ch是其它符号 
	d++;
	scanf("%c",&ch);
	}
	printf("%d %d %d %d",a,b,c,d);
 } //输入:aklsjflj123 sadf918u324 asdf91u32oasdf/.';123输出: 23 16 2 4

C. 打印水仙花数

打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 Output:

153
???
???
??? 

输入

输出

所有的水仙花数,从小的开始。 每行一个

#include<stdio.h>
int main()
{
	int x=100,a,b,c;
	while(x<=999)
	{
		a=x/100;
		b=(x-a*100)/10;
		c=x%10;
		if(x==a*a*a+b*b*b+c*c*c)
		printf("%d\n",x);
		x++;
	}
}

D. 求1~a之和

求以下三数的和(保留2位小数):

  • 1~a之和
  • 1~b的平方和
  • 1~c的倒数和

输入

a b c

输出

1+2+...+a + 1^2+2^2+...+b^2 + 1/1+1/2+...+1/c

#include<stdio.h>
int main()
{
	int a,b,c;//输入的数 
	int d=0,e=0;//过程中求1加到a,1^2+…b^2 
	int m,n=1,l;//循环用量 
	float f=1,g=0,h;//过程和结果用量 
	scanf("%d%d%d",&a,&b,&c); 
	for(m=1;m<=a;m++)
	d+=m;//1-a的和 
	while(n<=b)
	{
	e+=n*n;
	n++;//1-b的平方和 
	}
	do
	{
		g+=1/f;
		++f;//1-c的倒数和 
	}while(f<=c) ;
	h=d+e+g;
	printf("%.2f",h);
}//输入:100 50 10输出:47977.93

E. 最强字母(循环)

在英文字母王国中,大写字母比小写字母强大。在大写字母之间按字母表顺序,越靠前越大,例如A比B大,B比C大,Z在大写字母中最小。同样小写字母之间的比较也按字母表顺序,也是越靠前越大。

要求在一个英文字母集合中,选择最强大的字母。

输入

输入一个英文字母字符串,只能包含大小写英文字母,不包含其它字符。

输出

输出该字符串中最大的字母,如果有多个相同的最大字母,只输出一个

#include <stdio.h>
int main()
{
	char ch,a;
	scanf("%c",&ch);
	a=ch;
	while(ch!=10)
	{
	if(a>=ch)
	a=ch;//让a表示为ASCII表中较小的字符 
	scanf("%c",&ch);
	}
	printf("%c",a);
}//输入chinaGOOD输出D

F. 猴子吃桃(循环)

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

输入

N

输出

桃子总数

#include<stdio.h>
int main()
{
	int n,a=1,k;
	scanf("%d",&n);
	for(k=2;k<=n;k++)
	a=a*2+2;
	printf("%d",a);	
}//输入10 输出1534

G. 鸡尾酒疗法(循环

鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾 滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生 命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式 进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给 出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

输入

第一行为整数n( 1 < n <= 2000);
其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。

这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。

输出

有n-1行输出,分别表示对应改进疗法的效果:

如果效果更好,输出better;如果效果更差,输出worse;否则输出same

#include<stdio.h>
int main()
{
	int n,k;
	float f1,f2,a,b,c,d;
	scanf("%d",&n);
	scanf("%f%f",&a,&b);
	f1=b/a;
	for(k=1;k<=(n-1);k++)
	{
		scanf("%f%f",&c,&d);
		f2=d/c;
		if(f1-f2>0.05)
		printf("worse\n");
		else if(f2-f1>0.05)
		printf("better\n");
		else
		printf("same\n");
	}
}

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MOOC PAT练习是指在在线课程平台上进行的编程能力考试。它提供了一系列编程题目,旨在帮助学生提高解决问题的能力和编程技能。下面是对此练习的回答: MOOC PAT练习是一种非常有益的学习资源。它可以帮助学生在虚拟的环境中解决实际问题,并通过编程来提高解决问题的能力。通过这种方式,学生可以更好地理解和掌握编程语言和算法知识。 MOOC PAT练习不仅可以提升学生的编程能力,还可以培养学生的创新思维和团队合作精神。在解决编程题目时,学生需要思考合适的算法和数据结构,同时还需要灵活运用编程语言来实现自己的想法。这样的练习可以锻炼学生的分析问题和解决问题的能力,培养其创新和合作意识。 通过MOOC PAT练习,学生可以接触到各种各样的编程题目,涵盖了不同的难度级别和主题领域。这对于学生来说是一个很好的学习机会,可以不断地挑战自己、提高自己。此外,该练习还提供了评测功能,学生可以实时了解自己的答题情况,并获得相应的反馈和建议,这有助于他们更好地调整学习进度和方向。 总结来说,MOOC PAT练习是一个非常有价值的学习资源,它可以提升学生的编程能力、培养创新和合作意识,并且通过不断挑战和实践来提高自己。对于想要学习编程的人来说,参加MOOC PAT练习是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值