如何用c语言写分数,用C语言编程平均分数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

当个反面典型,让大家见识下丑陋无比的程序好了,主要是想练练打字,HOHO。应该用二维数组且全部函数化的,rand的%后面或是101或是100,可能和编译器有关,TC2下应写100,我那时候试好像是这样,吃饭鸟,类型就不管了。

struct student

{

int score[3];

}stu1,stu2,stu3,stu4;

int average(int *p)

{

return ((*p)+(*(p+1))+(*(p+2)))/3;

}

void main()

{

int i;

int j=20;

int k;

int result1,result2,result3,result4;

clrscr();

for (k=1;k<=3;k++)

{

stu1.score[k]=rand()%100;

stu2.score[k]=rand()%100;

stu3.score[k]=rand()%100;

stu4.score[k]=rand()%100;

}

result1=average(stu1.score);

result2=average(stu2.score);

result3=average(stu3.score);

result4=average(stu4.score);

for (i=1;i<=3;i++)

{

printf("The 1st student's score %d is %d\n",i,stu1.score[i-1]);

printf("The 2nd student's score %d is %d\n",i,stu2.score[i-1]);

printf("The 3nd student's score %d is %d\n",i,stu3.score[i-1]);

printf("The 4th student's score %d is %d\n",i,stu4.score[i-1]);

}

printf("The 1st student's score is %d\n",result1);

printf("The 2nd student's score is %d\n",result2);

printf("The 3rd student's score is %d\n",result3);

printf("The 4th student's score is %d\n",result4);

}

C语言中,我们可以创建一个简单的结构体表示分数,然后编来进行分数的加法和减法操作。这里是一个基础的示例: ```c #include <stdio.h> // 定义分数结构体 typedef struct { int numerator; // 分子 int denominator; // 分母 } Fraction; // 函声明,用于计算两个分数相加 Fraction addFractions(Fraction f1, Fraction f2); // 函声明,用于计算两个分数相减 Fraction subtractFractions(Fraction f1, Fraction f2); // 初始化分数 void initFraction(Fraction* fraction, int num, int den) { fraction->numerator = num; fraction->denominator = den; } // 打印分数 void printFraction(Fraction fraction) { printf("%d/%d", fraction.numerator, fraction.denominator); } int main() { Fraction f1, f2, resultAdd, resultSubtract; // 用户输入分数 printf("请输入第一个分数 (分子/分母): "); scanf("%d/%d", &f1.numerator, &f1.denominator); printf("请输入第二个分数 (分子/分母): "); scanf("%d/%d", &f2.numerator, &f2.denominator); // 初始化分数结构体 initFraction(&resultAdd, f1.numerator, f1.denominator); initFraction(&resultSubtract, f1.numerator, f1.denominator); // 加法 resultAdd = addFractions(f1, f2); printf("\n加法结果: "); printFraction(resultAdd); // 减法 resultSubtract = subtractFractions(f1, f2); printf("\n减法结果: "); printFraction(resultSubtract); return 0; } // 计算分数加法,如果分母不同需要先转换为公共分母 Fraction addFractions(Fraction f1, Fraction f2) { int lcm; // 最大公约 lcm = __gcd(f1.denominator, f2.denominator); // 使用辗转相除法求最大公约 // 转换分数到公共分母 f1.numerator *= lcm / f1.denominator; f2.numerator *= lcm / f2.denominator; // 直接将分子相加,保持公共分母 resultAdd.numerator = f1.numerator + f2.numerator; resultAdd.denominator = lcm; return resultAdd; } // 计算分数减法,与加法类似,也需要处理公共分母 Fraction subtractFractions(Fraction f1, Fraction f2) { int lcm; // 最大公约 lcm = __gcd(f1.denominator, f2.denominator); // 使用辗转相除法求最大公约 // 转换分数到公共分母 f1.numerator *= lcm / f1.denominator; f2.numerator *= lcm / f2.denominator; // 相减并保持公共分母 resultSubtract.numerator = f1.numerator - f2.numerator; resultSubtract.denominator = lcm; return resultSubtract; } // 辗转相除法计算最大公约 int __gcd(int a, int b) { if (b == 0) return a; else return __gcd(b, a % b); } // 相关问题: 1. 如何避免分数运算时可能出现的除零错误? 2. 这个程序能否处理无限小的分数(即分母为1的情况)? 3. 如果我想让这个程序支持分数乘法和除法,应该如何扩展? ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值