C Primer Plus 第6版 编程练习 chapter 16

文章目录

  • 1. 第1题
    • 1.1 题目描述
    • 1.2 编程源码
    • 1.3 结果显示
  • 2. 第2题
    • 2.1 题目描述
    • 2.2 编程源码
    • 2.3 结果显示
  • 3. 第3题
    • 3.1 题目描述
    • 3.2 编程源码
    • 3.3 结果显示
  • 4. 第4题
    • 4.1 题目描述
    • 4.2 编程源码
    • 4.3 结果显示
  • 5. 第5题
    • 5.1 题目描述
    • 5.2 编程源码
    • 5.3 结果显示
  • 6. 第6题
    • 6.1 题目描述
    • 6.2 编程源码
    • 6.3 结果显示
  • 7. 第7题
    • 7.1 题目描述
    • 7.2 编程源码
    • 7.3 结果显示

1. 第1题

1.1 题目描述

开发一个包含你需要的预处理定义的头文件。

1.2 编程源码

test.c

#include<stdio.h>#include"diceroll.h"int main(void){printf("%d\n", N);return 0;
}

diceroll.h

#ifndef DICEROLL_H_
#define DICEROLL_H_#define N 30#endif

1.3 结果显示

结果显示


2. 第2题

2.1 题目描述

两个数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的倒数。使用#define指令定义一个宏函数,,执行该运算。编写一个简单的程序测试该宏。

2.2 编程源码

#include<stdio.h>#define TIAO(x,y) 1.0/((1.0/(x)+1.0/(y))/2)int main(void){printf("%.2f\n", TIAO(1,2));return 0;
}

2.3 结果显示

结果显示


3. 第3题

3.1 题目描述

极坐标向量的模(即向量的长度)和向量相对于X轴逆时针旋转的角度来描述该向量。直角坐标用向量X轴和y轴的做俩来描述向量。编写一个程序,读取向量的模和角度,然后显示x轴坐标和y轴坐标。相关方程如下:
x = r*cos a
y = r *sin a
需要一个函数来完成转换,该函数接受一个包含极坐标的结构,并返回一个包含直角坐标的结构(或返回指向该结构的指针)。

3.2 编程源码

#include<stdio.h>
#include<math.h>struct xy{float x;float y;
};struct ra{float r;float a;
};struct xy ra2xy(struct ra t){struct xy m;m.y = t.r*sin(t.a);m.x = t.r*cos(t.a);return m;
}int main(void){	struct ra r ={1,2};struct xy m = ra2xy(r);printf("%.2f %.2f\n", m.x,m.y);return 0;
}

3.3 结果显示

结果显示


4. 第4题

4.1 题目描述

ANSI库这样描述clock函数的特性:
#include <time.h>
clock_t clock(void);
这里,clock_t是定义在time.h中的类型。该函数返回处理器时间,其单位取决于实现(如果处理器时间不可用或无法表示,该函数将返回-1)。然而,CLOCKS_PER_SEC(也定义在time.h中)是每秒处理器时间单位的数量。因此,两个clock返回值的差值除以CLOCKS_PER_SEC得到两次调用之间经过的秒数。在进行除法运算之前,把值的类型强制转换成double类型,可以将时间精确到小数点以后。编写一个函数,接受一个double类型的参数表示时间延迟数,然后这段时间运行一个循环。编写一个简单的程序测试该函数。

4.2 编程源码

#include<stdio.h>
#include<time.h>void delay(double d){clock_t e = clock()+d*CLOCKS_PER_SEC;while(clock()<e){printf("=");}}int main(void){	delay(0.01);return 0;
}

4.3 结果显示

结果显示


5. 第5题

5.1 题目描述

编写一个函数接受这些参数:内含int类型元素的数组名、数组的带下和一个代表选取次数的值。该函数从数组中随机选择指定数量的元素,并打印它们。每个元素只能选择一次(模拟抽奖数字或挑选陪审团成员)。另外,如果你的实现有time()或类似的函数,可在srand中使用这个函数的输出来初始化随机数生成器rand()。编写一个简单的程序测试该函数。

5.2 编程源码

#include<stdio.h>
#include<stdlib.h>void delay(const int *num,int len,int times){int a[len];int c;for(int i=0;i<len;++i) a[i]=0;for(int i=0;i<times;++i){c = rand()%len;while(a[c])c = rand()%len;a[c]=1;printf("%d\n", num[c]);}}int main(void){	int num[]={1,2,3,4,5,6,7,8,9,10};delay(num,10,9);return 0;
}

5.3 结果显示

结果显示


6. 第6题

6.1 题目描述

修改程序清单16.17,使用struct names元素(在程序清单16.17后面的讨论中定义过),而不是double 类型的数组。使用较少的元素,并用选定的名字显式初始化数组。

