前言:
欢迎打开这篇博客,从今天开始,每天和大家分享一个C语言小细节,不久之后还会追加C++
一些常常被忽视的小细节和思想统一的编程题目是这个专栏的核心哦
虽然简单但千万别在细节处失分!!!!
每日花一两分钟浏览一下加深一个知识点不香吗
感兴趣的赶紧收藏关注起来吧,不要迷路~
我们都知道在C语言中0代表假,非0都代表真,但是C语言中并没有真正用来判断函数真假的变量,所以我们一般用返回值来解决这个问题,如果是真我们就把返回值设置成1,否则为0,但是C++有bool类型来帮我们判断函数真假
但是但是,这都不是今天的重点,我们来看下面的一道题
傻了吧哈哈哈
首先明确这个题是让我们干什么!
(扯远一点,其实这一步是很基本的一步,也很容易被大家忽略,我一直都坚持以目标为导向去做题才能真正快准狠)
粗略看一下题目和选项,就是看表达式的真假和M取什么值的时候是等价的
很显然这个表达式的意思就是当M是真(非零)执行a++;否则a--
我们逐一分析选项
A 如果M==0,那么就是M是真(即M==0)执行a++,显然和题目的逻辑是反的啊
B M==1,就是M如果等于1,就是执行a++,只要不是1,就a--,其实M的真假不是和1比较,这样比较也没有意义,因为M=2,也是不等于1,那这样说就是a--,显然和题目不符
C M!=0,只要M是0,执行a--,不是0( 即 M!=0 这个表达式是真的)执行a++;和题目就是一个意思!!!
D M!=1,不是1执行a++;是1执行a--,显然还是和题目无关
所以这个题目选择C
下面来看一个编程题
输入1就是从1开始所有的一位数(十进制)
输入2 从1开始的所有两位数(十进制)
3 三位数
其实这个题目的逻辑不难,只要就创建一个变量表示最大的n位数,然后逐个输入到数组里面,再输出
- #include
- #include
- int main()
- {
- int n = 0;
- scanf("%d", &n); //3
- int max =(int) pow(10.0, n); //10^3
- int arr[100000] = { 0 };
- for (int i = 1; i < max; i++)
- {
- arr[i-1] = i ;
- }
- for (int i = 0; i < max-1; i++)
- {
- if (i == max - 2)
- printf("%d", arr[i]);
- else
- printf("%d,", arr[i]);
-
- }
-
- }
原题目是接口题目
- int* printNumbers(int n, int* returnSize) {
- // write code here
- static int arr[100000];
- int p = (int)pow(10.0, n);
- int i = 1;
- for (int i = 1; i < p; i++)
- {
- arr[i - 1] = i;
- *returnSize = i;
- }
- return arr;
- }
说明一下,这个static是牛客的编译器问题不是一定要加上的
今天的分享就到这里,喜欢的点个赞吧