当前位置:网站首页>c现代方法16章基础
c现代方法16章基础
2022-08-03 06:22:00 【发狂的蜗牛】
练习题
6.
#include <stdio.h>
#include <stdlib.h>
struct time {
int hours;
int minutes;
int seconds;
};
struct time split_time(long total_seconds)
{
struct time ret;
ret.hours = total_seconds / 3600;
ret.minutes = (total_seconds - ret.hours * 3600) / 60;
ret.seconds = total_seconds - ret.hours * 3600 - ret.minutes * 60;
return ret;
}
int main()
{
struct time t1 = split_time(10000);
printf("hours: %ld minutes : %ld seconds : %ld\n",t1.hours,t1.minutes,t1.seconds);
system("pause");
return 0;
}运行结果如下:

7.
#include <stdio.h>
struct fraction {
int numerator; //分子
int denominator;//分母
};
//为啥这个函数自己写出来,自己也貌有点不明白
int get_gcd(int m, int n)
{
if (n == 0)
{
return m;
}
return get_gcd(n,m % n);
}
struct fraction
simplify_fraction(struct fraction * f)
{
struct fraction ret;
int gcd = get_gcd(f->numerator,f->denominator);
ret.numerator = f->numerator / gcd;
ret.denominator = f->denominator / gcd;
return ret;
}
//(b)分数相加
struct fraction add(struct fraction * l,struct fraction * r)
{
struct fraction ret;
ret.numerator = l->numerator * r->denominator + l->denominator * r->numerator;
ret.denominator = l->denominator * r->denominator;
ret = simplify_fraction(&ret);
return ret;
}
//(c)分数相减
struct fraction subtraction(struct fraction * l, struct fraction * r)
{
struct fraction ret;
ret.numerator = l->numerator * r->denominator - l->denominator * r->numerator;
ret.denominator = l->denominator * r->denominator;
ret = simplify_fraction(&ret);
return ret;
}
//(d)把两个分数相乘
struct fraction multiply(struct fraction * l, struct fraction * r)
{
struct fraction ret;
ret.numerator = l->numerator * r->numerator;
ret.denominator = l->denominator * r->denominator;
ret = simplify_fraction(&ret);
return ret;
}
//(e)除法 略(和乘法类似)
int main()
{
//(a)
struct fraction f1;
f1.numerator = 1001;
f1.denominator = -7;
struct fraction sim_of_f1 = simplify_fraction(&f1);
printf("numerator:%d ,denominator: %d\n",sim_of_f1.numerator,sim_of_f1.denominator);
//(b)
struct fraction f2,f3;
f2.denominator = 3;
f2.numerator = 4;
f3.denominator = 5;
f3.numerator = 6;
struct fraction r2 = add(&f2,&f3);
printf("nume:%d,deno:%d\n",r2.numerator,r2.denominator);
//(c)
struct fraction r3 = subtraction(&f2,&f3);
printf("nume:%d,deno:%d\n", r3.numerator, r3.denominator);
//(d)
struct fraction r4 = multiply(&f2,&f3);
printf("nume:%d,deno:%d\n", r4.numerator, r4.denominator);
return 0;
}边栏推荐
- IEEE RAL投初稿
- el-tree设置选中高亮焦点高亮、选中的节点加深背景,更改字体颜色等
- 【RT_Thread学习笔记】---以太网LAN8720A Lwip ping 通网络
- 力扣解法汇总622-设计循环队列
- PHP 获取服务器信息
- 在线开启gtid偶发hang住的问题解决
- El - tree set using setCheckedNodessetCheckedKeys default check nodes, and a new check through setChecked specified node
- 人脸检测和识别--face recognition包
- 被数据分析重塑的5个行业
- MySQL的DATE_FORMAT()函数将Date转为字符串
猜你喜欢
随机推荐
Multi-Head-Attention原理及代码实现
Charles抓包显示<unknown>解决方案
MySQL的10种常用数据类型
信息学奥赛一本通T1448:深搜的剪枝技巧 电路维修
开放域OOD主要数据集、评价指标汇总
mysql 数据去重的三种方式[实战]
empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType),
一篇文章教你写扫雷(c语言基础版)
【着色器实现HandDrawn简笔画抖动效果_Shader效果第十二篇】
excel高级绘图技巧100讲(二十一)- Excel层叠柱形图
JS 预编译
多线程可见
924. 尽量减少恶意软件的传播 前缀和
jvm 面试题
Cesium加载离线地图和离线地形
信息学奥赛一本通T1446:素数方阵
死锁的成因和对应的解决方案
七夕和程序员有毛关系?
信息学奥赛一本通T1449:魔板
关于利用canvas画带箭头的直线旋转









