算法竞赛_入门经典_刘汝佳__(2)

1,有几位数字

#include<stdio.h>


int main_2_1_digit){
	int n;

	whilescanf"%d",&n)){
		int count = 0;
		ifn==0)
			count = 1;
		whilen){
			count++;
			n/=10;
		}
		
		printf"%d
",count);
	}
	return 0;
}

2。三位数的三个数字

#include<stdio.h>


int main_2_2_daffodil){

	int i,j,k;

	forint n=100;n<=999;n++){
		i = n % 10;
		j = n/10) % 10;
		k = n/100) % 10;

		if n == i*i*i + j*j*j + k*k*k){
			printf"%d
",n);
		}
	}


	return 0;
}

3,韩信点兵

#include<stdio.h>

int main_2_3_hanxin){

	int a,b,c;
	int i,sum;

	whilescanf"%d%d%d",&a,&b,&c)){
		sum = -1;
		fori=10;i<=100;i++){
			ifi%3 == a && i%5 == b && i%7 == c){
				sum =i;
				break;
			}
		}
		
		ifsum == -1){
			printf"No answer
");
		}else{
			printf"%d
",sum);
		}
	}

	
	return 0;
}

4。打印倒三角

#include<stdio.h>

int main_2_4_triangle){

	int n;
	int i,j;

	whilescanf"%d",&n)){
		
		fori=n;i>0;i--){
			forj=1;j < n;j++){
				ifj+i >= n+1){
					printf"#");
				}else{
					printf" ");
				}
			}

			printf"#");

			forj=n+1;j < 2*n;j++){
				ifj-i <= n-1){
					printf"#");
				}else{
					printf" ");
				}
			}
			
			printf"
");
		}
	
	}

	
	return 0;
}

5,输入n个数,比m小的

#include<stdio.h>

int main_2_5_stat){
	int arr[1000];
	int n,m;
	int i;
	int count;

	whilescanf"%d",&n)){
		fori=0;i<n;i++){
			scanf"%d",&arr[i]);
		}
		scanf"%d",&m);
		
		count=0;
		fori=0;i<n;i++){
			ifm > arr[i]){
				count++;
			}
		}

		printf"%d
",count);
	}

	
	return 0;
}

6。数aabb

#include<stdio.h>
#include<math.h>

int main_aabb_complete){

	int a,b,n;
	double m;

	fora=1;a<=9;a++){
		forb=0;b<=9;b++){
			n=a*1100 + b*11;
		
			m=sqrtdouble)n);

			//推断m是否为整数
			//进行浮点数比較的时候要考虑浮点误差
			iffloorm+0.5) == m){
				printf"%d     %lf
",n,m);
			}
		}
	}
	

	getchar);
	return 0;
}

7,浮点数陷阱

#include<stdio.h>


int main_float_trap){

	double i;

	fori=9;i!=10;i+=0.1){
	
		printf"%.1lf
",i);
	
		ifi>10){
			break;
		}
	}

	
	return 0;
}

8,varble_no_init

#include<stdio.h>

int main_varble_no_init){

	int a,b,c;

	printf"%d %d %d",a,b,c);

	scanf"%d",&a);

	return 0;

}

9,全排列

#include<stdio.h>


int n = 0;
void swapint *a,int *b){
	int m = *a;
	*a = *b;
	*b = m;
}

void permint list[],int k,int m){
	int i;

	ifk > m){
		fori=0;i<=m;i++){
			printf"%d ",list[i]);
		}
		printf"
");
		n++;
	}else{
		fori=k;i<=m;i++){
			swap&list[k],&list[i]);
			permlist,k+1,m);
			swap&list[k],&list[i]);
		}
	}
}

int main_quan_pai_lie_version_1){
	int list[] = {1,2,3,4,5};

	permlist,0,4);

	printf"total: %d
",n);

	return 0;
}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平