【问题标题】:Reverse a float number C反转浮点数 C
【发布时间】:2017-11-17 06:22:56
【问题描述】:

我正在学习 C。我们使用 scanfprintf 输入和输出数据。
我们的课中有一个问题:反转浮点数。

我的编程技巧很好,我可以轻松做到这一点。
例如,我的一个想法是将float 数字转换为int 10 次方,然后将其反转并再次转换为float。还有很多其他的想法。

但我们的问题有一个限制。使用scanf 功能来反转号码。

我请我的老师给我一个代码。他给出了以下代码。我很抱歉,因为我没有清楚地理解代码。此代码为 12.33 提供 12 和 33,但此代码不适用于 12.00001,因为我们得到 12 和 1。当我们得到这个数字时,我们将它们反转并打印出来。我的老师问我解决这个问题的方法,但我找不到方法。没有必要存在一种方式,但有可能帮助我吗?

我的老师代码:

int main(){
    int a,b;
    scanf("%d.%d", &a, &b);
    printf("a = %d, b = %d", a, b);
}

谢谢。

【问题讨论】:

  • 当你使用scanf时,用它扫描成string,然后你使用循环向后打印。
  • 我不认为“使用 scanf()”意味着“仅此而已”。我无法想象其他机制,如循环字符数组被排除在外。
  • 所以我必须获取数字字符串并反转该字符数组。没有特殊的代码可以自动为我执行此操作吗? (scanf() 中的特殊代码)
  • “以相反的顺序打印用户的浮动输入嘿,这个链接可能会帮助你”我检查它。它不相关。
  • 请让你的老师给你真正的作业,而不是如果你在这头猪上安装翅膀会飞的作业。我会冒险猜测“没有人”使用 scanf 来反转 浮点数,因此您不会在网上找到很多这样的例子。看来这位老师在C语言或运行时发现了一个有趣的小花絮,想炫耀一下。

标签: c


【解决方案1】:

如果不想要任何计算,则以字符串格式获取它,然后将其反转。

#include<stdio.h> 
#include<string.h> 

void main(){  
  char str[20];  

  printf("Enter number: "); 
  scanf( "%s" , str );


  printf("\nReverse Number is: %s",strrev(str));  

}

【讨论】:

  • 题中有一个约束:使用scanf features to reverse number
  • 永远不要使用gets。它已被弃用是有原因的。
  • 我的错,我忘了删除gets
  • 我很确定。到目前为止,据我所知,scanf 没有任何类似的功能。它返回的所有内容都已成功读取字符。
  • conio.hgetche 使您的代码在 DOS/Windows 之外 100% 不可移植。使用getchar() 来保持终端窗口打开。
【解决方案2】:
#include<stdio.h>    
#define MAX 20

void main(void) {
  char str[MAX];  
  int i;
  printf("Enter number: "); 
  scanf( "%s" , str );

  for (i=0;i<MAX; i++){
      printf("%c",str[MAX-1-i]);
  } 
}

【讨论】:

  • 您的回答很好,但是为什么您还没有完全填充数组,却不必要地从数组末尾循环?
  • @Andrew,我认为最大长度是 20,但使用 strlen 的 str 会更优雅,即strlen(str)
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多