C语言基础规律题

数字规律

股神

  1. 股神:假设买入1元股票,股票的变化规律是第一天不变(0),第二天涨1元(1),第三天跌1元(-1),

    第四天涨1元(1),第五天涨1元(1),第六天跌1元(-1),第七天涨1元(1),第八天涨1元(1),第九天涨1元(1),第十天跌1元(-1)...求N天后的股票剩余价格

  2. 思路:假设每一天都在涨,涨和跌的之间差值为2,设N天,有X跌,剩余价格为N-2*x;

    #include<stdio.h>
    int main() {
    	int n;
    	scanf("%d", &n);
    	int d = 3;//第一天跌
    	int t = 3;//跌幅
    	int x = 0;//跌的天数
    	while (d <= n) {
    		x++;
    		d += t;
    		t++;
    	}
    	printf("%d", n - 2 * x);
    	return 0;
    }

    开灯问题

  3. 一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。

    每盏电灯由一个拉线开关控制。开始,电灯全部关着。

    有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;

    接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;

    接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;

    如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。

    n个学生按此规定走完后,长廊里电灯有几盏亮着。

思考:亮灯的号码为完全平方数

#include<stdio.h>
int main() {
	int n;
	scanf("%d", &n);
	int i = 1;//第一个完全平方数;
	int x = 0;//亮灯个数;
	while (i * i <= n) {
		x++;
		i++;
	}
	printf("%d", x);
	return 0;
}

求素数

//方法一
#include<stdio.h>
int main() {
	int n;
	scanf("%d", &n);
	for (int i = 2; i < n; i++) {
		if (n%i== 0) {
			printf("0");
			return 0;
		}
	}
	printf("1");
	return 0;
}
//方法二
#include<stdio.h>
int main() {
	int n;
	scanf("%d", &n);
	int i;
	for (i = 2; i < n; i++) {
		if (n%i== 0) {
			printf("0");
			break;
		}
	}
	if (i == n) {
		printf("1");
	}
	return 0;
}
//方法三
#include<stdio.h>
int main() {
	int n;
	scanf("%d", &n);
	int flag = 1;
	int i;
	for (i = 2; i < n; i++) {
		if (n%i== 0) {
			flag = 0;
			break;
		}
	}
	printf("d", flag);
	return 0;
}

图形类规律

  1. 找到一共有几种图形,有几种图案就在内部写几个循环
  2. 例如:输入3,打印结果如下:

    *

    **

    ***

    #include<stdio.h>
    int main() {
    	int n;
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= i; j++) {
    			printf("*");
    		}
    		printf("\n");
    	}
    	return 0;
    }

    例如:输入4,打印结果如下:

       *
      **
     ***
    ****
  3. #include<stdio.h>
    int main() {
    	int n;
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= n-i; j++) {
    			printf(" ");
    		}
    		for (int x = 1; x <= i; x++) {
    			printf("*");
    		}
    		printf("\n");
    	}
    	return 0;
    }

    例如:输入5,打印结果如下: 

        *
       ***
      *****
     *******
    *********
  4. #include<stdio.h>
    int main() {
    	int n;
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= n-i; j++) {
    			printf(" ");
    		}
    		for (int x = 1; x <= 2*i-1; x++) {
    			printf("*");
    		}
    		printf("\n");
    	}
    	return 0;
    }
       

     数字倒序输入五,得到如下结果:

        1
       121
      12321
     1234321
    123454321
    #include<stdio.h>
    int main() {
    	int n;
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= n-i; j++) {
    			printf(" ");
    		}
    		for (int x = 1;  x<= i; x++) {
    			printf("%d", x);
    		}
    		for (int y = i-1; y>= 1; y--) {
    			printf("%d", y);
    		}
    		printf("\n");
    	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值