前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一道简简单单的 C 语言编程题

一道简简单单的 C 语言编程题

作者头像
FPGA探索者
发布2021-04-29 17:52:38
9810
发布2021-04-29 17:52:38
举报
文章被收录于专栏:FPGA探索者FPGA探索者

联发科技2021校招IC试卷A

【简答题-9】

有一套四位数加密系统,输入四位数以后会自动加密。加密规则如下:每位数字都加上 5,然后用和除以 10 的余数代替该数字,分别再将第一位和第四位交换、第二位和第三位交换,请用 C 语言写出此加密算法。

分析要点

1. 准备使用多次循环输入,while 循环,并且指定一个输入退出机制,用 break 退出外部的 while;

2. sacnf 输入时,一定注意对于 int、unsigned int 等类型的数据需要使用 & 取地址符号,而对于字符数组或者字符串是不需要用 &,直接给变量名;

代码语言:javascript
复制
scanf("%d",&data_in);  // 注意 & 取地址符号
scanf("%s",data_in);  // 对于字符串,字符数组,变量名就是数组首地址

3. 对一个四位数取每一位的数据,应该依次取模后取除法;

4. 输出要按指定格式输出,考虑输出结果是 0 或者 12 等不足 4 位数的情况,需要在前面补零,即输出 0000、0012 等;

代码语言:javascript
复制
printf("data_out = %04d\n\n",data_out);

注意 printf 输出和 scanf 输入的不同,printf 直接是变量名,scanf 是 &+变量名;

编程结果

代码语言:javascript
复制
#include <stdio.h>
int main()
{
  int data_in;
  char A, B, C, D;
  char A1, B1, C1, D1;
  int data_out;

  while(1) {
    printf("please input data_in: "); 
    scanf("%d",&data_in);
    
    // 输入 11111 表示退出
    if( data_in == 11111 ) {
      printf("Exit\n");
      // break 退出了 while 循环
      break;              
    }
    
    // 取出 四位数
    A = data_in / 1000;        
    B = (data_in % 1000) / 100;
    C = (data_in % 100) / 10;
    D = (data_in % 10);

    // 加 5 求 余数
    A1 = (A + 5) % 10;        
    B1 = (B + 5) % 10;
    C1 = (C + 5) % 10;
    D1 = (D + 5) % 10;

    // 位交换 + 拼接   
    data_out = D1*1000 + C1*100 + B1*10 + A1;
    // 指定格式输出,输出 4 位,不够 4 位的前面补零到 4 位
    // 比如 0,指定格式输出 0000
    printf("data_out = %04d\n\n",data_out);   
  }
  return 0;  
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA探索者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档