C语言经典习题100例(五)21-25
时间:2022-07-22
本文章向大家介绍C语言经典习题100例(五)21-25,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
你不得不学的职场高效表达训练https://www.bilibili.com/audio/am30872653,需要的朋友自取哟。
习题21
猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少。
实现思路: 采用逆向思维进行反推。
代码如下:
#include<stdio.h>
int main(){
int sum = 1, i;
for(i = 10; i > 1; i--){
sum += 1;
sum *= 2;
}
printf("Sum = %dn", sum);
return 0;
}
打印:
Sum = 1534
习题22
两个乒乓球队进行比赛,各出三人,甲队为 a、b、c 三人,乙队为 x、y、z 三人。已抽签决定比赛名单,有人向队员打听比赛的名单,a 说他不和 x 比, c 说他不和 x、z 比,请编程序找出三对赛手的名单。
实现思路: 多层循环嵌套,遍历并判断。
代码如下:
#include<stdio.h>
int main(){
char a, b, c;
for(a = 'x'; a <= 'z'; a++){
for(b = 'x'; b <= 'z'; b++){
for(c = 'x'; c <= 'z'; c++){
if(a != b && b!= c && a != c){
if(a != 'x' && c != 'x' && c != 'z'){
printf("a-%cnb-%cnc-%cn", a, b, c);
}
}
}
}
}
return 0;
}
打印:
a-z
b-x
c-y
习题23
打印出如下图案(菱形):
实现思路: 方式一——分成两部分: 先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。 代码如下:
#include<stdio.h>
int main(){
int i, j;
for(i = 0; i < 4; i++){
for(j = 0; j < 3 - i; j++){
printf(" ");
}
for(j = 0; j < 2 * i + 1; j++){
printf("*");
}
printf("n");
}
for(i = 0; i < 3; i++){
for(j = 0; j <= i; j++){
printf(" ");
}
for(j = 0; j < 5 - 2 * i; j++){
printf("*");
}
printf("n");
}
return 0;
}
打印:
*
***
*****
*******
*****
***
*
方式二——看成一个整体: 用一个遍历来控制,使之成为一个整体,循环打印。
代码如下:
#include<stdio.h>
#include <math.h>
int main(){
int i, j;
for(i = -3; i < 4; i++){
for(j = 0; j < abs(i); j++){
printf(" ");
}
for(j = 0; j < 7- 2 * abs(i); j++){
printf("*");
}
printf("n");
}
return 0;
}
效果与前面相同。
习题24
有一分数序列:2/1、3/2、5/3、8/5、13/8、21/13… 求出这个数列的前20项之和。
显然,这个数列每个元素的分子和分母构成了斐波拉契数列,可循环求和。
代码如下:
#include<stdio.h>
int main(){
float sum = 0, f1 = 1, f2 = 1, i, temp;
for(i = 0; i < 20; i++){
temp = f2;
f2 += f1;
f1 = temp;
sum += f2 / f1;
}
printf("Sum = %8.4fn", sum);
return 0;
}
打印:
Sum = 32.6603
习题25
求1+2!+3!+…+20!的和。
实现思路: 使用循环求和。
代码如下:
#include<stdio.h>
int main(){
float i, t = 1, sum = 0;
for(i = 1; i < 21; i++){
t *= i;
sum += t;
}
printf("Sum = %.2fn", sum);
return 0;
}
打印:
Sum = 2561327455189073900.00
- TCP/IP(一)之开启计算机网络之路
- JSON入门指南--客户端处理JSON
- mysql5.7 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- TCP/IP中你不得不知的十大秘密
- Java Web开发学习之路2012版
- TortoiseSVN客户端使用的2个配置问题
- JavaWeb(二)会话管理之细说cookie与session
- 概率论09 期望
- Javascript中数组的sort()和reverse()方法
- CentOS6.5开放端口,配置防火墙
- JavaWeb(一)Servlet中乱码解决与转发和重定向的区别
- Java魔法堂:四种引用类型、ReferenceQueue和WeakHashMap
- Javascript中数组的使用
- JavaWeb(一)Servlet中的request与response
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法