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	10

struct 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 结果显示

结果显示


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux|操作系统|centos7物理机安装网卡驱动8188gu(内核升级,firmware固件,USB设备管理,module管理)

前言&#xff1a; 目前服务器领域centos7基本是主流的操作系统&#xff0c;而linux相对于Windows来说&#xff0c;软硬件方面的支持是差很多的&#xff0c;在硬件方面来说&#xff0c;以一个免驱的网卡为例&#xff0c;window xp可能不会自动识别到&#xff0c;但Windows10基本…

问题:Feem无法发送信息OR无法连接(手机端无法发给电脑端)

目录 前言 问题分析 资源、链接 其他问题 前言 需要在小米手机、华为平板、Dell电脑之间传输文件&#xff0c;试过安装破解的华为电脑管家、小米的MIUI文件传输等&#xff0c;均无果。&#xff08;小米“远程管理”ftp传输倒是可以&#xff0c;但速度太慢了&#xff0c;且…

【Ant Design of Vue】Modal.confirm无法关闭的bug

一、问题 在使用 Ant Design Vue 的 Modal.confirm 确认框时&#xff0c;出现了点击取消和确定后 Modal.confirm 确认框无法关闭的问题 二、代码 代码完全是 copy 的官网的代码&#xff0c;但是 copy 到本地后就会出现上述问题 <template><a-button click"sho…

鸿蒙开发(五)鸿蒙UI开发概览

从用户角度来讲&#xff0c;一个软件拥有好看的UI&#xff0c;那是锦上添花的事情。再精确的算法&#xff0c;再厉害的策略&#xff0c;最终都得通过UI展现给用户并且跟用户交互。那么&#xff0c;本篇一起学习下鸿蒙开发UI基础知识&#xff0c;认识下各种基本控件以及使用方式…

UE5 C++ 学习笔记 UBT UHT 和 一些头文件

总结一些似懂非懂的知识点&#xff0c;从头慢慢梳理。 任何一个项目都有创建这些三个.cs。 这个是蓝图转C 这个是本身就是C项目,应该就是多了一个GameModeBase类 Build.cs包含了每个模块的信息&#xff0c;表明了这个项目用到了哪一些模块。该文件里的using UnrealBuilTool 是…

为数字取证和 OSINT 调查定制用户体验

Tsurugi Linux 是一个高度定制的开源发行版&#xff0c;专注于支持 DFIR 调查。 该项目主要侧重于实时取证分析、事后分析和数字证据获取。用户还可以执行恶意软件分析、OSINT(开源情报)和计算机视觉活动。 我们精心打造了用户友好的体验&#xff0c;按照逻辑取证分析顺序组织…

【JS逆向学习】36kr登陆逆向案例(webpack)

在开始讲解实际案例之前&#xff0c;大家先了解下webpack的相关知识 WebPack打包 webpack是一个基于模块化的打包&#xff08;构建&#xff09;工具, 它把一切都视作模块 webpack数组形式&#xff0c;通过下标取值 !function(e) {var t {};// 加载器 所有的模块都是从这个…

Ps:使用钢笔工具快速精准抠图的技巧

众所周知&#xff0c;钢笔工具是 Photoshop 中最精准的、适用于硬边缘&#xff08;清晰轮廓&#xff09;对象的抠图工具。但是&#xff0c;如果从头开始一个锚点一个锚点的勾勒&#xff0c;既费时又费眼。 我们可以先用选区工具或选区命令做一个基础选区&#xff0c;然后将选区…

IPv6自动隧道---6to4中继

6to4中继 普通IPv6网络需要与6to4网络通过IPv4网络互通,这可以通过6to4中继路由器方式实现。所谓6to4中继,就是通过6to4隧道转发的IPv6报文的目的地址不是6to4地址,但转发的下一跳是6to4地址,该下一跳为路由器我们称之为6to4中继。隧道的IPv4目的地址依然从下一跳的6to4地…

力扣每日一练(24-1-19)

