C语言中关于数字的一些小程序
2015-11-29 21:37
225 查看
在c语言的学习过程中不管是比赛或者平时考试,有些数字的问题总让人觉得好想但并不好写,比如数字进制之间的转换,输入原码求补码等,所以我将之前总结的一些小程序分享跟大家,希望对你们有所帮助。
1.二进制与十进制之间的相互转换
a.二进制转十进制
b.十进制转二进制
2.十进制与十六进制之间的相互转换
a.十六进制转十进制
b.十进制转十六进制
3.原码转换为它的补码
4.求两个数之间的最大公约数和最小公倍数
最后,还有一个小知识想告诉大家,比如两个定义为float或者double型的两个变量,假如在模拟给小学生出计算题的情境下,给出2+3=? 假如输入为5 如需要判断的话,则需要将输入答案与系统做的正确答案比较,但是会发现二者始终不相等,一个是5,一个是5.0000000.在这种情况下应该怎么处理呢?需要将二者做差,让它们的差小于一个很小的数,比如10的负10次方等,就可以正常比较了。‘
作者:李璐
1.二进制与十进制之间的相互转换
a.二进制转十进制
#include <stdio.h> #include <string.h> #include <math.h> int main(void) { int i,x,s=0; char test[10]; scanf("%s",test); x=strlen(test); for(i=x-1;i>=0;i--) if(test[i]=='1') s=s+pow(2,x-i-1); printf("%d\n",s); }
b.十进制转二进制
#include<stdio.h> int main(void) { int i,j,b; char a[100]; printf("请输入一个数\n"); scanf("%d",&b); j=15; for(i=0;i<16;i++) { if((b>>j)&1==1) a[16-1-j]='1'; else a[16-1-j]='0'; j--; } fflush(stdin); printf("输出转化后的所有2进制数\n"); for(i=0;i<16;i++) printf("%c",a[i]); }
2.十进制与十六进制之间的相互转换
a.十六进制转十进制
#include <stdio.h> #include <math.h> #include <string.h> int main(void) { int i,j,k,y=0; double x=0; char a[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','\0'}; char b[5]; printf("b="); scanf("%s",b); j=strlen(b); b[j]='\0'; for(i=j-1;i>=0;i--) { for(k=0;k<16;k++) { if(b[i]==a[k]) { x=x+k*pow(16,y); y++; break; } } } printf("%lf",x); }
b.十进制转十六进制
#include <stdio.h> #include <string.h> int main(void) { int x; int i,j=0,y,k; char a[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','\0'},b[10]; printf("x="); scanf("%d",&x); if(x==0) printf("0"); while(x!=0) { if(x/16==0) { b[j]=a[x]; j++; break; } else { i=x%16; b[j]=a[i]; j++; x=x/16; } } b[j]='\0'; y=strlen(b); for(k=y-1;k>=0;k--) printf("%c",b[k]); }
3.原码转换为它的补码
#include<stdio.h> #include<string.h> void buma(char str[20]) { int i,n=strlen(str); char t=0; if(str[0]=='0') str=str; else { for(i=1;i<n;i++) { if(str[i]=='0') str[i]='1'; else str[i]='0'; } for(i=n-1;i>=1;i--) { if(i==n-1) str[i]=str[i]+1; else { str[i]=str[i]+t; t=0; } if(str[i]>'1') { str[i]='0'; t=1; } } } } int main(void) { char str[20]; printf("请输入你一个数的原码:\n"); scanf("%s",str); buma(str); printf("输出该数的补码为:\n"); printf("%s",str); }
4.求两个数之间的最大公约数和最小公倍数
#include <stdio.h> int main(void) { int a,b,x,y; scanf("%d %d",&a,&b); x=a*b; while(b>0) { y=a%b; a=b; b=y; } printf("%d %d",a,x/a); }
最后,还有一个小知识想告诉大家,比如两个定义为float或者double型的两个变量,假如在模拟给小学生出计算题的情境下,给出2+3=? 假如输入为5 如需要判断的话,则需要将输入答案与系统做的正确答案比较,但是会发现二者始终不相等,一个是5,一个是5.0000000.在这种情况下应该怎么处理呢?需要将二者做差,让它们的差小于一个很小的数,比如10的负10次方等,就可以正常比较了。‘
作者:李璐
相关文章推荐
- 【C语言提高04】程序的内存四区模型
- C语言中常用的string.h的字符函数
- C++关于符号&的各种含义:
- 简述C、C++程序编译的内存分配情况
- C++内存管理
- 【C语言提高03】变量本质
- c++生成二维码
- c++11 final与override说明符
- C语言经典例程100例
- c++日期类
- 一起talk C栗子吧(第六十八回:C语言实例--DIY字符串长度函数的小疑问)
- 【C语言提高02】数据类型本质
- C++实现输入输出运算符重载、友元函数和成员函数实现复数类Complex
- C++学习笔记——一只P转C的OIer的学习历程
- 【C语言提高01】冒泡排序和数组做参数的问题
- 黑马程序员——基础笔记:初始C语言
- C++静态成员变量和静态成员函数
- c语言:判断一个字符串中是否含有字符C
- C++ 之函数调用操作符和函数对象
- c语言:输出一个静态局部变量只在函数内部有效的例子