#include<stdio.h>
#include<string.h>
#define LENGTH 9
int func(char*);
char* s_gets(char* st, int n);
void itobs(int, char*);
void show_bstr(const char*);
int main(void)
{
while (1)
{
char word1[LENGTH];
char word2[LENGTH];
char temp[LENGTH];
int value1, value2;
printf("输入第一段字符串\n");
s_gets(word1, LENGTH);
value1 = func(word1);
printf("输入第二段字符串\n");
s_gets(word2, LENGTH);
value2 = func(word2);
printf("第一段字符串的反码:\n");
itobs(~value1, temp);
show_bstr(temp);
printf("\n");
printf("第二段字符串的反码:\n");
itobs(~value2, temp);
show_bstr(temp);
printf("\n");
printf("求和:\n");
itobs(value1&value2, temp);
show_bstr(temp);
printf("\n");
printf("求或:\n");
itobs(value1 | value2, temp);
show_bstr(temp);
printf("\n");
printf("求异或:\n");
itobs(value1 ^ value2, temp);
show_bstr(temp);
printf("\n");
}
return 0;
}
char* s_gets(char* st, int n)
{
char* ret_val, * find;
if (ret_val = fgets(st, n, stdin))
if (find = strchr(st, '\n'))
*find = '\0';
else
while (getchar() != '\n')
continue;
return ret_val;
}
int func(char* pbin)
{
float pow = 0.5;
int sum = 0;
for (int i = strlen(pbin) - 1; i >= 0; i--)
{
pow *= 2;
if (*(pbin + i) == '1')
sum += pow;
}
return sum;
}
void itobs(int n, char* ps)
{
int i;
for (i =7; i >= 0; i--,n>>=1)
{
ps[i] = (1 & n) + '0';
ps[8] = '\0';
}
}
void show_bstr(const char*str)
{
int i = 0;
while (str[i])
{
putchar(str[i]);
if (++i % 4 == 0 && str[i])
putchar(' ');
}
}
C PRIMER PLUS 第15章 第2题
最新推荐文章于 2024-05-23 00:15:00 发布