鱼C论坛

 找回密码
 立即注册
查看: 1542|回复: 2

[已解决]40鱼币求助一个C语言的问题

[复制链接]
发表于 2018-1-18 15:09:10 | 显示全部楼层 |阅读模式
40鱼币
请附上代码以及注释
谢谢各位了
最佳答案
2018-1-18 15:09:11
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int fun(int a, int b)//辗转相除法求最大公约数
  4. {
  5.         int c;
  6.         if (a<b)
  7.         {
  8.                 c=a;
  9.                 a=b;
  10.                 b=c;
  11.         }
  12.         while (b!=0)
  13.         {
  14.                 c=a;
  15.                 a=b;
  16.                 b=c%b;
  17.         }
  18.         return a;
  19. }
  20. void change(int *f, double x)
  21. {
  22.         int den = 100000;//分母初始化
  23.         int num = int(x * den);//分子对应的值
  24.         int temp = fun(den, num);//求最大公约数
  25.         // 分别约分,得到最后的分子和分母
  26.         f[0] = double(num) / temp;
  27.         f[1] = double(den) / temp;
  28. }

  29. int main(void)
  30. {
  31.         int n,i;
  32.         int factor[2] = {0};//存放分子分母:第一个元素为分子,第二个为分母
  33.         double *data;//存放用户输入的数据
  34.         double temp;
  35.         printf("请输入您想要处理的数据个数:");
  36.         scanf("%d", &n);
  37.         data = (double *)malloc(n * sizeof(double));//根据用户输入的长度动态分配内存空间
  38.         printf("请输入 %d 个非负小数,用空格分开:", n);
  39.         getchar();
  40.         // 获取用户的输入并存放到data数组中
  41.         for (i = 0; i < n; i++)
  42.         {
  43.                 scanf("%lf",&temp);
  44.                 data[i] = temp;
  45.                 getchar();
  46.         }
  47.         // 将每个数进行转换并输出
  48.         for (i = 0; i < n; i++)
  49.         {
  50.                 change(factor, data[i]);
  51.                 if (factor[0] == 0)
  52.                         printf("0");
  53.                 else
  54.                         printf("%d/%d", factor[0],factor[1]);
  55.                 if (i < n - 1)
  56.                         printf(" ");
  57.         }
  58.         free(data);//记得释放动态分配的内存
  59.         printf("\n");
  60.         system("pause");        
  61.     return 0;
  62. }
复制代码
QQ图片20180118150628.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-18 15:09:11 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int fun(int a, int b)//辗转相除法求最大公约数
  4. {
  5.         int c;
  6.         if (a<b)
  7.         {
  8.                 c=a;
  9.                 a=b;
  10.                 b=c;
  11.         }
  12.         while (b!=0)
  13.         {
  14.                 c=a;
  15.                 a=b;
  16.                 b=c%b;
  17.         }
  18.         return a;
  19. }
  20. void change(int *f, double x)
  21. {
  22.         int den = 100000;//分母初始化
  23.         int num = int(x * den);//分子对应的值
  24.         int temp = fun(den, num);//求最大公约数
  25.         // 分别约分,得到最后的分子和分母
  26.         f[0] = double(num) / temp;
  27.         f[1] = double(den) / temp;
  28. }

  29. int main(void)
  30. {
  31.         int n,i;
  32.         int factor[2] = {0};//存放分子分母:第一个元素为分子,第二个为分母
  33.         double *data;//存放用户输入的数据
  34.         double temp;
  35.         printf("请输入您想要处理的数据个数:");
  36.         scanf("%d", &n);
  37.         data = (double *)malloc(n * sizeof(double));//根据用户输入的长度动态分配内存空间
  38.         printf("请输入 %d 个非负小数,用空格分开:", n);
  39.         getchar();
  40.         // 获取用户的输入并存放到data数组中
  41.         for (i = 0; i < n; i++)
  42.         {
  43.                 scanf("%lf",&temp);
  44.                 data[i] = temp;
  45.                 getchar();
  46.         }
  47.         // 将每个数进行转换并输出
  48.         for (i = 0; i < n; i++)
  49.         {
  50.                 change(factor, data[i]);
  51.                 if (factor[0] == 0)
  52.                         printf("0");
  53.                 else
  54.                         printf("%d/%d", factor[0],factor[1]);
  55.                 if (i < n - 1)
  56.                         printf(" ");
  57.         }
  58.         free(data);//记得释放动态分配的内存
  59.         printf("\n");
  60.         system("pause");        
  61.     return 0;
  62. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-1-18 16:05:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 23:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表