对于此分配,我希望我的程序输出所请求的输出。我的问题在于格式化 链接到有问题的问题:
该计划的输出:
无论出于何种原因,我的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");
}
}
答案 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;
}