1. 程式人生 > 實用技巧 >PAT(乙級)2019年秋季考試 7-1 B是A的多少倍 (15分)

PAT(乙級)2019年秋季考試 7-1 B是A的多少倍 (15分)

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 }