习题2-5 分数化小数(decimal)
题目:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位,a,b<=10^6,c<=100。输入包含多组数据,结束标记为a=b=c=0.
样例输入:
1 6 4
0 0 0
样例输出:
case 1: 0.1667
题解:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a <= 1e+6 && b <= 1e+6 && c <= 100 && a != 0 && b != 0 && c != 0){
printf("%.*lf\n",c,(double)a / (double)b);
}
return 0;
}
习题2-6 排列(permutation)
题目:用1,2,3,4,。。。9组成3个三位数abc,def,ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。
题解:
#include<stdio.h>
int main()
{
int i,j,flag;
//定义存放三个数的数组
int a[3];
int array[10];
for(i = 123;i <= 329;i++){
a[0] = i;
a[1] = i * 2;
a[2] = i * 3;
//使10个数组中每个数组的数值都为0
for(j = 0;j < 10;j++){
array[j] = 0;
}
int x = 1;
//确保每个数字恰好使用一次
for(flag = 0;flag < 3 && x == 1;flag++){
//百位
if(array[a[flag]/100] == 0 && (a[flag]/100) != 0){
array[a[flag]/100] = 1;
}else{
x = 0;
}
//十位
if(array[a[flag] / 10 % 10] == 0 && (a[flag] / 10 % 10 ) != 0){
array[a[flag] / 10 % 10] = 1;
}else{
x = 0;
}
//个位
if(array[a[flag]%10] == 0 && (a[flag]%10) != 0 ){
array[a[flag]%10] = 1;
}else{
x = 0;
}
}
if(x == 1){
printf("abc:def:ghi = %d:%d:%d\n",a[0],a[1],a[2]);
}
}
return 0;
}