简单问题..入门问题啊。。帮我看看

huanhuan30 2009-03-31 01:42:46
#include <stdio.h>
#include "stdafx.h"
#include <string.h>
char *BinToStr(char *, int);
int BinToInt (char *);
int main(void)
{
int nNum1, nNum2;
char lpszBinStr[sizeof(int) * 8 + 1];
char lpszBin[2][33];
gets(lpszBin[0]);
gets(lpszBin[1]);
nNum1 = BinToInt(lpszBin[0]);
nNum2 = BinToInt(lpszBin[1]);
printf("~Number1 :%s \n", BinToStr(lpszBinStr, ~nNum1));
printf("~Number2 :%s \n", BinToStr(lpszBinStr, ~nNum2));
printf("Number1&Number : %s\n", BinToStr(lpszBinStr, nNum1&nNum2)); //这三条条语句打印出来为空。。。为什么??
printf("Number1|Number : %s\n", BinToStr(lpszBinStr, nNum1|nNum2));
printf("Number1^Number : %s\n", BinToStr(lpszBinStr, nNum1^nNum2));
return 0;
}
int BinToInt (char *lpszBin) // 将输入的二进制码转化为数字
{
int nSum = lpszBin[strlen(lpszBin) -1] - '0';
int nSubSum = 1;
int cNum, cNum1, cCount;
for (cNum = strlen(lpszBin)-2, cCount = 0; cNum>=0; cNum--, cCount++)
{
for (cNum1 = 0; cNum1 <= cCount; cNum1++)
{
nSubSum *= 2;
}
nSum += (lpszBin[cNum]-'0') * nSubSum;
nSubSum = 1;
}
//printf("%d \n", nSum);
return nSum;
}
char *BinToStr(char *lpszBinString, int nNum) //讲数字转化为2进制码
{
int cNum;
int nMark = 01;
int nSize = sizeof(int) * 8;
for (cNum = nSize-1; cNum >= 0; cNum--)
{
lpszBinString[cNum] = nNum & nMark + '0';
nNum >>= 1;
}
lpszBinString[nSize] = '\0';
return lpszBinString;
}

题目在注释当中。。为什么nNum1&nNum2 和 nNum1|nNum2 nNum1^nNum2 这三个作为参数 显示为 空..。。无语啊
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliangbao 2009-03-31
  • 打赏
  • 举报
回复
差了半天,原来是优先级的问题!
& 没有 +优先级高!
char *BinToStr(char *lpszBinString, int nNum)   //讲数字转化为2进制码
{
int cNum;
int nMark = 01;
int nSize = sizeof(int) * 8;
for (cNum = nSize-1; cNum >= 0; cNum--)
{
lpszBinString[cNum] = (nNum & nMark) + '0';//这样修改
nNum >>= 1;
}
lpszBinString[nSize] = '\0';
return lpszBinString;
}
cyldf 2009-03-31
  • 打赏
  • 举报
回复

char *BinToStr(char *lpszBinString, int nNum) //讲数字转化为2进制码
{
int cNum;
int nMark = 01;
int nSize = sizeof(int) * 8;
for (cNum = nSize-1; cNum >= 0; cNum--)
{
lpszBinString[cNum] = nNum & nMark + '0';//改成lpszBinString[cNum] = (nNum & nMark) + '0';
nNum >>= 1;
}
lpszBinString[nSize] = '\0';
return lpszBinString;
}

mengde007 2009-03-31
  • 打赏
  • 举报
回复
gets()是输入串的
mengde007 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 huanhuan30 的帖子:]
gets(lpszBin[0]);
gets(lpszBin[1]);
[/Quote]不能这样写吧!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