小工具知识网

当前位置: 首页 > 行业知识 > C语言基础练习——Day01

行业知识

C语言基础练习——Day01

2026-11-10 11:15:09 来源:互联网转载

���录

选择题

编程题

打印从1到最大的n位数

计算日期到天数转换


选择题

1、执行下面程序,正确的输出是

int x=5,y=7;void swap(int x, int y){    int z;    z=x;    x=y;    y=z;}int main(){      int x=3,y=8;      swap(int x, int y);    printf("%d,%d\n",x, y);    return 0;}
  • A 5, 7
  • B 7, 5
  • C 3, 8
  • D 8, 3 答案:C

    解析:

    本题涉及到传值调用和传址调用的问题,在本题中,swap函数的形参只是接收到了x和y空间的值,而不是x和y所在空间的地址,所以在swap函数中交换x和y的数据不影响main函数中的x和y,最后输出依旧是3和8

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

    • A double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};
    • B char c2[] = {'\x10', '\xa', ''};
    • C char c1[] = {'1','2','3','4','5'};
    • D int y[5+3]={0, 1, 3, 5, 7, 9}; 答案:B

      解析:

      在八进制表示中,最大的数值为7,没有8的存在,故'\8'不存在,注意D是正确答案

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

      #define INT_PTR int*typedef int* int_ptr;INT_PTR a, b;int_ptr c, d;
      • A a
      • B b
      • C c
      • D d 答案:ACD

        解析:

        不论是用#define定义INT_PTR为int*,在代码预处理阶段会被替换为int*,每一个*只对紧随着的变量有效,即int* a, b,但是用typedef更名int*为int_ptr时并不存在这个问题 ,tydedef本质是将每一个变量都初始化为更名的类型的变量,即int_ptr c与int_ptr d,要使b都成为指针类型,则写成int *a, *b;

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

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

          解析:

          给定条件表达式(M)?(a++):(a--)。 (表达式1)? (表达式2): (表达式3)为三目运算符。

          计算规则为:先判断表达式1是否为真,若为真,则计算表达式2,并将表达式2的结果作为整个表达式最终的结果,表达式3不计算;否则,表达式3的结果为最终结果,表达式2不计算。 在此表达式中,若M = 0,为假,计算a--; 若M != 0,为真,计算a++; 若要求与M等价,则要满足M取0时为假,取非0数值时为真。 C选项中:假定M取0,则M表示假,当M是0时,表达式M != 0不成立,为假,计算a--; 当M取非0数值时,M为真,表达式M != 0成立,为真,计算a++

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

          int b;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

            解析:

            &c本质是&c[0],和c的地址值是一样的,而%s占位符期望一个指向字符数组的指针作为参数,以便将输入的字符串存储到该数组中,程序的效果相同,也没错,但同时也必须把变量b的地址给scanf

            编程题

            打印从1到最大的n位数

            题目链接:打印从1到最大的n位数_牛客题霸_牛客网 (nowcoder.com)

            描述

            输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

            1. 用返回一个整数列表来代替打印

            2. n 为正整数,0

上一篇:轻松下载个人相册的秘诀,简单教程大揭秘!

下一篇:服务器怎么和app连接?