• 1169: 大整数(指针专题)


    题目描述

    输入3个大整数,位数不超过100位,按从小到大的顺序输出这三个整数。要求定义并使用如下函数比较两个大整数的大小。 
    int cmp(char *a,char *b) 

    //若大整数a大于b,返回1; 
    //若a小于b,返回-1; 
    // 若a与b相等,返回0 
    }

    输入

    输入有3行,每行输入一个大整数,位数不超过100位,输入不含前导0。

    输出

    输出3行,即排序后的3个大整数。

    样例输入 Copy

    1234567890123456789
    99999999999999
    111111111111111

    样例输出 Copy

    99999999999999
    111111111111111
    1234567890123456789

    问题分析:

    在函数中将两个字符串传进来,判断大小时先判断长度,长度大的字符串大(因为字符串表示的是一个数),当长度一样时用strcmp函数比较两字符串的大小即可。根据字符串之间的关系返回值。在输出之前将每一个字符串当作一个元素进行冒泡排序,排序时比较时用我们写的cmp()函数,作为排序的条件,strcpy(s【3】,s【i】)其中s【3】是定义的额外数组来作为交换的中间变量,strcpy(s【i】,s【k】),strcpy(s【k】,s【3】)这样就写成了选择排序。

    代码实现:

    1. #include
    2. #include
    3. int cmp(char *a,char *b){
    4. if(strlen(a)<strlen(b)){
    5. return -1;
    6. }else if(strlen(a)>strlen(b)){
    7. return 1;
    8. }else{
    9. if(strcmp(a,b)>0){
    10. return 1;
    11. }else if(strcmp(a,b)<0){
    12. return -1;
    13. }else{
    14. return 0;
    15. }
    16. }
    17. }
    18. int main(){
    19. char s[4][101];
    20. int j=0;
    21. for(int i=0;i<3;i++){
    22. gets(s[i]);
    23. }
    24. for(int i=0;i<2;i++){
    25. for(int k=i;k<3;k++){
    26. if(cmp(s[i],s[k])>=0){
    27. strcpy(s[3],s[i]);
    28. strcpy(s[i],s[k]);
    29. strcpy(s[k],s[3]);
    30. }
    31. }
    32. }
    33. for(int i=0;i<3;i++){
    34. puts(s[i]);
    35. }
    36. return 0;
    37. }

     提交结果:

  • 相关阅读:
    pyinstaller 打包后的exe 反编译 转为py源文件
    IOU 与 IOF
    Java常用集合总结
    开发指南031-安装ssl证书
    PAT 乙级 1071 小赌怡情 python
    【FPGA教程案例27】通过Verilog实现双口RAM乒乓结构
    linux下的线程thread
    【Vue】通过Axios实现异步通信(简单案例)
    贪心算法
    SpringBoot核心注解
  • 原文地址:https://blog.csdn.net/apprentice_eye/article/details/127639563