在实际设计过程中那个报警温度的设定,可以直接对那个变量进行加减的,例如
void actfuntion(unsigned char temp)
{
temp++
}
然后在检测到按键有电平跳变的时候,就调用这个含参子函数对定义的温度设定值进行加操作,减操作也是一样,还可以在调用的后面进行最大值或者最小值的判断。
如果觉得这样一下一下的按太麻烦了,可以对按键进行长按连续触发进行判断,就是在定时器里进行判断按下时间,然后不停的调用这个子函数。
当然这个设定值是需要考虑掉电保存的,或者是按键保存。可以在设定好温度值之后,在按下其他的按键,进行把温度设定值 保存到单片机内部eeprom就可以了,不需要保存太多数据的情况下,现在市面上很多单片机都有的内部eeprom就够用的了,不需要进行外部扩展。
然后在单片机上电,也就是主函数的开头进行读取eeprom中保存的设定值。
strcpy_s包含在头文件<string.h>中第一个参数:目标字符串指针
第二个参数:字符串长度,可使用strlen()函数直接求出,切记,在使用strlen()求出字符串长度时,勿忘+1
第三个参数:输入字符串指针
你缺少了一个参数
#include <stdio.h>unsigned int Fibonacci(int n)
int main(void) {
int n
while (scanf ("%d", &n), n > 0) {
printf("%u\n",Fibonacci(n))
}
return 0
}
unsigned int Fibonacci(int n) {
if (n <= 0) return 0
if (n == 1 || n == 2) return 1
else {
int a[2] = {1, 1}, i = 3
while (i <= n) {
a[i % 2] = a[i % 2] + a[(i - 1) % 2]
i++
}
return a[(i - 1) % 2]
}
}
其实这不需要递归,稍微变一下算法就行了。另外,你的printf里的格式字符串错了,应该是"%u"而不是"%d"。