C程序设计谭浩强第五版

程序习题

  • 第一章
    • 1、第5题
    • 2、第6题
  • 第三章
    • 1、第2题
    • 2、第2题
    • 3、第3题
    • 4、第4题
      • Tips

第一章

1、第5题

编写一个C程序,运行时输出以下图形:
*号输出

#include <stdio.h>
int main()
{
	for (int i = 0; i < 4; i++) // 输出4行循环控制
	{
		for (int j = 0; j < i; j++) //第几行就输出几个空格,j从0开始,循环退出条件为j < i
		{
			printf("%s", " ");
		}
		printf("%s\n", "****");
	}
	return 0;
}

2、第6题

编写一个C程序,运行时输人a,b,c三个值,输出其中值最大者。

#include<stdio.h>
int main()
{
   int a, b, c, max;
   printf("请输入三个数:\n");
   scanf("%d%d%d", &a, &b, &c);
   if (a > b)
   {
       max = a;
   }
   else
   {
       max = b;
   }
   if (c > max) // c与a\b中的大者比较
   {
       max = c;
   }
   printf("三个数中最大的数为:%d", max);
   return 0;
}

第三章

1、第2题

假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为 p = ( 1 + r ) n p = (1+r)^n p=(1+r)n ,其中r为年增长率,n为年数,p为与现在相比的倍数。

解析:调用math库幂运算函数pow,传递对应参数即可。

#include<stdio.h>
#include <math.h>
 
int main()
{
	 int n = 10;
	 float p, r;
	 r = 0.07;
	 p = pow(1 + r, n);
	 printf("p=%f\n", p);
	 return 0;
}

// 输出结果
p = 1.967152

2、第2题

存款利息的计算。有1000元,想存5年,可按以下5种办法存:
(1)一次存5年期
(2)先存2年期,到期后将本息再存3年期
(3)先存3年期,到期后将本息再存2年期
(4)存1年期,到期后将本息再存1年期,连续存5次
(5)存活期存款,活期利息每一季度结算一次
2017年银行存款利息如下:
1年期定期存款利息为1.5%;
2年期定期存款利息为2.1%;
3年期定期存款利息为2.75%;
5年期定期存款利息为3%;
活期存款利息为0.35%(活期存款每一-季度结算一-次利息)
如果r为年利率,n为存款年数,则计算本息的公式如下:
1年期本息和: P= 1000* (1+r);
n年期本息和: P= 1000* (1+n* r);
存n次1年期的本息和: P = 1000 ∗ ( 1 + r ) n P=1000* (1+r)^n P=1000(1+r)n;
活期存款本息和: P= 1000 (1+ r 4 \frac{r}{4} 4r) 4 n ^{4n} 4n;
说明: 1000
(1+ r 4 \frac{r}{4} 4r)是一个季度的本息和。

#include<stdio.h>
#include <math.h>
int main()
{
	int p = 1000;
	float r5, r3, r2, r1, r0, p1, p2, p3, p4, p5;
	r5 = 0.0585;
	r3 = 0.054;
	r2 = 0.0468;
	r1 = 0.0414;
	r0 = 0.0072;
	p1 = p*((1 + r5) * 5);                // 一次存5年期  
	p2 = p*(1 + 2 * r2)*(1 + 3 * r3);     // 先存2年期,到期后将本息再存3年期  
	p3 = p*(1 + 3 * r3)*(1 + 2 * r2);     // 先存3年期,到期后将本息再存2年期  
	p4 = p*pow(1 + r1, 5);                // 存1年期,到期后将本息存再存1年期,连续存5次  
	p5 = p*pow(1 + r0 / 4, 4 * 5);        // 存活期存款。活期利息每一季度结算一次  
	printf("p1=%f\n", p1);       		  // 输出按第1方案得到的本息和  
	printf("p2=%f\n", p2);       
	// 输出按第2方案得到的本息和  
	printf("p3=%f\n", p3);       
	printf("p4=%f\n", p4);       
	printf("p5=%f\n", p5);       
	return 0;
}

// 输出结果
p1 = 5292.500488
p2 = 1270.763062
p3 = 1270.763184
p4 = 1224.863770
p5 = 1036.621094

3、第3题

购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五人处理。
提示:计算还清月数m的公式如下:
m = l o g ( p ) − l o g ( p − d ∗ r ) l o g ( 1 + r ) \frac{log (p) - log(p - d * r) }{log(1 + r)} log(1+r)log(p)log(pdr)

可以将公式改写为:
m = l o g ( p p − d ∗ r ) l o g ( 1 + r ) \frac{log(\frac{p} {p - d * r} ) } {log(1 + r)} log(1+r)log(pdrp)

C的库函数中有求对数的函数log10,是求以10为底的对数,log (p)表示log p。

题目解析:
该题的关键主要是利用数学函数库中的log函数进行求解,然后月份要求按照小数点后一位进行四舍五入进行处理,只需要在输出时进行格式控制即可。

