下面是我写的代码:
/---------------------------------代码--------------------------------------/
#include <stdioh>
#include <stringh>
// 转化后的二进制最多的位数
#define MAX_BIN_LENGHT 100
// 输入的表达式最多的字符数
#define MAX_EXP_LENGHT 100
// 根据表达式得到二进制数
void getBinary(char express,int binary[MAX_BIN_LENGHT]);
// 根据两个二进制数,异或得到结果
void getXOR(int binaryY[MAX_BIN_LENGHT],int binaryG[MAX_BIN_LENGHT],int binaryResult[MAX_BIN_LENGHT]);
// 打印二进制数
void printBinary(int binary[MAX_BIN_LENGHT]);
int main(int argc,char argv[])
{
int binaryY[MAX_BIN_LENGHT]={0}; // 存放Y(x)转化后的二进制数
int binaryG[MAX_BIN_LENGHT]={0}; // 存放G(x)转化后的二进制数
int binaryResult[MAX_BIN_LENGHT]={0}; // 存放两个二进制数异或后的结果
char express[MAX_EXP_LENGHT]; //存放输入的表达式
printf("请输入Y(x)表达式:\n");
scanf("%s",express);
getBinary(express,binaryY);
printf("请输入G(x)表达式:\n");
scanf("%s",express);
getBinary(express,binaryG);
// 得到异或结果
getXOR(binaryY,binaryG,binaryResult);
printf("\nY(x)的二进制为:");
printBinary(binaryY);
printf("G(x)的二进制为:");
printBinary(binaryG);
printf("二者异或结果为:");
printBinary(binaryResult);
return 0;
}
/
根据表达式得到二进制数
/
void getBinary(char express,int binary[MAX_BIN_LENGHT])
{
int i;
int num=0;
char tempc;
for(i=0;i<strlen(express);)
{
if((express+i)=='^')
{
// 如果是^号,表示接下来的就是指数了
for(i=i+1;i<strlen(express);i++)
{
tempc=(express+i);
if(tempc>='0' && tempc<='9')
{
num=num10+(tempc-'0');
if((i+1)>=strlen(express))
{
binary[num]=1;
}
}
else
{
/
得到相应的指数,将对应的二进制位数设置为1。
此时二进制的最低位对应的是binary[0],二进制的最高位对应的是binary[MAX_BIN_LENGHT-1]
/
binary[num]=1;
num=0;
break;
}
}
}
else
{
if((express+i)=='1'&& (i+1)>=strlen(express))
{
// 如果最后一个数字是1,那么二进制最低位binary[0]设置为1
binary[0]=1;
}
i++;
}
}
}
/
根据两个二进制数,异或得到结果
/
void getXOR(int binaryY[MAX_BIN_LENGHT],int binaryG[MAX_BIN_LENGHT],int binaryResult[MAX_BIN_LENGHT])
{
int i;
// 分别异或每一位
for(i=0;i<MAX_BIN_LENGHT;i++)
{
// 两个相同,则置0
if(binaryY[i]==binaryG[i])
{
binaryResult[i]=0;
}
// 两个不同,则置1
else
{
binaryResult[i]=1;
}
}
}
/
打印二进制数
/
void printBinary(int binary[MAX_BIN_LENGHT])
{
/
因为binary数组中binary[0]存放的是二进制的最低位,binary[MAX_BIN_LENGHT-1]存放的是二进制的最高位,
*所以输出二进制数时,必须要将数组倒序输出
/
int i;
for(i=MAX_BIN_LENGHT-1;i>=0;i--)
{
if(binary[i]==1)
{
for(;i>=0;i--)
{
printf("%d",binary[i]);
}
}
else if(i==0)
{
printf("%d",binary[i]);
}
}
printf("\n");
}
/----------------------------------测试结果-------------------------------------/
请输入Y(x)表达式:
Y(x)=x^5+x^3+x^2+1
请输入G(x)表达式:
G(x)=x^3+x^2+1
Y(x)的二进制为:101101
G(x)的二进制为:1101
二者异或结果为:100000
/-----------------------------------------------------------------------/
下面是一些问题:
1 你的第三条中写道“3)然后101101 和1101 得异或 其中1101为被除数。”,这一条我没怎么看明白,这两个数异或哪里来的被除数啊?这一点我有点疑惑,在程序中我把你的第3条理解为求二者的异或值。
2 这个程序中是假设你输入的表达式是完全符合标准的,没有对一些错误的输入(比如输入Y(x)=x^dd+x^001+x^e2e+34+gg)这一类错误表达式的检测,这一点要注意。
3 开头的两个宏定义二进制最多的位数MAX_BIN_LENGHT、输入的表达式最多的字符数MAX_EXP_LENGHT,你可以根据自己的需要自行更改其具体的大小。
数据类型
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。
怎么去理解它们呢 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。
现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在内存上咔咔咔,不同大小的内存就分配好了,当然别忘了给它们取个好听的名字。
计算数学也叫做数值计算方法或数值分析。主要内容包括代数方程、线性代数方程组、微分方程的数值解法,函数的数值逼近问题,矩阵特征值的求法,最优化计算问题,概率统计计算问题等等,还包括解的存在性、唯一性、收敛性和误差分析等理论问题。
编程语言又称为机器语言,是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的 *** 作功能。机器语言具有灵活、直接执行和速度快等特点。
double pay = 00;
double earn = 00;
double pay_today = 001;
for(int i = 1; i <= 30; ++i)
{
earn += 100000;
pay += pay_today;
pay_today = 2;
}
printf("一个月后,百万富翁收取了%d元,付出了%d元", (long)earn, (long)pay);
以上就是关于c语言 程序设计 关于二进制 数学表达式全部的内容,包括:c语言 程序设计 关于二进制 数学表达式、高一数学必修3中程序语言“INT”是什么意思、计算数学是什么 还有编程语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)