改进#include<stdio.h> #include<stdlib.h> #include<time.h> double temperature(int hour, int minute){ if(hour>=3&&hour<=14){ srand((unsigned)time(0)); int n; if(hour>=3&&hour<=6){ n = rand() % 10; } else if(hour>6&&hour<12){ n =9 + rand() % 12; } else { n =20 + rand() % 16; } int i; for(i=hour;i<14;i++){ if(minute==0){ printf("时间为%d:00时温度为%d\n",i,n); } int j; for(j=minute;j<=60;j+=5){ if(j==60){ n+=3; printf("时间为%d:00时温度为%d\n",i+1,n); minute=0; } else if(j>=0&j<10){ n+=1; j+=5; printf("时间为%d:0%d时温度为%d\n",i,j,n); } else{ n+=2; printf("时间为%d:%d时温度为%d\n",i,j,n); } } } } } int main(){ int hour,minute; printf("请输入时间,输入格式为整点(如7:00)或每相隔5分钟的时间点(如7:05,7:15)\n"); scanf("%d:%d",&hour,&minute); double tem = temperature(hour,minute); return 0; }使rand()输出的数符合随时间温度的正常变化
时间: 2024-04-08 11:33:40 浏览: 47
为了使`rand()`输出的数符合随时间温度的正常变化,您可以利用时间作为种子来生成随机数。以下是改进后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double temperature(int hour, int minute) {
if (hour >= 3 && hour <= 14) {
srand(time(NULL)); // 使用当前时间作为种子
int n;
if (hour >= 3 && hour <= 6) {
n = rand() % 10;
} else if (hour > 6 && hour < 12) {
n = 9 + rand() % 12;
} else {
n = 20 + rand() % 16;
}
int i;
for (i = hour; i < 14; i++) {
if (minute == 0) {
printf("时间为%d:00时温度为%d\n", i, n);
}
int j;
for (j = minute; j <= 60; j += 5) {
if (j == 60) {
n += 3;
printf("时间为%d:00时温度为%d\n", i + 1, n);
minute = 0;
} else if (j >= 0 & j < 10) {
n += 1;
j += 5;
printf("时间为%d:0%d时温度为%d\n", i, j, n);
} else {
n += 2;
printf("时间为%d:%d时温度为%d\n", i, j, n);
}
}
}
}
}
int main() {
int hour, minute;
printf("请输入时间,输入格式为整点(如7:00)或每相隔5分钟的时间点(如7:05, 7:15)\n");
scanf("%d:%d", &hour, &minute);
double tem = temperature(hour, minute);
return 0;
}
```
在改进的代码中,我们使用`srand(time(NULL))`将时间作为种子,确保每次运行程序时生成的随机数序列都是不同的。这样可以使得`rand()`输出的数与时间相关,并且能够符合温度的正常变化。
阅读全文