C Primer Plus 第6版 第六章 编程练习参考答案
编译环境VS Code+WSL GCC 源码请到文末下载 。
注意:本章部分题目中用到了math.h 用gcc编译时加上-lm参数。
/*第1题*************************/
#include<stdio.h>
int main(void)
{
int i;
char char_arry[26]={0};
for(i=0;i<26;i++)
{
char_arry[i]='a'+i;
}
for(i=0;i<26;i++)
{
printf("%c ",char_arry[i]);
}
putchar(10);
}
/*第2题*************************/
#include<stdio.h>
int main()
{
int i,j;
for (i = 0; i < 5; i++)
{
for(j = 0; j < i+1 ;j++)
putchar('$');
putchar('\n');
}
return 0;
}
/*第3题*************************/
#include<stdio.h>
int main()
{
int i,j;
for (i = 0; i < 6; i++){
for(j = 0;j <= i;j++)
printf("%c",'F'-j);
putchar(10);
}
return 0;
}
/*第4题*************************/
#include<stdio.h>
int main()
{
char start = 'A';
int i,j;
for(i=0;i<6;i++){
for(j=0;j<=i;j++){
printf("%c",start);
start++;
}
putchar(10);
}
return 0;
}
/*第5题*************************/
#include<stdio.h>
int main()
{
char a,tmp;
int i,j;
printf("请输入一个大写字母:");
tmp=a=getchar();
for(i=5;i>0;i--){
for(j=i-1;j>0;j--)
putchar(' ');
for(j=6-i;j>0;j--)
printf("%c",a++);
a--;
for(j=5-i;j>0;j--)
printf("%c",--a);
putchar('\n');
a=tmp;
}
return 0;
}
/*第6题*************************/
#include<stdio.h>
int main()
{
int input;
printf("请输入表格的行数:");
scanf("%d",&input);
printf("-------------------\n");
for(;input>0;input--){
printf("| %3d | %3d | %3d |\n",input,input*input,input*input*input);
printf("-------------------\n");
}
return 0;
}
/*第7题*************************/
#include<stdio.h>
#include<string.h>
int main()
{
char arry[100]={0};
int lenth,i;
printf("请输入一些字符:");
scanf("%s",arry);
lenth = strlen(arry);
printf("逆序打印这些字符:");
for(i= --lenth;i>=0;i--)
{
putchar(arry[i]);
}
putchar(10);
return 0;
}
/*第8题*************************/
#include<stdio.h>
int main()
{
float input_1,input_2,res;
printf("请输入两个数(输入非数字退出):");
while (scanf("%f %f",&input_1,&input_2)==2)
{
if(input_1>input_2){
res = (input_1 - input_2) / (input_1 * input_2);
}
else if(input_1<input_2)
{
res = (input_2 - input_1) / (input_2 * input_1);
}
else
{
res = 0;
}
printf("%g %g %g\n",input_1,input_2,res);
}
}
/*第9题*************************/
#include<stdio.h>
float func(double input_1,double input_2);
int main()
{
float input_1,input_2,res;
printf("请输入两个数(输入非数字退出):");
while (scanf("%f %f",&input_1,&input_2)==2)
{
res = func(input_1,input_2);
printf("%g %g %g\n",input_1,input_2,res);
}
}
float func(double input_1,double input_2)
{
double res;
if(input_1>input_2){
res = (input_1 - input_2) / (input_1 * input_2);
}
else if(input_1<input_2)
{
res = (input_2 - input_1) / (input_2 * input_1);
}
else
{
res = 0;
}
return res;
}
/*第10题*************************/
#include<stdio.h>
#include<string.h>
int main()
{
int input_1,input_2,res,i;
char tmp;
printf("请输入一个下限整数和一个上限整数(输入相同的数退出程序):");
while (1)
{
if(scanf("%d %d",&input_1,&input_2)!=2){
do{tmp =getchar();}
while(tmp != '\n');
//while(tmp>='0'&&tmp<='9');//有个BUG,在输入N个非数字字符就会输出N个错误提示。
printf("输入错误,请重新输入:");
continue;
}
else if(input_1 > input_2){
printf("输入错误,请重新输入:");
continue;
}
else if(input_1 == input_2){
printf("程序退出...\n");
break;
}
for(i=input_1;i<=input_2;i++)
res += i*i;
printf("两个数的平方从%d到%d的和是%d\n",input_1*input_1,input_2*input_2,res);
printf("请输入一个下限整数和一个上限整数(输入相同的数退出程序):");
}
}
/*第11题*************************/
#include<stdio.h>
int main()
{
int arry[]={1,2,3,4,5,6,7,8};
int i;
for(i=7;i>=0;i--){
printf("%d",arry[i]);
}
putchar(10);
return 0;
}
/*第12题*************************/
#include<stdio.h>
double arr_add_fun(int len);
double arr_add_fun_(int len);
int main()
{
int arr_len;
double res;
while (1)
{
printf("请输入次数(输入负数或0退出):");
scanf("%d",&arr_len);
if (arr_len > 0)
{
res = arr_add_fun(arr_len)+arr_add_fun_(arr_len);
printf("%d项的和是%g\n",arr_len,res);
}
else
{
printf("程序退出...\n");
break;
}
}
return 0;
}
double arr_add_fun(int len)
{
double res = 0,cnt = 1.0;
int i;
for(i=1;i<=len;i++)
{
res += 1.0 / cnt++;
}
return res;
}
double arr_add_fun_(int len)
{
double res = 0,cnt = 1.0;
int i;
for(i=1;i<=len;i++)
{
if(i%2 == 0){
res -= 1.0 / cnt++;
}
else
{
res += 1.0 / cnt++;
}
}
return res;
}
/*第13题*************************/
#include<stdio.h>
#include<math.h>
/************************************/
/* 请添加-lm参数,例如:gcc 13.c -lm */
/************************************/
int main()
{
int i,res;
int arry[8],*p=arry;
for(i=0;i<8;i++){
arry[i]=pow(2,i);
}
i=0;
do{
printf("%d ",arry[i++]);
}
while (i<8);
putchar(10);
return 0;
}
/*第14题*************************/
#include<stdio.h>
int main()
{
double num_arr[8],num_arr_[8];
int i;
printf("请输入8个数(按Enter键入)\n");
for(i=0;i<8;i++){
printf("请输入第%d个数:",i+1);
scanf("%lf",&num_arr[i]);
}
num_arr_[0]=num_arr[0];
for(i=1;i<8;i++)
num_arr_[i]=num_arr[i]+num_arr_[i-1];
for(i=0;i<8;i++)
printf("%-3g ",num_arr[i]);
putchar(10);
for(i=0;i<8;i++)
printf("%-3g ",num_arr_[i]);
putchar(10);
return 0;
}
/*第15题*************************/
#include<stdio.h>
int main()
{
char arry[255]={0};
char rec,i=0;
printf("请输入一些字符:");
do{
scanf("%c",&rec);
arry[i]=rec;
i++;
}
while (rec != '\n');
arry[i]='\0';
for(i--;i>=0;i--)
{
printf("%c",arry[i]);
}
putchar(10);
return 0;
}
/*第16题*************************/
#include<stdio.h>
int main()
{
int year=0;
double daphne=100,deirdre=100;
do{
year++;
daphne += 100 * 0.1;
deirdre *= 1.05;
}
while (deirdre <= daphne);
printf("需要%d年deirdre会超过daphne。\n",year);
printf("deirdre能拿到%g dollars\ndaphne能拿到%g dollars\n",deirdre,daphne);
return 0;
}
/*第17题*************************/
#include<stdio.h>
int main()
{
int year = 1;
double dollar=1000000;
do{
year++;
dollar += dollar * 0.08;
dollar -= 100000;
}
while (dollar > 100000);
printf("需要%d年。\n",year);
return 0;
}
/*第18题*************************/
#include<stdio.h>
int main()
{
int frieds = 5,week = 1;
while (frieds <= 150){
frieds -= week;
frieds *= 2;
if(frieds > 150)
break;
printf("第%d周有%d个朋友。\n",week,frieds);
week++;
}
return 0;
}
C Primer Plus 第6版 第六章 编程练习参考答案的更多相关文章
- 《C++ Primer》 第四版 第7章 函数
<C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/94 ...
- c primer plus(五版)编程练习-第六章编程练习
1.编写一个程序,创建一个具有26 个元素的数组,并在其中存储26 个小写字母.并让该程序显示该数组的内容. #include<stdio.h> #define SIZE 26 int m ...
- C primer plus 第五版十二章习题
看完C prime plus(第五版)第十二章,随带完成了后面的习题. 1.不使用全局变量,重写程序清单12.4的程序. 先贴出12.4的程序,方便对照: /* global.c --- 使用外部变量 ...
- 读Javascript高级程序设计第三版第六章面向对象设计--创建对象
虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式 1 function CreatePerson(name,a ...
- java编程思想第四版第六章习题
(略) (略) 创建两个包:debug和debugoff,他们都包含一个相同的类,该类有一个debug()方法,第一个版本显示发送给控制台的String参数,而第二版本什么也不做,使用静态import ...
- java编程思想 第四版 第六章 个人练习
欢迎加群:239063848 进群须知:本群仅用于技术分享与交流.问题公布与解答 禁止闲聊.非诚勿扰 练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. import mi ...
- c++primer 第l六章编程练习答案
6.11.1 #include<iostream> #include<cctype> int main() { using namespace std; char ch; ci ...
- sprinng in action 第四版第六章中的ValidationMessages.properties不起作用
文件名必须是ValidationMessages.properties,必须放在类的根目录下
- java编程思想第四版第六章总结
1. 代码重构 为什么f要代码重构 第一次代码不一定是完美的, 总会发现更优雅的写法. 代码重构需要考虑的问题 类库的修改不会破坏客户端程序员的代码. 源程序方便扩展和优化 2. 包 创建一个独一无二 ...
- C++ Primer Plus(第6版)习题(第二章)
1..编写一个C++程序,它显示您的姓名和地址. #include<iostream> using namespace std; int main() { string name,addr ...
随机推荐
- Invalid default value for prop "value": Props with type Object/Array must use a factory function to return the default value.
Invalid default value for prop "value": Props with type Object/Array must use a factory fu ...
- 一文彻底弄懂MySQL优化之深度分页
深度分页(Deep Pagination)在MySQL中指的是对大型数据集进行分页查询时,尤其是当需要获取较后页的数据时,性能可能会受到影响.传统的分页方法在数据量较大时,随着页数的增加,性能会迅速下 ...
- c语言里关于本地变量的一些规则
关于块的定义(自己的理解):就是☞{ }这个区域里面的东西以及" {} "这个符号的本身 ·本地的变量是定义在块内的 -->>1.它可以定义在函数的块内 void sw ...
- Flink Time
基础概念 支持三种时间概念: Processing Time 时间递增 Ingestion Time : 摄入时间,数据进入Flink框架的时间,在Source Operator中设置,每个事件拿到当 ...
- win11 与VMware pro16不兼容或者是不能嵌套虚拟或者此平台不支持虚拟化的Intel VT-x/EPT等问题
如遇 不用去掉啥windows沙盒,不用关掉什么Hyper-V. 可以在window11的应用里面的可选功能把虚拟平台的勾去掉然后重启一下 而虚拟机不在配置处理器的时候不勾选下图这个 就会出现这种情况 ...
- 3大策略+1款工具,在K8s上搞定应用零宕机
原文链接: https://jaadds.medium.com/building-resilient-applications-on-kubernetes-9e9e4edb4d33 翻译:cloudp ...
- mysql8创建用户
create user test_user@'%' identified by 'test2022@'; grant all privileges on test.* to test_user@'%' ...
- webpack打包提示: Uncaught Error: Cannot find module 'strip-ansi'
运行webpack-dev-server的时候,可以正常启动服务,但是Terminal控制台报错,如下: ERROR in ./node_modules/webpack-dev-server/clie ...
- 【实战问题】-- 并发的时候分布式锁setnx细节
前面讲解到实战问题]-- 设计礼品领取的架构设计以及多次领取现象解决?,如果出现网络延迟的情况下,多个请求阻塞,那么恶意攻击就可以全部请求领取接口成功,而针对这种做法,我们使用setnx来解决,确保只 ...
- .NET周刊【11月第4期 2024-11-24】
国内文章 C# 入门深度学习:万字长文讲解微积分和梯度下降 https://www.cnblogs.com/whuanle/p/18551532 这篇文章主要介绍了使用 C# 进行深度学习的方法,特别 ...