7-1 03 01正负数统计全屏浏览题目切换布局 作者scs 单位北京邮电大学 请写一段正负数统计的程序。输入格式: 为若干整数,以-1结束(测试数据保证这组数中只有最后一个-1) 输出格式: 共两行,第一行为三个整数(用一个空格分隔),依次为这组数中正数的个数,0的个数和负数的个数(不统计最后的-1)。 第二行为用一个空格分隔的两个整数,依次为这组数中所有正数的和及所有负数的和(不包括最后的-1)。 测试数据保证求和的结果可以用int型存储。
时间: 2023-05-21 08:01:42 浏览: 66
以下是正负数统计的程序:
#include <iostream>
using namespace std;
int main() {
int positive = 0, zero = 0, negative = 0;
int sum_positive = 0, sum_negative = 0;
int num;
cin >> num;
while (num != -1) {
if (num > 0) {
positive++;
sum_positive += num;
} else if (num == 0) {
zero++;
} else {
negative++;
sum_negative += num;
}
cin >> num;
}
cout << positive << " " << zero << " " << negative << endl;
cout << sum_positive << " " << sum_negative << endl;
return 0;
}
相关问题
请解释一下这段代码 : double lilun=rdbzb.RealAC/scs->StandardI*scs->ILiLun
这段代码使用了一些变量和运算符来计算一个值。以下是每个变量的含义和用途:
- `rdbzb.RealAC`:这是一个变量,它很可能是一个结构体或对象的成员,它表示一个实数值。该变量的值将被除以其他值,以计算最终结果。
- `scs`:这是一个指针变量,它指向某个结构体或对象。该结构体或对象可能包含与要计算的值相关的其他数据。
- `scs->StandardI`:这是一个结构体或对象的成员,它表示一个实数值。这个值是计算中的一个因子,它将用于除法运算。
- `scs->ILiLun`:这也是一个结构体或对象的成员,它表示一个实数值。这个值是计算中的另一个因子,它也将用于除法运算。
运算符解释:
- `/`:除法运算符,用于将左侧操作数除以右侧操作数。
因此,该行代码的作用是计算一个名为`lilun`的双精度浮点数值,该值由`rdbzb.RealAC`除以`scs->StandardI`和`scs->ILiLun`的乘积而得到。注意,这个计算假设`scs`指向一个有效的结构体或对象,并且`scs->StandardI`和`scs->ILiLun`不为零。
写一段msp430编码器测速
好的,下面是一段使用 MSP430 的编码器测程序示例:
```c
#include <msp430.h>
unsigned int count = 0;
unsigned int speed = 0;
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; // 停用看门狗定时器
P1DIR &= ~(BIT2 | BIT3); // 配置 P1.2 和 P1.3 为输入
P1REN |= BIT2 | BIT3; // 启用 P1.2 和 P1.3 的上拉电阻
P1OUT |= BIT2 | BIT3; // 设置 P1.2 和 P1.3 的上拉电阻为上拉
TA0CTL = TASSEL_2 | MC_2 | TACLR | TAIE; // 选择 SMCLK 作为时钟源,选择连续计数模式,清除计数器,开启中断
TA0CCTL0 = CM_3 | CCIS_1 | SCS | CAP | CCIE; // 配置 TA0CCR0 捕获模式,捕获上升和下降沿,选择 CCIxA 输入信号源,同步捕获模式,开启中断
__bis_SR_register(GIE); // 开启全局中断
while(1)
{
// 主循环中的其他代码
}
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A(void)
{
count = TA0CCR0; // 读取捕获计数器的值
speed = 60000000 / count; // 计算速度,假设编码器每转一圈产生 600 个脉冲
// 清除中断标志位
TA0CTL &= ~TAIFG;
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A1(void)
{
if (TA0IV == TA0IV_TACCR1) // 捕获中断
{
TA0CTL &= ~TAIFG; // 清除中断标志位
}
}
```
这段程序使用了 MSP430 的定时器 TA0 来实现编码器测速。在 `main` 函数中,首先停用了看门狗定时器,然后配置了 P1.2 和 P1.3 为输入引脚,并启用了上拉电阻。接着,配置了 TA0 的计数模式为连续计数模式,并开启了中断。然后,配置了 TA0CCR0 为捕获模式,捕获上升和下降沿,并选择 CCIxA 输入信号源,同时开启了中断。
在 `Timer_A` 函数中,我们定义了定时器中断的处理函数,每次 TA0 计数到 TA0CCR0 的值时会执行该函数。在函数中,我们读取捕获计数器的值,并根据编码器每转一圈产生的脉冲数量计算速度。最后,清除了中断标志位。
在 `Timer_A1` 函数中,我们定义了捕获中断的处理函数,这个中断用于捕获编码器的脉冲信号。在这个函数中,我们可以进行编码器脉冲的计数或其他相关操作。在该函数中,我们还清除了中断标志位。
请注意,这只是一段示例程序,你可能需要根据你的具体需求进行适当的修改和调整。另外,确保正确配置了编码器的引脚和相关寄存器,以使测速功能正常工作。