小白
不白兰
静下心来,沉淀
展开
-
查看亮灯问题
1.题目:2.一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。2.解题原创 2022-04-07 20:45:19 · 120 阅读 · 0 评论 -
股神涨跌求剩余股票价格
假设买入1元股票,股票的变化规律是第一天不变(0),第二天涨1元(1),第三天跌1元,第四天涨1元(1),第五天涨1元(1),第六天跌1元,第七天涨1元(1),第八天涨1元(1),第九天涨1元(1),第十天跌1元...求N天后的股票剩余价格。1.解题思路:主要是利用循环,还有跌的天数比较规律,所以我们只要统计跌的天数就可以了,而每个跌的天数非常规律,我们就可以把跌看成涨,然后减去2倍跌就好了,然后我们就惊奇发现这个题非常简单。只用统计跌了多少。2.代码#include<stdio.h原创 2022-04-07 20:35:35 · 234 阅读 · 0 评论 -
换行输出字符串的单词
1.解题思路:遇到' '字符就输出\n;同时还需要构建一个循环2.代码如下:#include <stdio.h>#include <stdlib.h>int main() { char s[100]; gets(s); int a = 0; for (int i = 0; s[i] != '\0'; ++i) { if (s[i] != ' ') { printf("%c",s[i]); a = 1; if (s原创 2022-04-01 17:54:26 · 376 阅读 · 0 评论 -
输入某年某月某日,判断这一天是这一年的第几天?
1.原理:需要判断一个问题就是判断是不是闰年,其实加起来还是超级简单,没有什么难度2.代码如下#include<stdio.h>int main(){ int y,m,d,i=0,sum=0; int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; scanf("%d%d%d", &y,&m,&d); while(i<m-1) { sum += a[i]; i++; } sum +原创 2022-04-01 14:25:20 · 343 阅读 · 0 评论 -
实现 itoa 函数的功能
1.先讲思路:将整形转化为字符串,原则上就是数字分离,将每一个数字分离然后2.代码#include <stdio.h>//atoi 函数:将s转换为整形数void itoa(int n, char s[]){ int i, j, sign; if ((sign = n) < 0) n = -n; i = 0; do { s[i++] = n % 10 + '0'; } while ((n /= 10) &g...原创 2022-04-01 13:49:52 · 573 阅读 · 0 评论 -
c语言中比较两个数的大小不用if条件语句和大于小于,用逻辑运算符来进行比较
1.基础知识也就是原理:其实算一个脑筋急转弯吧。就像高中数学题经常构建一个a-(a-b)*c,如果c=1那么就是b,如果是0,就是a,一看见1和0,我们就想到了二进制,那么0和1就可以通过移位来实现。0和1可以看最高位的,最高位是符号位,又可以通过相减得到一个数,来判断正负。2.原理:两个数相减得到一个正负数,通过最高位的符号位来判断正负。3.代码如下:#include<stdio.h>int main(){ int a, b, c,d=0; scanf(...原创 2022-03-29 19:38:19 · 3748 阅读 · 3 评论 -
c语言中将一个十进制数转化为二进制(不论正负),并输出1的个数
1.涉及到的知识其实就是逻辑运算符,每个数与(它的-1)进行&操作再赋值给该数,每执行一次,该数二进制最右边的1就会丢掉,只要知道一个数变成0之前进行了多少次操作就可知道二进制有几个1了。2.思路:用循环进行判定,看m=m&(m-1)如果是则++;3.代码如下#include<stdio.h>int main(){ int i, j=0; scanf("%d",&i); while (i) { i = i &...原创 2022-03-29 18:18:32 · 1264 阅读 · 0 评论