我是编程新手,我正在尝试在运行时更改代码格式,运行时看起来像这样:
Enter Initial account balance: 1000
Enter annual interest rate: 2
Enter number of years: 10
Year Daily Weekly Monthly Quarterly Annually
---- ------- ------- ------- --------- --------
0 1000.00
1 1020.26
2 1040.92
3 1062.01
4 1083.52
5 1105.47
6 1127.86
7 1150.71
8 1174.02
9 1197.80
10 1222.07
1000.00
1020.53
1041.49
1062.87
1084.70
1106.97
1129.70
1152.89
1176.56
1200.72
1225.38
1000.00
1021.58
1043.63
1066.15
1089.16
1112.67
1136.68
1161.21
1186.28
1211.88
1238.03
1000.00
1024.90
1050.42
1076.58
1103.39
1130.87
1159.03
1187.89
1217.47
1247.79
1278.86
1000.00
1040.40
1082.43
1126.16
1171.66
1218.99
1268.24
1319.48
1372.79
1428.25
1485.95
Process returned 0 (0x0) execution time : 4.569 s
Press any key to continue.
在查看我的代码后,我理解为什么它会像那样打印,但我希望它看起来像这样:
Year Daily Weekly Monthly Quarterly Annually
---- ------- ------- ------- --------- --------
0 1000.00 1000.00 1000.00 1000.00 1000.00
1 100x.xx 100x.xx 100x.xx 100x.xx 100x.xx
2 10xx.xx ...
有没有办法在不改变我的代码的情况下改变打印方式?这是我的原始代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int c = 0;
double initial_bal, num_years;
double interest_rate;
double userVal[5];
userVal[0] = (365.0);
userVal[1] = (365/7.0);
userVal[2] = (365/30.0);
userVal[3] = (365/90.0);
userVal[4] = (365/365.0);
int i = 0;
printf("Enter Initial account balance: ");
scanf("%lf", &initial_bal);
double bal = initial_bal;
printf("\nEnter annual interest rate: ");
scanf("%lf", &interest_rate);
interest_rate = interest_rate/100;
printf("\nEnter number of years: ");
scanf("%lf", &num_years);
printf("Year Daily Weekly Monthly Quarterly Annually\n"
"---- ------- ------- ------- --------- --------\n");
printf(" 0 %.2f\n", initial_bal);
i=i+1;
while (i <= num_years) {
double new_rate = interest_rate/userVal[0];
for (c = 0; c <= userVal[0]; c++) {
double addVal = new_rate*initial_bal;
initial_bal = addVal+initial_bal;
}
printf (" %d %.2f \n", i, initial_bal);
i = i + 1;
c = 0;
}
initial_bal = bal;
i=0;
printf(" %.2f\n", initial_bal);
i=i+1;
while (i <= num_years) {
double new_rate = interest_rate/userVal[1];
for (c = 0; c <= userVal[1]; c++) {
double addVal = new_rate*initial_bal;
initial_bal = addVal+initial_bal;
}
printf (" %.2f \n", initial_bal);
i = i + 1;
c = 0;
}
initial_bal = bal;
i=0;
printf(" %.2f\n", initial_bal);
i=i+1;
while (i <= num_years) {
double new_rate = interest_rate/userVal[2];
for (c = 0; c <= userVal[2]; c++) {
double addVal = new_rate*initial_bal;
initial_bal = addVal+initial_bal;
}
printf (" %.2f \n", initial_bal);
i = i + 1;
c = 0;
}
initial_bal = bal;
i=0;
printf(" %.2f\n", initial_bal);
i=i+1;
while (i <= num_years) {
double new_rate = interest_rate/userVal[3];
for (c = 0; c <= userVal[3]; c++) {
double addVal = new_rate*initial_bal;
initial_bal = addVal+initial_bal;
}
printf (" %.2f \n", initial_bal);
i = i + 1;
c = 0;
}
initial_bal = bal;
i=0;
printf(" %.2f\n", initial_bal);
i=i+1;
while (i <= num_years) {
double new_rate = interest_rate/userVal[4];
for (c = 0; c <= userVal[4]; c++) {
double addVal = new_rate*initial_bal;
initial_bal = addVal+initial_bal;
}
printf (" %.2f \n", initial_bal);
i = i + 1;
c = 0;
}
return 0;
}
答案 0 :(得分:1)
设置num_years字符串数组。将它们全部初始化为空字符串&#34;&#34;,但给它们足够大的char缓冲区,比如1024.然后用sprintf将printf调用替换为临时缓冲区,并在正确的字符串上调用strcat。最后将它们全部打印出来。
设置数组。
char **output;
output = malloc(num_years * sizeof(char *));
if(!output)
/* out of memory, probably just exit */;
/* always do this for safety */
for(i=0;i<num_years;i++)
output[i] = 0;
for(i=0;i<num_years;i++)
{
output[i] = malloc(1024);
if(!output[i])
/* you're out of memory - probably just exit for now */;
strcpy(output[i], "");
}
现在我们已经获得了容量为1024字节的num_years字符串,并初始化为空字符串。然后我们通过索引解决它们并使用strcat()构建它们。
最后,我们将它们全部打印出来,然后释放它们,不要忘记释放char **本身。