基本C格式问题

时间:2014-03-10 19:57:40

标签: c format

对于此分配,我希望我的程序输出所请求的输出。我的问题在于格式化 链接到有问题的问题: http://i1306.photobucket.com/albums/s576/sammyr2011/eng32111_zps3a5d52fd.png

该计划的输出: http://i1306.photobucket.com/albums/s576/sammyr2011/outputofquestion1_zps2aa9558a.png

无论出于何种原因,我的x值不会增加十倍,就间距而言,我不确定我做错了什么。

#include <stdio.h>

//declare global variables
    int x = 1;
    double num = .1234;

//prototype functions
partA(double num);

int main() {
    double a;
    a = partA(num);
    printf("%lf\n",a);
}

/*First Function, x and num increase by a factor
of ten. */ 
partA(double num) {
    for(x; x <= 10000; x *= 10) {
        for (num; num <= 1234; num *= 10) {
            printf("%d%4lf\n",x, num);
        }
        printf("\n");
    }   
}

6 个答案:

答案 0 :(得分:1)

间距是因为只有外循环正在执行,其中包含printf

答案 1 :(得分:1)

它没有增加,因为你有一个For inside在另一个For,你必须在For of of“num”中增加X

类似的东西:

int x = 1;
for (num; num <= 1234; num *= 10)
{
    printf("%5d%3s%4lf\n",x, " ", num);
    x*=10;
}

干杯

编辑:在我忘记空格之前,现在应该没事了

答案 2 :(得分:1)

此代码:

#include <stdio.h>

int ee(int e){
  int i, ret;
  ret=1;
  for(i=0;i<e;i++)
    ret *= 10;
  return ret;
}

int main(void) {
  int i;
  printf("a)\n");
  for(i=0;i<5;i++)
    printf("%5d %.4f\n",ee(i), 0.1234 * ee(i));
  printf("\nb)\n");
  for(i=0;i<5;i++)
    printf("%5d %.3e\n",ee(i), 0.1234 * ee(i));
}

给出:

a)
    1 0.1234
   10 1.2340
  100 12.3400
 1000 123.4000
10000 1234.0000

b)
    1 1.234e-01
   10 1.234e+00
  100 1.234e+01
 1000 1.234e+02
10000 1.234e+03

答案 3 :(得分:1)

没有if,切换和printf格式的空格和制表符就像这样

partA(double num) {
    const int const max = 10000;
    const int const precision = 4;
    int width = 1 + log((float)max) / log(10.0f);
    for(; x <= max; x *= 10, num *= 10) {
        printf("%*d%c%.*f\n", width, x, 040, precision, num);
    }
}

答案 4 :(得分:0)

请参阅documentation for printf format strings

要更改小数点后的位数,请指定 precision

要在数字之间获取空格,请使用格式字符串中的文字空格,如

printf("%d %4lf\n",x, num);

答案 5 :(得分:0)

接受答案后。这个使用字段宽度而不是帖子所需的空格。

#include <stdio.h>

void partAB(const char *format, double num) {
  double d = 1.0;
  for (int i = 0; i<5; i++) {
     printf(format, d, num);
     d *= 10;
     num *= 10;
   }
   printf("\n");
}

void partA(double num) {
  partAB("%5.0lf  %.4lf\n", num);
  }

void partB(double num) {
  partAB("%5.0lf  %9.3le\n", num);
  }

int main() {
  double x = 0.1234;
  partA(x);
  partB(x);
  return 0;
}