forestelk
2018-11-18 15:32
采纳率: 50%
浏览 569

谢谢大佬们看看我打的有什么问题,谢谢啦

/***********************************************************
2. 1. 计算书费
描述:下面是一个图书的单价表:计算概论 28.9 元/本;数据结构与算法 32.7 元/本;数字逻辑 45.6元/本;C++程序设计教程 78 元/本;人工智能 35 元/本;计算机体系结构 86.2 元/本;编译原理 27.8元/本;操作系统 43 元/本;计算机网络 56 元/本;JAVA程序设计元/本。给定每种图书购买的数量,编程计算应付的总费用。
输入:输入第一行包含一个正整数k(0<k<100),表示有k组测试数据;接下来k行,每行包含一组测试数据。每组测试数据包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。
输出:对于每组测试数据,输出一行。该行包含一个浮点数f,表示应付的总费用。精确到小数点后两位。可用printf("%.2f\n", sum)来输出sum的值,并精确到小数点后两位。
样例输入:
2
1 5 8 10 5 1 1 2 3 4
3 5 6 3 100 1 1 0 1 0
样例输出:
2140.20
4427.80

(我的想法是每输入10个数据循环一次出结果,循环K次,但是和题目输出有点不同,我是输入一次循环一次,他是输入完后再进行全部输出。)
*************************************/
#include
#include
using namespace std;
int main()
{
int k, a[10], i, j;
double sum;
cout << "请输入数组数:";
cin >> k;
cout << "请输入具体数据:";
cout << endl;
for (j = 0; j {
for (i = 0; i cin >> a[i];
sum = 28.9* a[0] + 32.7 * a[1] + 45.6* a[2] + 78 * a[3] + 35 * a[4] + 86.2* a[5] + 2 7.8 * a[6] + 43 * a[7] + 56 * a[8] + 65 * a[9];
cout << "书费为:" << sum;//如果是cout<<"书费为:" << setprecision(2)<<sum; 2位小数输出不对为啥呀谢谢
system("pause");
}
return 0;
}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2018-11-18 18:09
    已采纳

    不是很清楚你要做什么,按照我的理解修改了下

    #include<iostream> 
    #include<iomanip>
    
    using namespace std;
    int main()
    {
    int k, a[10], i, j;
    double sum;
    cout << "请输入数组数:";
    cin >> k;
    cout << "请输入具体数据:";
    for (i = 0; i < k; i++)
        cin >> a[i];
    for (i = k; i < 10; i++)
        a[i] = 0;
    cout << endl;
    sum = 28.9* a[0] + 32.7 * a[1] + 45.6* a[2] + 78 * a[3] + 35 * a[4] + 86.2* a[5] + 27.8 * a[6] + 43 * a[7] + 65 * a[8] + 65 * a[9];
    cout << "书费为:" << setprecision(2) << sum;
    
    }
    
    

    比较明显的错误是 cin >> a[10]; 这里显然越界了。

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题