注册 登录
编程论坛 C语言论坛

输出数组问题 两个代码有何不同

komorebi0110 发布于 2019-12-21 11:03, 1699 次点击
当时写的时候参考了一下旁边的dalao 然后改进了一下 但是平台只给我对了2/3 请看一下为什么
6 回复
#2
komorebi01102019-12-21 11:03
《Beginning C》第五章Array课后习题 5.3,输出中的美分请保留两位小数。
编写一个程序,从键盘读入5个值,将它们存储到一个float类型的数组amounts中。创建两个包含了5个long元素的数组dollars和cents。将amounts数组元素的整数部分存储到dollars的对应元素中,amounts数组元素的小数部分存储到cents中,只保留两位数字(例如amouts[1]的值是2.75,则把2存储到dollars[1]中,把75存储到cents[1]中)。以货币格式输出这两个long类型的数组值(如$2.75)
如输入
1.111 2.22 3.33 4.44 5.55
输出
$1.11 $2.22 $3.33 $4.44 $5.55
#3
komorebi01102019-12-21 11:06
#include<stdio.h>
int main()
{
float amounts[5];
int i=0;
while(i!=5)
{scanf("%f",&amounts[i]);
i++;}
long dollars[5],cents[5];
for(int i=0;i<5;i++)
{
    dollars[i]=amounts[i];
    cents[i]=100*(amounts[i]-dollars[i]);
    printf("$%d.%d",dollars[i],cents[i]);
    if(cents[i]<10) printf("0");
    printf(" ");
}   
return 0;}//我的
#4
komorebi01102019-12-21 11:08
#include <stdio.h>
void print(long a,long b);
int main()
{
    float amount[5];
    long dollars[5], cents[5];
    for (int i =0;i< 5;++i) {
        scanf("%f",&amount[i]);
        dollars[i]=amount[i];
        cents[i]=amount[i]*100-dollars[i]*100;
        print(dollars[i],cents[i]);}
    return 0;}
void print(long a, long b) {
    printf("$%ld.%ld",a, b);
    if (b<10)
     printf("0");
    printf(" ");
    return;
}//旁边大佬的
#5
komorebi01102019-12-21 11:08
我明明感觉一模一样啊
#6
rjsp2019-12-21 11:18
两段代码都是错误的,只说你的代码吧
cents[i]=100*(amounts[i]-dollars[i]); 应该是 cents[i]=100*(amounts[i]-dollars[i]+0.5);
printf("$%d.%d",dollars[i],cents[i]); 应该是 printf("$%ld.%02ld",dollars[i],cents[i]);
if(cents[i]<10) printf("0"); 看不懂是什么意思?难道你希望输入 1.02,输出 $1.20 ?
#7
komorebi01102019-12-21 12:06
回复 6楼 rjsp
!!明白了 非常感谢
可是他的就是被AC了 凭什么啊
1