C语言二进制转十进制.docVIP

  • 14
  • 0
  • 约2.42千字
  • 约 3页
  • 2017-06-07 发布于重庆
  • 举报
C语言二进制转十进制

第一题是程序设计 设计一个函数fun,该函数的功能为将用户输入的二进制转换为十进制,比如111111则输出255,该程序最多只能接受32位长的字符。并且显示字符串s 解:2进制转换10进制在C语言中没有提供相应的方法,需要根据自己的实际情况写出相应的计算方法。二进制转换十进制有个通用公式,(1或0)*2^0(次方)+ (1或0)*2^1(次方)+……(1或0)*2^N(次方)比如:二进制1010转换十进制 == (1*2^0)+(0*2^1)+(1*2^2)+(0*2^3) = 1+0+4+0 = 5。通过这个通用公式,将二进制转换成为十进制。下列程序中results += (temp[i] - 0) * pow(2,i);则是使用到上面相应的公式。temp[i]-‘0’需要特别注意,因为在C语言中没有将字符char类型转换为int类型的方法,相应的转换需要自行运算,而在该程序中temp[i]-‘0’则是将char转换为int 的方法。因为在c语言中0的ASCII编码为48,而该程序中temp[i]中的值是以char类型存在的将char类型直接转换为int类型在C语言中则是进行ASCII编码的运算所以,当temp[i]中的值等于‘1’的时候直接转换为int类型后的值变为49,当减去48时才能得到我们需要的正确int类型的数字1,相同道理程序中我们必须将temp[i]的值减去‘0’则是减去48。以下给出相应的程序,该程序使用win-TC编写测试通过。 #include stdio.h //需要导入math.h文件 math.h文件是用作数学运算的系统提供的类库文件 #include math.h main() { //声明相应变量,isTrue用作记录是否退出程序“y”退出“n“继续 //temp[32]用作记录用户输入字符串 char isTrue,temp[32]; //运用do-while 循环控制是否继续,当运算正确后程序自动退出 do { printf(Please input a string.\n); //gets() 函数由系统给出,用作输入字符数组,对应字符串 gets(temp); printf(You input a string is %s. \n, temp); //判断是否有内容输入 //strlen()系统给出函数,用作返回数组元素个数,返回元素不回空的个数 if (strlen(temp) = 0) { printf(Error! input length less than 0.\n); } else { //判断输入字符是否过长,超过32位,是则重新输入 if (strlen(temp) 32) { printf(Error! input length than 32.\n); //当字符串长度超过32时 isTrue等于‘y’则,重新输入 isTrue = y; } else { // 以下算法通过 二进制转换十进制公式得来 int i = 0,results = 0; //循环得出输入字符个数,根据个数计算相应的值 for (i; i strlen(temp); i ++) { //将计算的值累加得到最终结果 // 注意pow(2,i)函数,该函数用作计算某个数的N次方这里计算2的i次方 results += (temp[i] - 0) * pow(2,i); } printf(OK! System exit. %d\n,results); isTrue = n; } } //当isTrue 等于 ‘y’的时候说明输入类容,或者计算有错,返回重新输入 }while (isTrue == y); getch(); } 第二题是选择 Int {black=1,red,green,blue}; int c1 ,c2; C1=red; C2=

文档评论(0)

1亿VIP精品文档

相关文档