6.2 编程源码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define	NUM	10struct names{char first[40];char last[40];
};void fillarray(struct names ar[],int n){for(int i=0;i<n;++i){for(int j=0;j<10;++j)ar[i].first[j] = rand()%26 +'A';ar[i].first[10] = '\0';for(int j=0;j<10;++j)ar[i].last[j] = rand()%26 +'A';ar[i].last[10] = '\0';printf("%s %s\n", ar[i].last, ar[i].first);}
}
void showarray(const struct names ar[],int n){for(int i=0;i<n;++i){printf("%s %s\n", ar[i].last, ar[i].first);}		
}
int mycomp(const void*p1,const void *p2){const struct names *ps1 = (const struct names *) p1;const struct names *ps2 = (const struct names *) p2;int res = strcmp(ps1->last,ps2->last);if(res!=0) return res;else return strcmp(ps1->first,ps2->first);;
}int main(void){	struct names vals[NUM];fillarray(vals,NUM);puts("Random list:");showarray(vals, NUM);qsort(vals,NUM,sizeof(struct names),mycomp);puts("\nSorted list:");showarray(vals,NUM);return 0;
}

6.3 结果显示

结果显示


7. 第7题

7.1 题目描述

下面是使用了变参函数的一个程序段:

7.2 编程源码

#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>void show_array(const double ar[],int n){for(int i=0;i<n;++i){printf("%.2lf\t", ar[i]);putchar('\n');}		
}
double *new_d_array(int n,...){double *num = (double*)malloc(sizeof(double)*n);va_list ap;va_start(ap,n);for(int i=0;i<n;++i)num[i] = va_arg(ap,double);va_end(ap);return num;
}int main(void){	double *p1;double *p2;p1 = new_d_array(5,1.2,2.3,3.4,4.5,5.6);p2 = new_d_array(4,100.0,20.00,8.08,-1890.0);show_array(p1,5);show_array(p2,4);free(p1);free(p2);return 0;
}

7.3 结果显示

结果显示


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414859.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 理论题

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

新手也能看懂的【前端自动化测试入门】!

前言 最近在网上搜索前端自动化测试相关的文档&#xff0c;但是发现网上的文章都是偏使用&#xff0c;没有把一些基础概念说清楚&#xff0c;导致后续一口气遇到一些karma、Jasmine、jest、Mocha、Chai、BDD等词汇的时候很容易一头雾水&#xff0c;这次一方面整理一下收获的知…

深入探究 JavaScript 中的 String:常用方法和属性全解析(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

问题解决:No module named ‘apex‘,apex安装

最近Git了一个别人的程序&#xff0c;跑的过程中遇到了报错&#xff1a; No module named apex 关于Apex&#xff0c;官方介绍是&#xff1a;该资源库包含英伟达维护的实用程序&#xff0c;用于简化 Pytorch 中的混合精度和分布式训练。这里的部分代码最终将被纳入 Pytorch …

某ttEncrypt算法的简单分析

捣鼓背景 其实就是今晚无聊整个乐子打发一下时间了吧&#xff1f;&#xff1f;&#xff1f; - - 害&#xff0c;真实的原因是发现身边的大佬不是已经分析完某x了&#xff0c;就是在分析的路上了。再不跟上大佬的步伐&#xff0c;估计以后车尾灯都看不到了&#xff0c;再想抱…

【卡梅德生物】第一弹:关于慢病毒的介绍

慢病毒&#xff08;Lentivirus&#xff09;属于逆转录病毒的一种。包括人免疫缺陷病毒&#xff08;HIV&#xff09;&#xff0c;常见的有HIV-1和HIV-2两个亚型、猫免疫缺陷病毒&#xff08;FIV&#xff09;、猿免疫缺陷病毒&#xff08;SIV&#xff09;、牛免疫缺陷病毒&#x…

Html+Css+JavaScript实现完整的轮播图功能

概要 这个案例具备常见轮播图完整的功能&#xff0c;大家可以根据自己的需求去修改&#xff1b; 代码可以直接复制运行&#xff0c;需要安装sass 主要功能&#xff1a; &#xff08;1&#xff09;鼠标移入轮播图&#xff0c;左右两边的按钮出现&#xff0c;离开则隐藏按钮&a…

一万六千字大章:Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析

Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析 Manifest.json 文件格式 每个扩展程序的根目录中都必须有一个 manifest.json 文件&#xff0c;其中列出了有关该扩展程序的结构和行为的重要信息。 1、Demo 展示 1. 最小文件 {"manifest_version": 3,&quo…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷6

某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenStack搭建企业内部私有云平台&#xff0c;开源Kubernetes搭建云原生服务平台&#xff0c;选…

JAVA——数据类型与运算符

数据类型 注意事项&#xff1a;1.初始化操作是可选的, 但是建议创建变量的时候都显式初始化. 2.最后不要忘记分号, 否则会编译失败. 3.初始化设定的值为 10L , 表示一个长整型的数字. 10l 也可以. 4.float 类型在 Java 中占四个字节, 遵守 IEEE 754 标准. 由于表示的数据精度范…

ORM Bee设计思想与功能思维导图

ORM Bee设计思想与功能思维导图 Bee&#xff0c;互联网新时代的Java ORM框架&#xff0c;支持Sharding&#xff1b;JDBC&#xff0c;Android&#xff0c;HarmonyOS&#xff1b;支持多种关系型数据库&#xff0c;还支持NoSQL的Cassandra&#xff0c;Mongodb等&#xff1b;更快、…

element plus 可选择树形组件(el-tree) 怎样一键展开/收起?实现方法详解

实现代码&#xff1a; 按钮&#xff1a; <el-button click"takeall" style"height: 24px">{{zhanstatus % 2 ! 0 ? "收起所有" : "展开所有"}} </el-button> 组件&#xff1a; <el-form-item label"可选择菜单…