PAT(乙級)2019年秋季考試 7-1 B是A的多少倍 (15分)
阿新 • • 發佈:2020-12-02
7-1B是A的多少倍(15分)
設一個數A的最低D位形成的數是ad。如果把ad截下來移到A的最高位前面,就形成了一個新的數B。B是A的多少倍?例如將 12345 的最低 2 位 45 截下來放到 123 的前面,就得到 45123,它約是 12345 的 3.66 倍。
輸入格式:
輸入在一行中給出一個正整數A(≤)和要擷取的位數D。題目保證D不超過A的總位數。
輸出格式:
計算B是A的多少倍,輸出小數點後 2 位。
輸入樣例 1:
12345 2
輸出樣例 1:
3.66
輸入樣例 2:
12345 5
輸出樣例 2:
1.00
程式碼講解:此題我用了sscanf,和迴圈右移的思想,把最後幾個
要移的元素迴圈右移了,然後利用sscanf轉換成整形,最後輸出
1 #include<stdio.h> 2 #include<string.h> 3 void reverse(char a[],int n) 4 { 5 int i,temp; 6 for(i=0;i<n/2;i++) 7 { 8 temp=a[i]; 9 a[i]=a[n-i-1]; 10 a[n-i-1]=temp; 11 } 12 } 13 int main() 14 { 15 char a[20]; 16 int d,i,str,start,end;17 scanf("%s %d",a,&d); 18 sscanf(a,"%d",&start); 19 str=strlen(a); 20 reverse(a+str-d,d); //迴圈右移 21 reverse(a,str-d); 22 reverse(a,str); 23 sscanf(a,"%d",&end); 24 printf("%.2f\n",end*1.0/start); 25 return 0; 26 }