//题目10:打印楼梯,同时在楼梯上方打印两个笑脸。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//分析:楼梯,打印阶梯形状,涉及到行列,for循环
void main6(){
//假设个台阶,每个台阶宽3个单位,高3个单位
//笑脸的字符是'\1'
//5个台阶,总高度就是5*3=15,同理宽度也是15
//第一行,宽度是4*3=12,从12开始打印*号
//行(y轴)
int temp = 0;
int temp2 = 0;
char ch = '\1';
for (int i = 0; i < 11; i++)
{
temp = 8 - i / 2 * 2;
if (temp + 4>11)
{
temp2 = 11;
}
else
{
temp2 = temp + 4;
}
//x轴
for (int j = 0; j < 11; j++)
{
if (j>(temp-1)&&j<(temp+3))
{
//开始打印*号
if (!(i % 2))
{
//打印3个*号
printf("*");
}
else{
//打印1个*号
if (j == temp)
{
printf("*");
}
else{
printf(" ");
}
}
}
else{
if (j == (temp -1))
{
if ((i % 2))
{
printf("%c", ch);
//printf("#");
}
else{
printf(" ");
}
}
else{
printf(" ");
}
}
}
printf("\n");
}
system("pause");
}
![]()
//题目11:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
//后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//分析:通过观察发现,1、1、2、3、5、8、13、21,n个月兔子的对数==(n-1)个月兔子的对数+(n-2)个月兔子的对数
//这就是斐波那契数列,抽象为f(n)=f(n-1)+f(n-2)
//可以使用递归,也可以使用数组
//方法1
int getnum(int n){
if (n==2)
{
return 1;
}
if (n==1)
{
return 1;
}
return getnum(n - 1) + getnum(n - 2);
}
void main(){
//方法1
//printf("%d", getnum(8)*2);
//方法2,使用数组,动态分配内存
int num = 0;
scanf("%d",&num);
int *p = malloc(num * sizeof(int));
//循环给数组赋值
for (int i = 0; i < num; i++)
{
if (i==0)
{
*(p + i) = 1;
}
else{
if (i==1)
{
*(p + i) = 1;
}
else{
*(p + i) = *(p + i - 1) + *(p + i - 2);
}
}
printf("%d\n", *(p + i));
}
system("pause");
}
![]()
//题目12:判断101-200之间有多少个素数,并输出所有素数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//分析:素数:质数(prime number)又称素数,有无限个。除了1和它本身以外不再有其他的因数;否则称为合数。
//想法做2个循环,一个循环101--200;第二个循环从1到某个数
void main(){
int index = 0;
int k = 0;
for (int i = 101; i < 201; i++)
{
//使得每次循环的量减少一半
k =(int) sqrt(i + 1);
int tenp = 1;
for (int j = 2; j <= k; j++)
{
if (i%j==0)
{
tenp = 0;
//说明可以整除,说明是合数,不是质数
break;
}
}
if (tenp)
{
index++;
printf("\n%d",i);
}
}
printf("\n质数的总个数是%d",index);
system("pause");
}
![]()