#include<stdio.h>
#include <math.h>
int main()
{
	float d = 300000, p = 6000, r = 0.01, m;
	m = log10(p / (p - d*r)) / log10(1 + r);
	printf("m = %3.1f\n", m);
	return 0;
}

4、第4题

分析下面的程序:

#include<stdio.h>
int main()
{
	char c1, c2;
	c1 = 97;
	c2 = 98;
	printf("c1=%c, c2=%c\n", c1, c2);
	printf("c1=%d, c2=%d\n", c1, c2);
	return 0;
}

(1)运行时会输出什么信息?为什么?

c1=a,	c2=b
c1=97,	c2=98

print()函数格式输出:
%c --> 字符形式输出,输出相应字符,所以会把97和98当作相应字符的ASCII值,输出的时候按照字符显示
%d --> 整数形式输出,输出对应整数值。

(2)如果将程序第4,5行改为
c1 = 197;
c2 = 198;
运行时会输出什么信息?为什么?

c1=?,	c2=?
c1=-59,	c2=-58

因为c1和c2为char类型,其保存的数据范围为-128~127,当c1=197,c2=198时,已经超出了char类型所能够保存的数据范围,此时会进行相应的转换为c1=-59,c2=-58
(当整型值用2 byte 表示:197二进制为0000 0000 1100 0101,198二进制为0000 0000 1100 0110,当整型值197赋值给字符型c1时,进行了缩窄转换,高8位被舍弃留下了1100 0101,最高位表示符号位,为1表示为负数,求出其数值即可)。
二进制负值转十进制
二进制、八进制、十进制、十六进制相互转换
只是第一行以字符输出时,c1=-59,c2=-58为不可显示字符,所以输出了?,而第二行以整数输出时就进行了相应的整数显示。

(3)如果将程序第3行改为
int c1, c2;
运行时会输出什么信息?为什么?

c1=?,	c2=?
c1=197,	c2=198

因为c1和c2为int时,第二行以整形输出自然能够保存的下,但第一行以字符输出时,虽然数据int能够储存,但是在输出时需要准换为字符,转换后数据就超出了范围,此时c1=-59,c2=-58,两者都为不可显示字符,所以就显示了"?"。

Tips

实际编程中也需要多注意类型匹配,否则容易无法得到想要的结果,甚至造成意想不到的错误,引起程序崩溃等,这种问题排查起来也很费劲。

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

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

相关文章

jenkins中执行docker命令

1. 修改docker.sock文件的所属组 命令如下&#xff1a; sudo chown root:root docker.sock 2. 对这个文件赋予权限&#xff0c;供其他用户使用&#xff0c;给定权限命令如下&#xff1a; sudo chmod orw docker.sock 3. docker容器映射 这里需要两个文件&#xff1a; 一个…

Selenium时间控件的处理

我们经常在做web自动化测试过程中会遇到时间控件&#xff0c;那么对于时间控件如何处理&#xff0c;我们可以来分析下。 对于时间控件一般分为两种&#xff1a; 1、普通的时间控件 直接通过send_keys就可以解决 d.get("https://www.ctrip.com/?sid155952&alliancei…

华三(H3C)交换机堆叠配置

目录 一、相关理论 二、实验需求 三、实验组网 四、具体配置 4.1 堆叠配置 4.2 查看堆叠相关配置 4.3 MAD 检测配置 一、相关理论 H3C的堆叠称为IRF&#xff08;Intelligent Resilient Framework&#xff0c;智能弹性架构&#xff09; IRF中每台设备都称为成员设备。成…

架构师篇-7、企业安全架构设计及实践

摘要&#xff1a; 认识企业安全架构企业安全案例分析及实践 内容&#xff1a; 为什么做企业安全架构怎么做好安全架构设计案例实践分析&随堂练 为什么要做企业安全架构 安全是麻烦制造者&#xff1f; 整天提安全需求增加开发工作增加运维要求增加不确定性延后业务上线…

Datawhale机器学习day-1

赛题 在当今科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的深度和广度渗透到科研领域&#xff0c;特别是在化学及药物研发中展现出了巨大潜力。精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例&#xff0c;它是…

理想汽车提出3DRealCar:首个大规模3D真实汽车数据集

理想提出3DRealCar&#xff0c;这是第一个大规模 3D 实车数据集&#xff0c;包含 2500 辆在真实场景中拍摄的汽车。我们希望 3DRealCar 可以成为促进汽车相关任务的宝贵资源。 理想汽车提出3DRealCar&#xff1a;首个大规模3D真实汽车数据集! 我们精心策划的高质量3DRealCar数…

基于公有云部署wordpress

云平台选择 腾讯云 阿里云 华为云 项目部署 一、架构讲解 1.1、定义与组成 LNMP是Linux、Nginx、MySQL&#xff08;或MariaDB&#xff09;和PHP&#xff08;或Perl、Python&#xff09;的首字母缩写&#xff0c;代表在Linux系统下使用Nginx作为Web服务器&#xff0c;MySQL作为…