我的思路&#xff1a; def maxProfit(self, prices: List[int]) -> int:if not len(prices):return 0 max_profit 0for p in range(len(prices) - 1):prices[p] prices[p 1] - prices[p]prices[p] max(0, prices[p])max_profit sum(prices[:-1])return max_profit 其实…

百度云网盘下载速度如何提升到正常速度

引入问题 我们在下载代码学习资料的时候大多数都是百度云网盘&#xff0c;但是限速&#xff01;下载的十分的慢&#xff0c;有什么办法能让我们不开通会员就能享受正常速度呢&#xff1f; 当然有&#xff01; 解决百度云网盘下载速度过慢&#xff0c;提高到正常速度 点击右…

vue3使用vue-masonry插件实现瀑布流

《Vue插件》瀑布流插件vue-masonry的使用与踩坑记录 参数:item-selector transition-duration column-width origin-left origin-top gutter 前言: 之前其实有分享过一篇纯CSS实现瀑布流的方法: https://oliver.blog.csdn.net/article/details/126450691&#xff0c;但纯CSS实现…

2024华数杯A题高质量成品论文+完整数据py代码+来源数据集+参考文献

A题日本排核废水&#xff08;完整数据代码在文末&#xff09; #### 1. 时变因素&#xff1a; - Tritium 浓度的时变因素包括排放时间、排放量、海水运动等。需要考虑问题陈述中给出的放射性废水排放计划&#xff08;Appendix&#xff09;。 #### 2. 海洋环境因素&#xff1a; …

#vue3 实现前端下载excel文件模板功能

一、需求&#xff1a; 前端无需通过后端接口&#xff0c;即可实现模板下载功能。 通过构造一个 JSON 对象&#xff0c;使用前端常用的第三方库 xlsx&#xff0c;可以直接将该 JSON 对象转换成 Excel 文件&#xff0c;让用户下载模板 二、效果&#xff1a; 三、源码如下&…

Python基础学习:同步异步阻塞与非阻塞

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、状态介绍 在了解其他概念之前&#xff0c;我们首先要了解进程的几个状态。 在程序运行的过程中&#xff0c;由于被操作系统的调度算法控制&#xff0c;程序…

Git教程学习:07 打标签

文章目录 0 前言1 列出标签2 创建标签3 附注标签4 轻量标签5 后期打标签6 共享标签7 删掉标签8 检查标签 0 前言 像其他版本控制系统&#xff08;VCS&#xff09;一样&#xff0c;Git 可以给仓库历史中的某一个提交打上标签&#xff0c;以示重要。 比较有代表性的是人们会使用…

PPT大神带你飞!!!

1、OneKeyTools 官网&#xff1a;http://oktools.xyz/ OneKeyTools是一款免费开源的PowerPoint第三方平面设计辅助插件&#xff0c;功能涵盖了形状、调色、三维、图片处理、辅助功能等等方面。 插件功能&#xff1a; 插件从面世逐步受到广大PPT设计师和爱好者的追捧&#x…

弗洛伊德循环查找算法-原理

本文灵感来自哔哩哔哩视频 视频链接: 弗洛伊德循环查找算法 算法代码(java) package rain;class ListNode {int value;ListNode next;public ListNode(int value) {this.value value;this.next null;}Overridepublic String toString() {return "ListNode{" &q…

接口自动化测试框架设计

文章目录 接口测试的定义接口测试的意义接口测试的测试用例设计接口测试的测试用例设计方法postman主要功能请求体分类JSON数据类型postman内置参数postman变量全局变量环境变量 postman断言JSON提取器正则表达式提取器Cookie提取器postman加密接口签名 接口自动化测试基础getp…

CMake是装在windows的哪里呢?

环境&#xff1a; 以有图形界面的CMake&#xff0c;以及Windw10为例&#xff1a; 结论&#xff1a; 目标&#xff1a;"D:\Program Files\CMake\bin\cmake-gui.exe" 起始位置&#xff1a;"D:\Program Files\CMake\bin\" 其实&#xff0c;就是一个是GUI的版…