2.5 分数化小数 2.6 排列(C)

算法竞赛入门经典(第2版)

第2章 循环结构程序设计

2.5 分数化小数,注意进位等问题

#include "stdio.h"
#include "math.h"

int main(){
	int a,b,c;
	int count=0;
	while(scanf("%d",&a)==1){
		scanf("%d %d",&b,&c);
		if(a==0&&b==0&&c==0){
			break;
		}
		count++;
		float x = (float)a/b;	//x为实际值 
		int x1 = x;
		printf("Case %d:",count);
		int x2[c+2];
		x2[0]=0; 
		float p = (float)a-x1*b;	//去掉整数部分 
		for(int i=1;i<c+2;i++){	//计算小数点后的位数 
			p=p*10;
			x2[i]=p/b;
			p=p-x2[i]*b;
		}
		//处理进位 
		if(x2[c+1]>=5){	 
			for(int i=c;i>=0;i--){
				x2[i]++;
				if(x2[i]<10){	//不影响前一位 
					break;
				}
				else{
					x2[i]-=10;	//满十进一 
				}
			}
		}
		if(x2[0])	printf("%d.",x1+1);	//处理整数的进位 ,x2[0]用来保存x是否会进位到整数 
		else printf("%d.",x1);
		for(int i=1;i<=c;i++){
			printf("%d",x2[i]);
		}
		printf("\n");
	}
	 
 	return 0;
} 

2.6排列(顺便上传一下)

#include "stdio.h"

int main(){
	for(int abc=123;abc<321;abc++){
		int def = abc*2;
		int ghi = abc*3;
		int a = abc/100;
		int b = (abc%100)/10;
		int c = abc%10;
		int d = def/100;
		int e = (def%100)/10;
		int f = def%10;
		int g = ghi/100;
		int h = (ghi%100)/10;
		int i = ghi%10;
		if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i){
			if(b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i){
				if(c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i){
					if(d!=e&&d!=f&&d!=g&&d!=h&&d!=i){
						if(e!=f&&e!=g&&e!=h&&e!=i){
							if(f!=g&&f!=h&&f!=i){
								if(g!=h&&g!=i){
									if(h!=i){
										printf("%d %d %d\n",abc,def,ghi);
									}
								}
							}
						}
					}
				}
			}
		}
	}
	return 0;
} 
发布了16 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39938635/article/details/104060158
2.5