var num=1; function showNum() { if(num<=10) { document.write(num+'</br>'); num++; } setTimeout("showNum()",500); } showNum();以上代码为什么输出1后1又突然变成2了?
时间: 2023-06-09 19:04:48 浏览: 43
因为在document.write(num '</br>');语句中,num和字符串'</br>'之间没有加号连接,所以JavaScript会将它们视为一个整体,即num '</br>',而不是将num和字符串'</br>'拼接起来。因此,输出的内容为1'</br>',而不是1和'</br>'分别输出。接着,num++语句将num的值从1变成了2,因此下一次循环输出的是2'</br>'。
相关问题
var num=1; function showNum() { if(num<=10) { document.write(num+'</br>'); num++; } setTimeout("showNum()",500); } showNum();请解释以上代码
这是JavaScript代码,定义了一个变量num的值为1,并定义了一个名为showNum的函数。在showNum函数中,使用if语句判断num是否小于等于10,如果成立,则在HTML页面中输出num的值,并将num的值自增1。然后使用setTimeout函数来调用showNum函数自己,500毫秒后再次执行。这样就形成了一个循环输出数字的效果,直到num的值大于10为止。
void Show_num(void) { unsigned int len=0,j,k=0; if(num<10) { Num[i]=num; OLED_ShowNum(1,i,num,1); } if(num==10) { OLED_ShowChar(1,i,'='); for(j=n+1;j<i;j++) { p[j]=i-j-1; //次方 e=e+Num[j]*pow(10,p[j]); } n=i; Run_num(); // end=b-e; // OLED_ShowNum(3,1,end,length(end)); } if(num==13) { Num[i]=10; OLED_ShowChar(1,i,'+'); for(j=n+1;j<i;j++) { p[j]=i-j-1; //次方 a=a+Num[j]*pow(10,p[j]); } n=i; // OLED_ShowNum(2,1,a,length(a)); } if(num==14) { Num[i]=11; OLED_ShowChar(1,i,'-'); for(j=n+1;j<i;j++) { p[j]=i-j-1; //次方 b=b+Num[j]*pow(10,p[j]); } n=i; // OLED_ShowNum(3,1,b,length(b)); } if(num==15) { Num[i]=12; OLED_ShowChar(1,i,'*'); for(j=n+1;j<i;j++) { p[j]=i-j-1; //次方 c=c+Num[j]*pow(10,p[j]); } n=i; // OLED_ShowNum(4,1,c,length(c)); } if(num==12) { Num[i]=13; OLED_ShowChar(1,i,'/'); for(j=n+1;j<i;j++) { p[j]=i-j-1; //次方 d=d+Num[j]*pow(10,p[j]); } n=i; // OLED_ShowNum(4,5,d,length(d)); } if(i>16) { OLED_ShowNum(2,i-16,num,1); } if(num==11) { OLED_Clear(); sum=0; i=0; n=0; a=b=c=d=e=0; note[0]=note[1]=note[2]=note[3]=0; } }根据上述代码,帮我写加减乘除都能运算的计算器
好的,基于上述代码,我来帮你实现加减乘除都能运算的计算器。具体的实现步骤如下:
1. 首先需要在代码中定义一些全局变量,用于保存表达式中的数字和运算符:
```
unsigned int Num[17]; // 保存表达式中的数字
unsigned int p[17]; // 每个数字代表的位数
unsigned int n = 0; // 上一个运算符的位置
unsigned int a = 0; // 加法操作的第一个数
unsigned int b = 0; // 减法操作的第一个数
unsigned int c = 0; // 乘法操作的第一个数
unsigned int d = 0; // 除法操作的第一个数
unsigned int e = 0; // 等号操作的第一个数
unsigned int sum = 0; // 计算结果
unsigned int note[4]; // 备注
```
2. 接下来需要修改 `Show_num` 函数,用于处理加减乘除运算。代码如下:
```
void Show_num(void) {
if(num < 10) {
// 数字
Num[i] = num;
OLED_ShowNum(1, i, num, 1);
} else if(num == 10) {
// 等号
OLED_ShowChar(1, i, '=');
for(unsigned int j = n + 1; j < i; j++) {
p[j] = i - j - 1;
e += Num[j] * pow(10, p[j]);
}
n = i;
switch(note[note[0]]) {
case 1: sum = a + e; break;
case 2: sum = b - e; break;
case 3: sum = c * e; break;
case 4: sum = d / e; break;
default: sum = e; break;
}
OLED_ShowNum(2, 1, sum, length(sum));
i = 0;
n = 0;
a = b = c = d = e = 0;
note[0] = note[1] = note[2] = note[3] = 0;
} else if(num == 11) {
// 清空
OLED_Clear();
sum = 0;
i = 0;
n = 0;
a = b = c = d = e = 0;
note[0] = note[1] = note[2] = note[3] = 0;
} else {
// 运算符
Num[i] = num - 10;
switch(Num[i]) {
case 1: note[++note[0]] = 1; break;
case 2: note[++note[0]] = 2; break;
case 3: note[++note[0]] = 3; break;
case 4: note[++note[0]] = 4; break;
}
switch(note[note[0]]) {
case 1:
for(unsigned int j = n + 1; j < i; j++) {
p[j] = i - j - 1;
a += Num[j] * pow(10, p[j]);
}
n = i;
OLED_ShowChar(1, i, '+');
break;
case 2:
for(unsigned int j = n + 1; j < i; j++) {
p[j] = i - j - 1;
b += Num[j] * pow(10, p[j]);
}
n = i;
OLED_ShowChar(1, i, '-');
break;
case 3:
for(unsigned int j = n + 1; j < i; j++) {
p[j] = i - j - 1;
c += Num[j] * pow(10, p[j]);
}
n = i;
OLED_ShowChar(1, i, '*');
break;
case 4:
for(unsigned int j = n + 1; j < i; j++) {
p[j] = i - j - 1;
d += Num[j] * pow(10, p[j]);
}
n = i;
OLED_ShowChar(1, i, '/');
break;
}
}
i++;
if(i > 16) {
OLED_ShowNum(2, i - 16, num, 1);
}
}
```
注意,在上述代码中,我们在 `note` 数组中保存了当前表达式中的所有运算符,以便在等号操作时根据不同的运算符进行不同的操作。同时,我们也在 `a`、`b`、`c`、`d`、`e` 变量中保存了每个运算符操作的第一个数,以便在等号操作时进行计算。
希望这个回答能够帮助你实现加减乘除都能运算的计算器。