• 华中科技大学_2010___考研计算机_复试上机


    1,奇偶校验

    题目描写叙述:

    输入一个字符串,然后对每一个字符进行奇校验,最后输出校验后的二进制数(如'3’,输出:10110011)。

    输入:

    输入包含一个字符串,字符串长度不超过100。

    输出:

    可能有多组測试数据,对于每组数据,
    对于字符串中的每个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。

    例子输入:
    3
    3a
    例子输出:
    10110011
    10110011
    01100001

    总结:感觉还好,可是以下再贴出一份代码,网上找的,感觉很有意思,直接使用异或运算即可。

    #include<iostream>
    #include<string>
    using namespace std;
    
    void odd_verify(char a){
    	int num[8]={0,0,0,0,0,0,0,0};
    	int i=0,j=0;
    	
    	while(a){
    		if(a%2 == 1) j++;
    		num[i++] = a%2;
    		a=a>>1;
    	}
    
    	if(j%2 != 1){
    		num[7] = 1;
    	}
    
    	for(j=7;j>0;j--){
    		cout<<num[j];
    	}
    	cout<<num[0]<<endl;
    }
    
    int main(){
    	string str;
    	int i,len;
    
    	while(cin>>str){
    		len=str.length();
    		for(i=0;i<len;i++){
    			odd_verify(str[i]);
    		}
    	}
    	
    	
    	return 0;
    }


    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char str[110];
        while(~scanf("%s",&str))
        {
           
           for(int i=0;str[i];i++)
           {
              int num[8];
              memset(num,0,sizeof(num));//注意memset所处的位置 
              int j=0;
              while(str[i])
              {
                num[j++]=str[i]%2;
                str[i]=str[i]/2;
              }
              num[7]=num[7]^num[6]^num[5]^num[4]^num[3]^num[2]^num[1]^num[0]^1;//异或运算符^ 
              for(int j=7;j>=0;j--)
                 if(j==0)printf("%d
    ",num[j]);
                 else printf("%d",num[j]);
           }
        }  
        return 0;  
    }


    2,加法器

    题目描写叙述:

    实现一个加法器,使其可以输出a+b的值。

    输入:

    输入包含两个数a和b,当中a和b的位数不超过1000位。

    输出:

    可能有多组測试数据,对于每组数据,
    输出a+b的值。

    例子输入:
    2 6
    10000000000000000000 10000000000000000000000000000000
    例子输出:
    8
    10000000000010000000000000000000

    总结:写的不好,实现了。

    #include<iostream>
    #include<string>
    using namespace std;
    #define max_n 1020
    
    int main(){
    	string str1,str2;
    	int i,j,s,jin;
    	int len1,len2;
    
    	while(cin>>str1 && cin>>str2){
    		int num1[max_n] = {0};
    		int num2[max_n] = {0};
    		int sum[max_n] = {0};
    
    		len1 = str1.length();
    		len2 = str2.length();
    		j=0;
    		for(i=len1-1;i>=0;i--){
    			num1[j++] = str1[i] - '0';
    		}
    		j=0;
    		for(i=len2-1;i>=0;i--){
    			num2[j++] = str2[i] - '0';
    		}
    		
    		jin=0;
    		for(i=0;i<max_n;i++){
    			s=num1[i] + num2[i] + jin;
    			sum[i] = s % 10;
    			jin = s / 10;
    		}
    		
    		for(i=max_n - 1;i>=0;i--){
    			if(i != 0){
    				if(sum[i] != 0){
    					for(j = i;j >= 0;j--){
    					cout<<sum[j];
    					}
    					break;
    				}
    			}else{
    				cout<<sum[0];
    			}
    		}
    		cout<<endl;
    
    	}
    
    	return 0;
    }






  • 相关阅读:
    idea中maven报错:无效的目标发行版: 1.8
    IDEA将web项目打成war包
    Java 错误: 找不到或无法加载主类,问题集合
    阿里云centos7使用yum安装mysql的正确姿势
    一看你就懂,超详细java中的ClassLoader详解
    Linux下,用命令进行 日志分割、日志合并
    IDEA 类图功能使用方法
    通用base.css —— 《编写高质量代码 web前端开发修炼之道》
    easyui datagrid去掉全选按钮
    element+vue:el-table-column里面的内容只显示一行
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4063482.html
Copyright © 2020-2023  润新知