因此,我通过在60-100之间创建一个随机数生成器并将其中的25个存储在数组中来制作贫民窟天气报告。然后我有一个函数来计算最大值,最小值和平均值以及打印所有这些。
我让它运行没有错误,但我得到的只是我的显示器中的一堆零,这意味着我在计算中的某个地方弄乱了很多时间,任何建议?
此外,我还试图调用用户定义的函数,这就是为什么我有几个。
(?:(?:\d[- _]*){6,})|(?<num_1>\d[- _]*)(?<num_2>\d[- _]*)(?<num_3>\d[- _]*)(?<num_4>\d)(?<num_5>[- _]*\d)?
答案 0 :(得分:0)
只是偶然这一行
send
要
get_value(i);
因为您必须将随机值存储在temp[i]=get_value(i);
中,所以您可以计算其他值。
当你传递数组时。你应该这样做 -
temp[i]
您可以通过calc_results(temp);
循环打印所有数组值。像这样:
for
答案 1 :(得分:0)
首先使用循环打印25个printf语句...你的代码会有点小...... 做以下更改,它应该工作得很好......
time_t t;
srand((unsigned) time(&t)); // this is a more standard way of using srand
你也在get_value()中传递了int,其参数为void ... 在main
中的for循环中执行此操作 temp[i]=get_value();
还在您的代码上方声明您的功能......
你不需要像这样的calc_results()...
做到这一点
void calc_results(void)
并且没有传递临界值因为它已经全局...不需要传递数字类型整数因为你没有使用任何这样的东西...不需要使用返回类型作为int因为你不需要返回任何整数...
最终建议...... 获取有关功能的好书
所以你的最终代码看起来像这样: -
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_value(void);
void calc_results(void);
int sum = 0;
int min = 0;
int max = 0;
int temp[25];
int i = 0;
float avg = 0;
int main () {
time_t t;
srand((unsigned) time(&t));
for (i=0; i < 25; i++) {
temp[i]=get_value();
sum += temp[i];
}
calc_results();
return 0;
};
int get_value(void) {
return((rand() % (100 - 60 + 1)) + 60);
};
void calc_results(void) {
avg = ((sum)/(25));
max = temp[0];
for(i=1;i<25;i++){
if(max<temp[i])
max=temp[i];
};
min =temp[0];
for(i=1;i<25;i++){
if(min>temp[i])
min=temp[i];
};
printf("Temperature Conditions on October 9, 2015 : \n");
printf("Time of day Temperature in degrees F \n");
for(int j=0;j<25;j++){
printf(" %d %d\n",i,temp[i]);
}
printf("Maximum Temperature for the day: %d Degrees F\n", max);
printf("Minimum Temperature for the day: %d Degrees F\n", min);
printf("Average Temperature for the day: %.1f Degrees F\n", avg);
};
同样除非局部变量失败,否则不要使用全局变量......当你执行一些大代码和文件处理时,这将有很大的帮助
答案 2 :(得分:0)
您没有为temp [i]指定任何值吗?
for (i=0; i < 25; i++) {
temp[i] = get_value(i);
sum += temp[i];
}