第三章 习题

 3.1正数的n的平方根可以通过:

ai+1= (a+ n / a) / 2

  得到,第一个a1是1,结果会越来越精确。

#include <stdio.h>

int main()
{
	double input;
	double exp;
	scanf_s("%lf", &input);

	double aBefore = 1;
	double aNow = (aBefore + input / aBefore) / 2;

	exp = aBefore - aNow;
	exp = exp < 0 ? -exp : exp;
	printf("aBefore: %lf, aNow: %lf, exp: %f\n\n", aBefore, aNow, exp);
	while (exp > 0.000001) {
		aBefore = aNow;
		aNow = (aBefore + input / aBefore) / 2;
		exp = aBefore - aNow;
		exp = exp < 0 ? -exp : exp;
		printf("aBefore: %lf, aNow: %lf, exp: %lf\n", aBefore, aNow, exp);
	}

	return 0;
}

  

3.2 打印100以内的质数

  因为2* 50 和 50 *2一样,如果按照1 2 3 4 一直遍历到目标的数其实有很多重复,事实上只需要计算到这个数的平方根即可停止。

  

#include <stdio.h>
#include <math.h>

#define TRUE 1
#define FALSE 0

int isPrimer(int num)
{
	int idx;
	int end = floor(sqrt(num)) + 1;
	for (idx = 2; idx <= end ; idx++)
	{
		if (num % idx == 0) {
			return FALSE;
		}
	}
	return TRUE;
}
int main()
{
	int num;
	for (num = 1; num <= 100; num++)
	{
		if (isPrimer(num)) {
			printf("%d ", num);
		}
	}

	return 0;
}

  

3.7去除字符串中多余的空格

#include <stdio.h>

void trim(char str[])
{
	//判断之前是否在空格中
	int inEmpty = 0;
	//字符串下标
	int idx = 0;

	//循环字符串
	while (str[idx] != ‘\0‘) {
		//遇到空格
		if (str[idx] == ‘ ‘ || str[idx] == ‘\t‘ || str[idx] == ‘\n‘) {
			//如果之前不是空格,设置空格状态为1
			if (!inEmpty) {
				inEmpty = 1;
				idx++;
			}else{
				//如果之前是空格将之后的字符全部前移一位
				int len = strlen(str);
				for (int movStart = idx; movStart <= len; movStart++) {
					str[movStart] = str[movStart + 1];
				}
			}
		}else {
			//没遇到空格需要恢复非空格状态
			inEmpty = 0;
			idx++;
		}
	}
}

int main()
{
	char name[] = "  this is my           name";
	printf("%s\n", name);
	trim(name);
	printf("%s\n", name);

	return 0;
}

  

时间: 2024-10-15 08:23:41

第三章 习题的相关文章

统计学习导论:基于R应用——第三章习题

第三章习题 部分证明题未给出答案 1. 表3.4中,零假设是指三种形式的广告对TV的销量没什么影响.而电视广告和收音机广告的P值小说明,原假设是错的,也就是电视广告和收音机广告均对TV的销量有影响:报纸的P值高,说明原假设成立,也就是报纸广告对TV的销量没啥影响. 2. KNN回归和KNN近分类都是典型的非参数方法.这两者的区别在于,前者的输入和输出均为定量值:而后者的输入和输入和输出均为定性值. 3. 首先,有题目可知下面关系:Y = 50 + 20(gpa) + 0.07(iq) + 35(

算法竞赛入门经典第二版第三章习题

写这个的原因是看到一位大神的习题答案总结,于是自己心血来潮也想写一个这个,目的主要是督促自己刷题吧,毕竟自己太弱了. 习题3-1 得分 UVa 1585 大致就是设置一个变量记录到当前为止的连续的O的数量,碰到X就变0,水题. #include<stdio.h> #include<ctype.h> #include<string.h> char s[90]; int main(void) { int length,n,sum,num; scanf("%d&qu

apue第三章习题的一些拙见(不定时更新)

写在前面:本人通信专业大二,自学apue,时间有限,这个系列都是抽时间写的,目前已经看到15章,现在从头做题,如有错误还请指教. 第一题: write和read这样的函数都属于系统调用,这里具体所指的没有缓冲区是没有用户缓冲区,而不是指没有内核缓冲区,这里以我个人的认识认为,这里write和read将数据拷贝到缓冲区后并不直接写到文件中,而是等一定条件发生后才写进去,但是具体机制还需研究.同时这里也暴露了一个问题,每次进行I/O都需要进行系统调用,这无疑是对系统资源的一种浪费,所以这也为后来的标

编程珠玑之第三章习题7

习题描述: 7.常见的字典允许用户查找单词的定义.习题2.1描述了允许用户查找变位词的字典.设计查找单词的正确拼写的字典和查找单词的押韵词的字典.讨论具有以下功能的字典:查找整数序列(例如:1,1,2,3,5,8,13,21-).化学结构或者歌曲韵律结构. 习题解析: 1.本题是属于脑洞大开的题,具体解答可以考虑前两个小问"设计查找单词的正确拼写的字典和查找单词的押韵词的字典." 2.对于押韵词是怎么定义的?明确了之后就可以进行解决了, 3.查找正确拼写的单词? 可以考虑如何快速找到要

具体数学第二版第三章习题(3)

31 $\left \lfloor x \right \rfloor+\left \lfloor y \right \rfloor+\left \lfloor x+y \right \rfloor=\left \lfloor x+\left \lfloor y \right \rfloor \right \rfloor+\left \lfloor x+y \right \rfloor$ (1)$\left \lfloor y \right \rfloor\leq \frac{1}{2}\left

python核心编程-第三章-习题

1.这是python的语言特性,python先创建对象,在给变量赋值时,不需要定义变量的名称和类型,它实际是用变量引用对象.变量类型在给变量赋值时自动声明 2.原因类似变量无须声明类型 3.python用下划线作为变量前缀和后缀指定特殊变量,对解释器有特殊意义,也是内建标识符所使用的特殊符号,故一般避免用下划线作为变量的开头和结尾 4.python一行可以书写多个语句,多个语句间用";"分隔.但是为了良好的编程风格,不推荐这么做 5.python可以将一个语句分成多行书写,行的末尾用反

Objective-C 程序设计(第六版)第三章习题答案

1.   不合法:6_05 (不能以数字开头) A$ ($是非法符号). 2.   myBook  (openBook,closeBook,readBook,takeBook,putBook). 3.   [myBook takeBook]; [myBook openBook]; [myBook readBook]; [myBook closeBook]; [myBook putBook]; 4.   [myBoat driver]; [myMotorcycle driver]; [myCar

具体数学第二版第三章习题(4)

46 (1)证明: 首先有$2n(n+1)=\left \lfloor 2n(n+1)+\frac{1}{2} \right \rfloor=\left \lfloor 2(n^{2}+n+\frac{1}{4}) \right \rfloor=\left \lfloor 2(n+\frac{1}{2})^{2} \right \rfloor$ 其次,令$n+\theta =(\sqrt{2}^{l}+\sqrt{2}^{l-1})m=(1+\frac{\sqrt{2}}{2})\sqrt{2}

网络操作系统第三章习题

1.试对程序,进程,线程的概念和功能进行比较. 答:程序 是计算机指令的集合它,以文件的形式存储在磁盘上.进程是一个程序在其 自身的地址空间中的一次执行活动.进程是资源申请.调度和独立运行的单位,因此,它使用系统中的运行资源,而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占系统的运行资源.线程:进程中的一个单一的连续控制流程.一个进程可以拥有多个线程.线程又称轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进