標籤:style blog io color os ar 使用 for sp
1,同位
-
題目描寫敘述:
-
輸入一個字串,然後對每一個字元進行奇數同位,最後輸出校正後的位元(如‘3’,輸出:10110011)。
-
輸入:
-
輸入包含一個字串,字串長度不超過100。
-
輸出:
-
可能有多組測試資料,對於每組資料,
對於字串中的每個字元,輸出按題目進行同位後的數,每個字元校正的結果佔一行。
-
例子輸入:
-
33a
-
例子輸出:
-
101100111011001101100001
總結:感覺還好,可是以下再貼出一份代碼,網上找的,感覺很有意思,直接使用異或運算即可。
#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\n",num[j]); else printf("%d",num[j]); } } return 0; }
2,加法器
-
題目描寫敘述:
-
實現一個加法器,使其可以輸出a+b的值。
-
輸入:
-
輸入包含兩個數a和b,當中a和b的位元不超過1000位。
-
輸出:
-
可能有多組測試資料,對於每組資料,
輸出a+b的值。
-
例子輸入:
-
2 610000000000000000000 10000000000000000000000000000000
-
例子輸出:
-
810000000000010000000000000000000
總結:寫的不好,實現了。
#include<iostream>#include<string>using namespace std;#define max_n 1020int 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;}
華中科技大學_2010___考研電腦_複試上機