翁恺B站练习题目(持续更新中~~~)

求符合条件的给定数集

题目要求:给定不超过6的正整数A。考虑从A开始的连续4个数字。请输出所有由它们组成的无重数字的3位数。

#include<stdio.h>
int main()
{
	int A=0;
	do{
		scanf("%d",&A);
	}while(A>=6);
	int ret=0;
	int max=(A+3)*100+(A+2)*10+(A+1);
	int x,y,z;
	int cnt=0;
	for(x=A;x<=A+3;x++){
		for(y=A;y<=A+3;y++){
			for(z=A;z<=A+3;z++){
				if(x!=y&x!=z&z!=y){	
					ret=x*100+y*10+z;
					printf("%d",ret);
					cnt++;
					if(cnt==6){
						printf("
");
						cnt=0;
					}else{
						printf(" ");
					}
			}
			
			}
		}
	}
}

视频讲解

水仙花数

题目要求:水仙花数是指一个N位正整数(N>=3) ,它的每个位上的数字的N次幕之和等于它本身。例如:153=13+53+ 33。本题要求编写程序,计算所有N位水仙花数

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	n=3;
	int first=1;
	int i=1;
	while(i<n){
		first*=10;
		i++;
	}
	i=first;
	
	while(i<first*10){
		int t=i;
		int sum=0;
		do{
			int d=t%100;
			t/=10;
			int p=d;
			int j=1;
			while( j<n) {
				p *= d;
				j++;
			}
			sum+=p;
			
		}while(t>0);
		if(sum==i){
			printf("%d
",i);
		}
		i++;
		
	}
}

视频讲解

九九乘法表

题目要求:按照梯度输出九九乘法表

#include<stdio.h> 
main()
{
	int x,y,n;
	scanf("%d",&n);
	for(y=1;y<=n;y++){
		for(x=1;x<=y;x++){
			printf("%d*%d=%d",x,y,x*y);
			if(x*y<10){
				printf("   ");
			} else{
				printf("  ");
			}
		}
		printf("
");
	}
}

视频讲解

统计素数并求和

题目要求:本题要求统计给定整数M和N区间内素数的个数并对它们求和。

#include<stdio.h>
main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	m=10;
	n=31; 
	int cnt=0;
	int t=m;
	int sum=0;
	while(t<=n){//最大的这个循环意思是t++   循环的动作意思是判断t是否是素数,是的话就加上他 
		int p;  //判断是否是素数的时候又要用到循环 
		int is=1;
		for(p=2;p<t;p++){//这个循环的意思是:在再大的循环里面有一个数,除以p++,判断是否为素数 
			int q=t%p;
			if(q==0){
				is=0;
				break;
			}
		}
		if(is==1){
			printf("%d
",t);
			cnt++;
			sum+=t;
		}
		
		t++;
		
		
	}
	printf("cont is %d ,sum is %d",cnt,sum);
}

视频讲解

求序列前n项和

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

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

视频讲解

正序分解

题目要求:任意输入一个数,正序分解输出

#include<stdio.h> 
main() 
{
	int x;
	scanf("%d",&x);
	// 判断位数 
	int mask=1;
	int t=x;
	do{
		x/=10;
		mask*=10;
		printf("%d
",mask);
	}while(x>9);
	x=t;
	// 拆解数
	int d=0;
	do{
		d=x;
		d/=mask;
		printf("%d ",d);
		x%=mask;
		mask/=10;
	} while(mask>0);
	
}

视频讲解

约分最简式(求最大公约数)

提示:辗转相除法

#include<stdio.h>
int main()
{
	int dividend,divisor;
	scanf("%d/%d",&dividend,&divisor);
	
	int a=dividend;
	int b=divisor;
	int t;
	while(b>0){
		t=a%b;
		a=b;
		b=t;
	}
	printf("%d/%d",dividend,divisor);
	
	return 0;
	
}

视频讲解

念数字

提示:拆解一个数+负号处理+switch case

#include<stdio.h> 
int main()
{
	int x;
	scanf("%d",&x);
	
	if(x<0){
		printf("fu");
		x=-x;
	}
	
	int mask=1;
	int t=x;
	while(t>9){
		t=/10;
		mask*=10;
	}
	
	do{
		int d=x/mask;
		switch(d){
			case 0:printf('ling');break;
			case 1:printf('yi');break;
			case 2:printf('er');break;
			case 3:printf('san');break;
			case 4:printf('si');break;
			case 5:printf('wu');break;
			case 6:printf('liu');break;
			case 7:printf('qi');break;
			case 8:printf('ba');break;
			case 9:printf('jiu');break;
		}
		if(mask>0)printf("");
		x%=mask;
		mask/=10;
	}while(mask>0);
	printf("
");

	return 0;
}

视频讲解

原文地址:https://www.cnblogs.com/oceaninfinite/p/12470594.html