• 【C语言】每日一题(半月斩)——day1


     

    目录

    😊前言 

    一.选择题 

    1.执行下面程序,正确的输出是(c) 

    2.以下不正确的定义语句是( )

    3.test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】( ) 

    4、有如下定义语句,则正确的输入语句是【多选】( ) 

    5.. 若给定条件表达式 (M)?(a++):(a--) ,则其中表达式 M ( )

    二、编程题 

    ①打印从1到最大的n位数

    ②计算日期到天数转换


     

    😊前言 

    开设这个专栏,是因为刚更新完【 C语言】初阶的内容,马上迈入进阶,可以在学习进阶知识的时候,巩固复习基础。基础要扎实!!!

    一.选择题 

    1.执行下面程序,正确的输出是(c) 

    1. int x = 5, y = 7; //全局变量
    2. void swap()
    3. {
    4. int z;
    5. z = x;
    6. x = y;
    7. y = z;
    8. }
    9. int main()
    10. {
    11. int x = 3, y = 8;
    12. swap();
    13. printf("%d %d\n", x, y); // 3 8
    14. }

    A: 5,7         B: 7,5         C: 3,8         D: 8,3  

    解析:正确答案 C

    swap()在调用的时候没有传参,所以函数内交换的是全局变量,而当全局变量和局部变量名字相同时,优先使用局部变量;局部优先原则 

    1.  作用域

    通常来说,一段程序代码中所用到的名字并不是总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。

    (1)局部变量的作用域就是所在的局部范围。(同一个{}内)

    (2)全局变量的作用域就是整个工程(注:换一个.c文件使用全局变量,要声明(extern)一下变量)

    注意:当全局变量与局部变量同名冲突时,遵循局部优先的原则

    2.生命周期

    变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

    (1)  局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

    (2)  全局变量的生命周期是:整个程序的生命周期
     

     

    2.以下不正确的定义语句是( )

    A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};

    B: char c2[] = {'\x10', '\xa', '\8'};

    C: char c1[] = {'1','2','3','4','5'};

    D: int y[5+3]={0, 1, 3, 5, 7, 9};

    解析: 正确答案 B

    选项B中考察是转义字符,八进制范围是0~7,所以'\8' err

    \ddd ddd表示1到3个八进制数 如:\130 转义为 字符X
    \xhh hh表示1到2位十六进制数 如:\x30 转义为 字符0

    补充:字符型数据在内存中存储的是字符的ASCII码值的二进制形式,一个字符的存储占用一个字节

    3.test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】( ) 

    1. #define INT_PTR int*
    2. typedef int* int_ptr;
    3. INT_PTR a, b;
    4. int_ptr c, d;

    A: a         B: b         C: c         D: d   

     解析:正确答案 ACD

    4、有如下定义语句,则正确的输入语句是【多选】( ) 

    1. int b;
    2. char c[10];

    A: scanf("%d%s",&b,&c);         B: scanf("%d%s",&b,c);

    C: scanf("%d%s",b,c);         D: scanf("%d%s",b,&c);

    解析:正确答案 AB

    1.scanf()是输入函数

    scanf(格式控制,地址列表);

    “格式控制”规定数据的输入格式,必须用双引号括起来,其内容仅仅是格式说明。

    “地址列表”则由一个或多个地址组成的列表,可以是变量的地址,或字符串的首地址。 

    所以在scanf();中变量需要取地址,而数组名就表示首元素地址(有两个例外)

    2.数组名是什么?

    ①.数组名是首元素的地址。

    两个例外:

    1、sizeof(数组名),这里的数组名是表示整个数组,计算的是整个数组的大小,单位是字节。

    2、&数组名,这里的数组名是表示整个数组,&数组名取出的是数组的地址。

    5.. 若给定条件表达式 (M)?(a++):(a--) ,则其中表达式 M ( )

    A: 和(M==0)等价         B: 和(M==1)等价         C: 和(M!=0)等价         D: 和(M!=1)等价 

    解析: 正确答案

     考察的是三目运算符,  exp1?exp2:exp3;

    exp1为真,执行exp2;

    exp1为假,执行exp3;

            C语言规定:0为假,非0为真。
    所以 若要求与M等价,则要满足M取0时为假,取非0数值时为真。 

    二、编程题 

    ①打印从1到最大的n位数

    输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 ...  一直到最大的 3 位数 999。
    1. 用返回一个整数列表来代替打印
    2. n 为正整数,0 < n <= 5

    打印从1到最大的n位数_牛客网

    1. int* printNumbers(int n, int* returnSize) {
    2. static arr[100000];
    3. int m = 9;
    4. int i = 1;
    5. int j = 0;
    6. scanf("%d", &n);
    7. if (n >= 1 && n <= 5)
    8. {
    9. //获得最大位数字
    10. for (i = 1; i < n; i++)
    11. {
    12. m = m * 10 + 9;
    13. }
    14. //将数据存进数组
    15. for (j = 1; j <= m; j++)
    16. {
    17. arr[j - 1] = j;
    18. *returnSize = j; //returnSize返回数组元素个数
    19. }
    20. return arr;
    21. }
    22. else
    23. {
    24. return 0;
    25. }
    26. }

    static修饰的全局变量——称为静态全局变量 

    ②计算日期到天数转换

    根据输入的日期,计算是这一年的第几天。输入保证年份为4位数且日期合法。

    输入描述:输入一行,每行空格分割,分别是年,月,日

    输出描述:输出是这一年的第几天

     计算日期到天数转换_牛客网

    1. int Isyear(int year)
    2. {
    3. if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
    4. {
    5. return 1;
    6. }
    7. else {
    8. return 0;
    9. }
    10. }
    11. int main()
    12. {
    13. int year, month, date;
    14. //0可以让数组下标和月份对齐
    15. int month_day[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    16. scanf("%d %d %d", &year, &month, &date);
    17. //获取当月天数
    18. int day = date;
    19. //累加之前月份天数
    20. int i = 0;
    21. for (i = 1; i < month; i++)
    22. {
    23. day += month_day[i];
    24. }
    25. //判断是否闰年且大于二月+1
    26. if ((Isyear(year)) && month > 2)
    27. {
    28. day++;
    29. }
    30. printf("%d", day);
    31. return 0;
    32. }

    1、月大月小口诀:一月大,二月平,三月大,四月小,五月大,六月小,七月大,八月大,九月小,十月大,十一月小,十二月大(大:31,小:30,平:28)

    2、判断闰年的条件

    ①能被4整除,并不能被100整除。

    ②能被400整除

     

     

     

  • 相关阅读:
    ios不越狱虚拟定位教程:如何在iOS设备上实现无需越狱的虚拟定位
    进行LDPC编码时扔掉了前面2Zc的信息位,为何如此设计?在解码时如何恢复?
    2022年Java学习笔记目录
    View的绘制流程
    PMD 6.47.0 发布,代码分析器
    【kali-漏洞利用】(3.4)Metasploit渗透攻击应用:MySQL渗透过程
    Python集合魔法:解锁数据去重技巧
    yarn资源配置及使用
    openEuler学习——部署MGR集群
    拯救者y9000k(2022版)安装ubuntu系统(解决wifi问题)
  • 原文地址:https://blog.csdn.net/m0_67367079/article/details/132864144