PAT 甲级1069乙级 1019 PAT Ranking 个人错误总结

    技术2022-07-11  83

    本题目主要是单个变量和数组之间的转换。 遇到的问题: 1简单方法使用了sscanf ,sprintf遇到问题,当输入为0时,输入不能保证位数,在写博客的过程中,我发现好像可以用d的方式解决,下面是两种代码。 2输出记着特殊情况:前几位为0的数,循环达到0的情况,输入字符不足4为的情况。 ac代码: 用sscanf,sprintf,

    #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; char str[100000]; bool cmp(char a,char b) { return a>b; } int main() { int num; char n[5]; int a,b; scanf("%d",&num); do { sprintf(n,"d",num); sort(n,n+4,cmp); sscanf(n,"%d",&a); sort(n,n+4); sscanf(n,"%d",&b); num=a-b; printf("d - d = d\n",a,b,num); }while(num!=6174&&num!=0); return 0; }

    用int数组

    #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> using namespace std; bool cmp(int a,int b) { return a>b; } void sz(int a[],int n) { for(int i=3;i>=0;i--) { a[i]=n; n/=10; } } void zs(int a[] ,int &n ) { n=0; for(int i=0;i<4;i++) { n+=a[i]*pow(10,3-i); } } int main() { int num; int n[5]={0}; int a,b; scanf("%d",&num); do { sz(n,num); sort(n,n+4,cmp); zs(n,a); sort(n,n+4); zs(n,b); num=a-b; printf("d - d = d\n",a,b,num); }while(num!=6174&&num!=0000); return 0; }
    Processed: 0.013, SQL: 9