【SGX系列教程】(八)Intel-SGX 官方示例分析(SampleCode)——Seal Unseal

文章目录 一.Seal Unseal原理介绍1.1 Intel SGX supported Sealing Policies 二.源码分析2.1 README2.2 重点代码分析2.2.1 主要代码模块交互流程分析2.2.2 App/App.cpp2.2.3 Enclave_Seal/Enclave_Seal.cpp2.2.4 Enclave_Unseal/Enclave_Unseal.cpp 2.3 总结 三.参考文献四.感…

PMBOK® 第六版 结束项目或阶段

目录 读后感—PMBOK第六版 目录 不论是阶段的收尾还是项目整体的收尾&#xff0c;都应是令人振奋的事。然而&#xff0c;在实际生活中&#xff0c;收尾工作却相当艰难。会遭遇负责人调离、换任&#xff0c;导致不再需要已购产品&#xff1b;项目收尾时对照招标文件或合同&…

基于python的房价多元线性回归分析

1.导入必要的库 import pandas as pd import numpy as np import statsmodels.api as sm from sklearn.model_selection import train_test_split from sklearn.metrics import r2_score import matplotlib.pyplot as plt # 忽略Matplotlib的警告&#xff08;可选&…

SpringBoot实现文章点赞功能

提示&#xff1a;今日是2024年的6月30日&#xff0c;未来的你看到这篇文章&#xff0c;希望你依旧快乐 文章目录 前言 首先在这里前缀部分我就不做要求了,比如说登录信息什么的 数据库表格 这里实现点赞功能&#xff0c;主要是围绕论坛项目完成的 user_info代表用户信息表 for…

20240630每日一题-组合数学-平均分组问题

更多资源请关注纽扣编程微信公众号 将6个小球&#xff0c;其中1个红球&#xff0c;2个黑球&#xff0c;3个白球拍成一列&#xff0c;相同颜色的球没区别&#xff0c;那么有多少种排法&#xff1f; 答案 60种 分析 相同颜色的小球可以看作平均分组&#xff0c;去除对应排序的…

Zookeeper:Zookeeper JavaAPI操作与分布式锁

文章目录 一、Zookeeper JavaAPI操作1、Curator介绍2、创建、查询、修改、删除节点3、Watch事件监听 二、Zookeeper分布式锁原理 一、Zookeeper JavaAPI操作 1、Curator介绍 Curator是Apache Zookeeper的Java客户端。常见的Zookeeper Java API&#xff1a; 原生Java API。ZkC…

基于PHP的酒店管理系统(改进版)

有需要请加文章底部Q哦 可远程调试 基于PHP的酒店管理系统(改进版) 一 介绍 此酒店管理系统(改进版)基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端jquery插件美化。系统角色分为用户和管理员。系统在原有基础上增加了注册登录注销功能&#xff0c;增加预订房间图片…

临时文件上传系统Plik

什么是 Plik &#xff1f; Plik 是一个基于 Go 语言的可扩展且用户友好的临时文件上传系统&#xff08;类似于 Wetransfer&#xff09;。 软件主要特点&#xff1a; 强大的命令行客户端易于使用的 Web 用户界面多个数据后端&#xff1a;文件、OpenStack Swift、S3、Google Clo…

Swift中的二分查找:全面指南

Swift中的二分查找&#xff1a;全面指南 简介 二分查找是计算机科学中的经典算法&#xff0c;被广泛用于在已排序的数组中高效地搜索目标值。与线性查找逐个检查每个元素不同&#xff0c;二分查找不断将搜索区间减半&#xff0c;因此在处理大数据集时要快得多。 在这篇博客中…

java基于ssm+jsp 固定资产管理系统

1前台首页功能模块 固定资产管理系统&#xff0c;在系统首页可以查看首页、设备信息、论坛信息、我的、跳转到后台等内容&#xff0c;如图1所示。 图1前台首页功能界面图 注册&#xff0c;在注册页面可以填写用户名、密码、姓名、性别、头像、身份证、手机等详细内容&#xff…

基于Ollama Python的本地多模态大模型

0&#xff0c;背景 最近测试Ollama&#xff0c;发现之前直接下载开源模型在我电脑上都跑不动的模型&#xff0c;居然也能运行了&#xff08;AMD 7840HS核显/32GB内存&#xff09;&#xff0c;突发奇想那些多模态大模型能不能基于Python接口使用&#xff0c;所以决定尝试一下。…

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)

文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…

Springboot+vue电商平台

管理员权限操作的功能包括管理商家&#xff0c;管理商家星级信息&#xff0c;管理用户&#xff0c;管理商品等。 商家权限操作的功能包括管理商品&#xff0c;回复商品评价&#xff0c;管理商品订单等。 用户权限操作的功能包括查看商家&#xff0c;购买商品&#xff0c;提交…