qq_51352031 2021-07-21 17:47 采纳率: 85.7%
浏览 98
已采纳

C语言,信号转换问题

计算机中的所有信息都是以二进制方式表示的,这两个二进制数分别是0和1。0和1两个数可以分别用电路中的两种状态来表示,很容易用电器元件来实现,电键的闭合为1,断开为0,高电平为1,低电平为0。 假设有一条线路只输出十进制数,但是都是以二进制数的电路信号传输过来。现在你需要编写一套信号转换系统,来还原每一个十进制数。

输入格式:
第一行输入一个正整数n(n <= 10000) 之后的1-n行每行给出长度为8的字符串,字符串只包含H和L两个字符,其中H表示高电平,L表示低电平

输出格式:
对于第m条信号,用一行输出,格式为:signal#m:该信号所对应的十进制数

输入样例:
在这里给出一组输入。例如:

3
LLHHLLHH
LLLLHHHH
LLLHLLLL
输出样例:
在这里给出相应的输出。例如:

signal#1:51
signal#2:15
signal#3:16

  • 写回答

3条回答 默认 最新

  • soar3033 2021-07-21 21:28
    关注

    img

    
    // ConsoleApplication10.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    
    #include <iostream>
    #include  <stdio.h>
    #include <malloc.h>
    
    void test() {
        int n;
        scanf("%d",&n);
        if (n<=10000)
        {
            int* value = (int*)malloc(sizeof(int) * n);
            for (int i = 0; i < n; i++)
            {
                char input[8];
                for (int j = 0; j < 8; j++)
                {
                    scanf(" %c", &input[j]);
                }
    
                int tmp=0;
                for (int j = 0; j < 8; j++)
                {
                    if (input[j]=='H')
                    {
                        tmp += (0x80>>j);
                    }
                }
                value[i] = tmp;
            }
            for (int i = 0; i < n; i++)
            {
                printf("signal#%d:%d\n",(i+1),value[i]);
                
            }
        }
    }
    
    int main()
    {
        test();
        getchar();
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 7月21日
  • 创建了问题 7月21日

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制