用1,2,3,···,9 组成 3 个三位数 abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解。
题目特别写出了提示:不必太动脑筋。(其实这句话让我现在都不清楚我的解法是不是符合要求......)
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main()
4 {
5 int num;
6 char chr;
7 char a[10];
8 char temp[3];
9 char pos;
10 //num*3<=987 所以 num<=329
11 for(num=123;num<=329;num++)
12 {
13 itoa(num,temp,10);
14 strcpy(a,temp);
15 itoa(num*2,temp,10);
16 strcat(a,temp);
17 itoa(num*3,temp,10);
18 strcat(a,temp);//a保存了num以及num*2和num*3组成的字符串
19
20 for(chr='1';chr<='9' && (pos=strchr(a,chr))!=NULL;chr++)
21 ;
22 if(pos!=NULL)
23 printf("%d:%d:%d=1:2:3\n",num,num*2,num*3);
24 }
25 return 0;
26 }
27
今天继续读到了分数化小数题目,感觉挺简单的一个问题。实际藏着一个我并不知道的printf妙用。
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=10^6,c<=100.例如a=1,b=6,c=4时应输出0.1667.
printf的特殊用法,对于m.n的格式可以用如下方法表示
char ch[20];
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。 这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。 1 #include<stdio.h>
2 int main()
3 {
4 int a,b,c;
5 scanf("%d %d %d",&a,&b,&c);
6 printf("%.*lf",c,(double)a/b);
7 return 0;
8 }