用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 }