• 【C刷题】day1


    一、选择题

    1.正确的输出结果是
    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);
    14. return 0;
    15. }

    【答案】:

    3,8

    【解析】

    考点:

    (1)局部变量只在定义变量得到区域使用,在main函数中定义的局部变量,只能在main函数中使用

    (2)当局部变量和全局变量同名的时候,局部变量优先

    swap()函数交换的是全局变量的x和y,也就是全局变量的x=5,y=7交换为x=7,y=5

    可以在swap函数中打印x和y,得到的结果是x=7,y=5

    在输出语句这里,考虑局部变量优先


    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

    【解析】:

    考点:

    \ddd: ddd表示1-3个八进制数(不一定是三个d,可以是一个或者两个d)

    \xdd:dd表示两个16进制数

    B. \8为\ddd的形式,但是八进制没有8

    D.数组名后面的[ ]中必须是整形常量或者整形表达式


    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

    【解析】:

    考点:define与typedef的区别

    define宏定义只是简单的替换

    typedef是把该类型定义了一个别名,别名是一个独立的类型

    下面来理解一个重要的点: 

    1. int *p;
    2. //
    3. int这个单类型和表达式“*p”来定义变量p
    4. 直接的意思是*p是int类型,因此倒推p是int的指针//

    (1)上面define直接替换,结果就是int  *a,b(把这个*尽量靠右边写),那么*a和b都是int类型,也就是a是int *类型,b是int类型

    (2)下面typedef重命名,将相当于重新定义了一个int *类型,int *   a,b,也就是a和b都是int *类型


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

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

    【答案】 :

    C

    【解析】:

    考点:C语言中0表示假,非0表示真

    先判断表达式1也就是M是否为真,如果M为真就a++,如果M为假,那就a--

    也就是M为0,那就a--;如果M非0,那就a++,正好对应C选项

    5.有如下定义语句,则正确的输入语句是【多选】( )
    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

    【解析】:

    考点:scanf什么时候要&

    对于本身无法表示地址信息的,要加&;本身表示的就是地址信息的,就不需要加&

    注意:在这里&c和c两个地址是一样的,程序的效果相同,但是对于int b一定是&b


    二、编程题

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

     【答案】:

    1. * @param n int整型 最大位数
    2. * @return int整型一维数组
    3. * @return int* returnSize 返回数组行数
    4. */
    5. #include
    6. int* printNumbers(int n, int* returnSize )
    7. {
    8. //返回元素的个数
    9. *returnSize=pow(10,n)-1;
    10. //动态分配空间
    11. int *arr=(int*)malloc(*returnSize*sizeof(int));
    12. //赋值
    13. for(int i=0;i<*returnSize;i++)
    14. {
    15. arr[i]=i+1;
    16. }
    17. //返回
    18. return arr;
    19. }

    2.计算日期到天数转换

    【答案】:

    1. #include
    2. int main()
    3. {
    4. int year,month_real,day=0;
    5. int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    6. //输入年月日
    7. scanf("%d %d %d",&year,&month_real,&day);
    8. int date=day;
    9. for(int i=0;i-1;i++)
    10. {
    11. date+=month[i];
    12. }
    13. //闰年并且超过二月
    14. if((year%4==0&&year%100!=0)||(year%400==0)&&month_real>2)
    15. {
    16. date+=1;
    17. }
    18. printf("%d",date);
    19. return 0;
    20. }

  • 相关阅读:
    电力电子转战数字IC20220818day63——uvm入门实验5
    hadoop集群搭建
    Git 详细安装教程
    晶体的负载电容到底怎么选择
    腾讯正式开源 Spring Cloud Tencent,微服务套件又多一个选择
    南瓜科学好奇盒子上新 打造新时代玩具总动员
    RecycleView刷新功能
    两个整数求和(链表)
    移动 VR 开发时要避免的 PC 渲染技术
    Gradle系列——概述与简介(源于文档7.5版本,SpringBoot使用)day1-1
  • 原文地址:https://blog.csdn.net/qq_73017178/article/details/132794677