1. 引言
在C语言中,我们经常需要进行数值运算,其中涉及到的分数运算是很常见的。而分数的表示方式可以用分子和分母表示,其中包含的数字要以字符串的形式表示。在这篇文章中,我们将介绍如何使用C语言来表示分子和分母,并实现一些分数运算。
2. 字符串表示分数
2.1 什么是字符串
在C语言中,字符串是以'\0'(空字符)结尾的一串字符数组,它在内存中占用一段连续的空间。字符串可以用双引号或单引号表示,例如:
char str[] = "hello world";char c = 'a';
其中str是一个字符串数组,c是一个字符数组,它们都占用一定的内存空间。
2.2 使用字符串表示分数
将分数的分子和分母以字符串的形式表示,可以用以下代码:
char numerator[] = "12";char denominator[] = "24";
这里我们分别用numerator和denominator表示分子和分母,它们都是字符数组,其中的数字都是以字符串的形式表示。
3. 字符串转换成数字
3.1 atoi函数
上面我们将分数的分子和分母以字符串的形式表示,但是在进行计算时,需要将它们转换成整数或浮点数。C语言中提供了很多字符串转换函数,在这里我们介绍一种常用的函数atoi()。
atoi()函数可以将一个字符串转换成整数,例如:
char str[] = "123";int num = atoi(str);
这里将字符串"123"转换成整数123,并赋值给变量num。需要注意的是,如果字符串本身不是数字,那么atoi()会返回0。
3.2 atof函数
如果分子或分母是小数,我们需要使用atof()函数将字符串转换成浮点数。例如:
char str[] = "1.23";float num = atof(str);
这里将字符串"1.23"转换成浮点数1.23,并赋值给变量num。
4. 分数运算
有了字符串转换成数字的知识,我们就可以进行分数运算了。
4.1 分数加法
可以根据分数加法的公式a/b + c/d = (ad + bc) / bd,将字符串形式的分子和分母转换成数字进行计算。代码如下:
char numerator1[] = "1";char denominator1[] = "2";
char numerator2[] = "1";
char denominator2[] = "4";
int num1 = atoi(numerator1);

int den1 = atoi(denominator1);
int num2 = atoi(numerator2);
int den2 = atoi(denominator2);
int num = num1*den2 + num2*den1;
int den = den1*den2;
printf("result: %d/%d", num, den);//输出1/4
4.2 分数减法
可以根据分数减法的公式a/b - c/d = (ad - bc) / bd,将字符串形式的分子和分母转换成数字进行计算。代码如下:
char numerator1[] = "3";char denominator1[] = "4";
char numerator2[] = "1";
char denominator2[] = "2";
int num1 = atoi(numerator1);
int den1 = atoi(denominator1);
int num2 = atoi(numerator2);
int den2 = atoi(denominator2);
int num = num1*den2 - num2*den1;
int den = den1*den2;
printf("result: %d/%d", num, den);//输出5/4
4.3 分数乘法
可以根据分数乘法的公式a/b * c/d = ac/bd,将字符串形式的分子和分母转换成数字进行计算。代码如下:
char numerator1[] = "2";char denominator1[] = "3";
char numerator2[] = "3";
char denominator2[] = "4";
int num1 = atoi(numerator1);
int den1 = atoi(denominator1);
int num2 = atoi(numerator2);
int den2 = atoi(denominator2);
int num = num1*num2;
int den = den1*den2;
printf("result: %d/%d", num, den);//输出6/12
4.4 分数除法
可以根据分数除法的公式a/b ÷ c/d = ad/bc,将字符串形式的分子和分母转换成数字进行计算。代码如下:
char numerator1[] = "2";char denominator1[] = "3";
char numerator2[] = "3";
char denominator2[] = "4";
int num1 = atoi(numerator1);
int den1 = atoi(denominator1);
int num2 = atoi(numerator2);
int den2 = atoi(denominator2);
int num = num1*den2;
int den = den1*num2;
printf("result: %d/%d", num, den);//输出8/9
5. 总结
本文介绍了如何在C语言中使用字符串表示分数,并通过字符串与数字之间的相互转换,实现了分数的加法、减法、乘法和除法。这种方式能够方便地将用户输入的分数转换成程序可处理的数据,并进行一些复杂的分数运算。


