m0_54132659 2021-03-15 10:47 采纳率: 83.3%

# c/c++ （计算机系统）的编程题，请会的大佬直接留下代码

Celmomether

A thermometer measures the temperature at regular intervals and stores the measured temperatures (may be also negative) in the `temperatures` array of integers (the `int` type). Unfortunately, the device is somewhat unreliable, so sometimes it is not able to measure the temperature. In that case, the value stored in the array is equal to `no_value` constant.

Display the measured values in the array on the standard output as a horizontal bar thermometer. Each measured value will be displayed on one line. The first column of the output represents the most negative measured value (ignore `no_value` constant). Each additional column of the output represents a temperature 1 degree higher. The temperature will be displayed as a continuous segment of the characters `*` from the column representing the measured temperature to the column representing the temperature 0. Space characters are used for padding of the unused columns on the left side. If a value corresponding to the constant `no_value` appears in the measured values, then the last actually measured value is used instead (use 0 if there is no such value).

To simplify the input, insert the following two lines into your source code and use them as input array for measured values

``````constexpr int no_value = -999;
int temperatures[] { 10, 12, no_value, no_value, 20, 14, 6, -1, -5, 0, no_value, 1, -3 };
``````

Demo output for values `-1, no_value, -3, 0, 2`:

``````  **
**
****
*
***``````
• 写回答

#### 3条回答默认 最新

• 502203305 2021-03-15 11:20
关注
``````#include<stdio.h>
int main(void){
constexpr int no_value = -999;
int temperatures[] { 10, 12, no_value, no_value, 20, 14, 6, -1, -5, 0, no_value, 1, -3 };
int templen = sizeof(temperatures)/sizeof(*temperatures);
int tempMax,tempStart, temperMin = 999;
for(int i = 0 ; i < templen; i++)
{
if(no_value == temperatures[i])
{
if(0 == i)
{
temperatures[i] = 0;
}
else
{
temperatures[i] = temperatures[i - 1];
}
}
temperMin = temperatures[i] < temperMin ? temperatures[i] : temperMin;
}

for(int i = 0 ; i < templen; i++)
{
if(temperatures[i] < 0)
{
tempMax = 0 ;
tempStart = temperatures[i];
}
else
{
tempMax = temperatures[i] ;
tempStart = 0;
}
for(int j = temperMin ; j <= tempMax ; j ++)
{
printf(j < tempStart?" ":"*");
}
printf("\n");
}
}``````
本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥15 有人会思科模拟器嘛?
• ¥30 遇到一个的问题，请教各位
• ¥20 matlab报错，vflux计算潜流通量
• ¥15 我该如何实现鼠标按下GUI按钮时就执行按钮里面的操作的方法
• ¥15 关于#硬件工程#的问题：我这边有个锁相环电路没有效果
• ¥15 20款 27寸imac苹果一体机装win10后，蓝牙耳机和音响放歌曲卡顿断断续续.
• ¥15 VB.NET 父窗体调取子窗体报错
• ¥15 python海龟作图如何改代码使其最后画出来的是一个镜像翻转的图形
• ¥15 我不明白为什么c#微软的官方api浏览器为什么不支持函数说明的检索，有支持检索函数说明的工具吗？
• ¥15 在我想检测ros是否成功安装时输入roscore出现以下