PAT(乙级)2019年秋季考试 7-1 B是A的多少倍 (15分)
7-1 B是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 }
 
                    
                
                
            
        
浙公网安备 33010602011771号