提示:内容已经过期谨慎付费,点击上方查看最新答案

计算机程序设计(C语言)

  1. 被定义为指向某结构体类型数据的指针变量,即可以指向具有该类型的变量,又可以指向它其中的一个成员。( )

  2. A:错 B:对
    答案:错
  3. 针的意思是通过它能找到以它为地址的内存单元。( )

  4. A:错 B:对
    答案:对
  5. switch…case结构中case后的表达式必须为常量表达式。( )

  6. A:对 B:错
    答案:对
  7. 使用完链表后,系统会自动释放链表占用的内存。( )

  8. A:对 B:错
    答案:错
  9. 一旦定义了某个结构体类型后,系统将为此类型的各个成员项分配内存单元。( )

  10. A:对 B:错
    答案:×
  11. C系统在用字符数组存储字符串常量时会自动加一个‘\0’作为结束符。( )

  12. A:对 B:错
    AI参考:答案是A:对。在C语言中,当使用字符数组存储字符串常量时,系统会自动在结尾添加一个作为结束符。这是C语言字符串的规范表示方式。"
  13. 语句if(a=5) 是正确的。( )

  14. A:错 B:对
    AI参考:答案是B:对。语句if(a=5)是正确的。这个语句的意思是如果变量a等于5,那么执行后面的代码块。在C和C++等语言中,赋值操作符“=”也用于条件判断,如果左值(可以直接被赋值的地方)发生变化,则条件成立。因此,当a被赋值为5时,if(a=5)的条件成立,所以这个语句是正确的。'
  15. 函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数进行检测,以确保参数的传递正确。( )

  16. A:错 B:对

  17. C语言中,fgets()函数用于读取一行字符串,或读取指定长度的字符串。( )

  18. A:对 B:错

  19. 递归算法解题相对常用的算法如普通循环等,运行效率较高。( )

  20. A:对 B:错

  21. 函数定义需要开辟内存空间。( )

  22. A:对 B:错
    AI参考:对。在定义函数时,需要为函数的实现代码分配内存空间,因此函数定义需要开辟内存空间。'
  23. 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。( )

  24. A:错 B:对

  25. continue语句是结束本次循环,调整循环变量后继续下一次循环。( )

  26. A:对 B:错
    AI参考:正确答案是A,即【对】。在编程中,continue语句用于结束本次循环,而不是结束整个循环。在执行continue语句后,变量不会被调整,而是继续下一次循环。因此,这个说法是正确的。所以选项A是正确的。'
  27. 若有定义char*s = “hello”;则sizeof(s)求出其结果为5。( )

  28. A:错 B:对

  29. printf函数中的所有格式字符,都既可以是大写形式,也可以是小写形式。( )

  30. A:对 B:错
    AI参考:答案:B:错。printf函数中的格式字符应该全部大写或全部小写,不能混用。因此,这个说法是错误的。'
  31. 可以通过typedef给函数指针取别名调用该类型函数。( )

  32. A:错 B:对
    AI参考:正确答案是【B:对】。通过typedef可以为函数指针取别名,这样就可以调用该类型函数了。因此该说法是正确的。'
  33. 字符型指针用char*来定义,它不仅可以指向一个字符型常量,还可以指向一个字符串。( )

  34. A:错 B:对

  35. 若已声明一结构体student,定义一只想结构体变量的指针struct Student *pStruct后,应用其中的成员的用法是*pStruct.成员名。( )

  36. A:对 B:错

  37. 在C语言中所有用到的变量都要先定义然后才能使用。( )

  38. A:对 B:错
    AI参考:在C语言中,所有用到的变量在使用之前都需要先定义。这个定义可以是在代码的开头进行全局定义,也可以是在函数内部进行局部定义。因此,这个问题的正确答案是B:错。在C语言中,变量在使用之前需要进行定义,否则会导致未定义变量的错误。'
  39. 作为if语句条件的表达式只能是关系表达式或者逻辑表达式。( )

  40. A:错 B:对

  41. 对局部变量使用static声明,该变量在整个程序执行期间不释放,其所分配的空间始终存在。( )

  42. A:对 B:错

  43. 数组的[]内的数字是必须大于零的整数。( )

  44. A:错 B:对

  45. 不同函数中可以使用同名的变量。( )

  46. A:错 B:对
    AI参考:答案是B:对。在同一作用域内,不同函数中可以使用同名的变量。'
  47. 定义结构体变量有三种方式:先定义结构体类型再定义结构体变量、在定义结构体类型的同时定义结构体变量、直接定义结构体变量。( )

  48. A:错 B:对

  49. static局部变量在函数调用结束后不消失且继续保留原值。( )

  50. A:错 B:对
    AI参考:答案是B:对。在C++中,局部变量(包括静态局部变量)在函数调用结束后不会消失,它们会继续保留原值。这是因为局部变量是在函数栈帧中分配内存的,当函数调用结束后,该栈帧会被销毁,但是变量值会保留在内存中,直到程序结束或者显式地被清除。因此,这个判断题的答案是B,即“对”。'
  51. 在调用函数fun(fun(a, b), c)时,先调用的是fun(a, b)。( )

  52. A:错 B:对

  53. 把x,y定义成基本整型变量并赋初值2,可写成:int x=y=2;( )

  54. A:错 B:对
    AI参考:对。B:对。正确答案是B:对。该题是一个判断题,需要判断是否正确。根据题目给出的代码片段,将x和y定义为基本整型变量并赋初值2,可以使用语句int x=y=2;来完成。因此,答案为B:对。'
  55. 在解决问题时,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。( )

  56. A:对 B:错
    AI参考:答案是B:错。在解决问题时,应该根据问题的性质和数据结构来选择合适的算法,而不是尽量避免使用递归。递归是一种常用的算法,在某些情况下它可以有效地解决问题,但并不是在所有情况下都适用。因此,在选择算法时应该根据具体情况进行评估,而不是简单地避免使用递归。'
  57. 字符串也可以像基本数据类型一样进行比较相等的操作。( )

  58. A:对 B:错
    AI参考:答案是B:错。字符串在进行比较相等操作时,通常使用“==”,该操作符只能判断两个字符串是否包含相同的字符序列,而不能判断两个字符串是否完全相等。因此,字符串的比较需要使用特定的字符串比较函数或方法,如Python中的“==”。所以,这个说法是错误的。'
  59. 一个变量的地址称为该变量的“指针”。( )

  60. A:对 B:错
    AI参考:答案:A。一个变量的地址称为该变量的指针。指针是变量的一种,它存储的是变量在内存中的地址。通过指针,我们可以对变量进行操作,如读取、修改其值等。因此,这个说法是正确的。'
  61. #include<stdio.h>
    #include<string.h>
    int main()
    {
    char ss[10]="12345";
    gets(ss);
    printf("%s\n",ss);
    return 0;
    }
    当执行下面程序且输入:ABC时,输出的结果是( )

  62. A:12345ABC B:ABC45 C:ABC456789 D:ABC

  63. 以下选项中,不能正确赋值的是( )



  64. 以下关于函数定义时的形参说法正确的是( )

  65. A:形参不可以是指针 B:形参不能为空 C:形参可以是任意类型 D:形参只能一个
    AI参考:关于函数定义时的形参,正确说法是形参可以为空,可以是任意类型,可以多个。所以选项C是正确的。形参可以是任意类型这一说法也是正确的,因为函数参数的类型定义可以是任何数据类型,包括基本类型、引用类型、指针类型等。而选项A、B、D都是不完全正确的,形参可以是指针,也可以为空,也可以是多个。'
  66. #include <stdio.h>
    char str[] = "000";
    int main()
    {
    printf("%d\n", str[2]);
    return 0;
    }
    运行程序的结果是( )

  67. A:运行出错 B:48 C:0 D:随机数值
    AI参考:程序运行的结果是C:0。 程序中定义了一个字符数组str,并将其初始化为字符串000。在C语言中,字符串是以字符结束的字符数组,而这个字符在内存中实际上是一个整数值0。所以当程序输出str[2]时,输出的就是该字符在内存中的数值表示,即整数0。因此,选项C是正确的答案。 至于A选项的运行出错,是因为str[2]超出了数组的范围,这是不允许的。B选项的48也是错误的,因为48并不是一个有效的字符或字符串的值。D选项的随机数值也是错误的,因为程序中并没有任何可能导致随机数值输出的操作。"
  68. struct Student
    {
    int num;
    int age;
    } stu, *p;
    若有以上声明,则对结构体变量stu中成员age的不正确应用方式为( )

  69. A:p->age B:(*p).age C:student.age D:stu.age

  70. int sum(double a, double b)
    {
    return (a + b);
    }
    函数的返回类型为( )

  71. A:float B:double C:int D:void

  72. #include <stdio.h>
    struct stu
    {
    int num;
    char name[10];
    int age;
    };
    void fun(struct stu *p)
    {
    printf("%s\n",(*p).name);
    }
    int main()
    {
    struct stu students[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};
    fun(students+2);
    return 0;
    }
    上面程序的输出是( )

  73. A:Wang B:Zhang C:18 D:Zhao

  74. #include <stdio.h>
    int main()
    {
    int a[3] = {0, 2, 4};
    printf("%d\n", a + 2);
    return 0;
    }
    运行程序的结果是( )

  75. A:a[2]的地址 B:4 C:随机数值 D:2

  76. 要定义一个字符串,下列选项中错误的是( )

  77. A:char s[] = “hello”; B:char *s = “hello”; C:char s[] = {“h”,”e”,”l”,”l”,”o”}; D:char s[6] = “hello”;

  78. 若有定义int a = 1,b = 2, c = 3, d = 4,则表达式a<b?a:c<d?a:d的结果为( )

  79. A:3 B:4 C:1 D:2

  80. #include <stdio.h>
    void fun(int a)
    {
    printf("%d ", a+1);
    }
    int main()
    {
    int a = 1;
    fun(a);
    fun(a);
    fun(a);
    return 0;
    }
    运行以下程序的结果是( )

  81. A:2 3 4 B:1 1 1 C:2 2 2 D:1 2 3

  82. #include <stdio.h>
    int main()
    {
    int arr[5] = {1, 2, 3, 4, 5};
    printf("%d\n", *arr);
    return 0;
    }
    运行程序的结果是( )

  83. A:0 B:随机数值 C:运行出错 D:1

  84. long F(int n)
    {
    if (n<=1) return n;
    return F(n-1)+F(n-2);
    }
    递归函数的递归体是( )

  85. A:F(n)=F(n-1)+F(n-2) B:F(n)=F(n-3) C:F(n)=F(n-1) D:F(n)=F(n-21)

  86. char a=‘a’;
    while (a < 1){a++;}
    printf("%c", a);
    以下程序段运行结果为( )

  87. A:‘a’ B:b C:‘b’ D:a
    AI参考:程序段运行结果为:C:‘b’。 解释:在while循环中,a的值每次增加1,当a的值大于等于1时,循环结束。因此,在循环结束后,a的值变为2,再通过printf函数输出a的值,结果为‘b’。所以正确选项为C:‘b’。"
  88. 代码char* ch=”abcdef”;则输出*ch在控制台的结果是( )

  89. A:“abcdef” B:“ab” C:‘a’ D:字符’a’的地址
    AI参考:正确选项是 D:字符’a’的地址。代码 `char* ch = "abcdef";` 声明了一个指向字符串 "abcdef" 的字符指针 `ch`。但是,由于 `ch` 是一个指针,它并不指向一个具体的字符,而是指向内存中的某个地址,这个地址包含了整个字符串。当我们输出 `*ch` 时,实际上是输出该地址上的内容,也就是字符串 "abcdef"。所以,选项 A、B、C 都是错误的,只有选项 D 正确。输出结果应该是字符串 "abcdef" 在控制台上的表示形式,即地址上的内容。'
  90. 不能实现函数之间数据传递的是( )

  91. A:全局变量 B:局部变量 C:函数返回值 D:数组作为形参

  92. #include<stdio.h>
    int a=0;
    int slove(int n)
    {
    if(n==1)
    return 1;
    else
    return n+slove(n-1);
    }
    int main()
    {
    int n=3;
    a=slove(n);
    printf("%d",a);
    return 0;
    }
    程序运行后的结果为( )

  93. A:0 B:6 C:3 D:1

  94. 字符串"ABC"在内存占用的字节数是( )。

  95. A:3 B:8 C:4 D:6

  96. struct abc
    {
    int x;
    char y;
    }
    struct abc s1, s2;
    若程序中有以上的声明和定义, 则会发生的情况是( )

  97. A:程序将顺序编译、连接执行 B:编译时报错 C:能顺序通过编译、但连接出错 D:能顺序通过编译、连接但不能执行

  98. int Year(int n)
    {
    return (!(n % 4) && (n % 100) || !(n % 400));
    }
    int main()
    {
    int a = 1900;
    int *p = &a;
    printf("%d", Year(*p));
    return 0;
    }
    下列程序段执行结果是( )

  99. A:1 B:有语法错误 C:0
    AI参考:程序段执行结果为:A:1程序解释:程序段中定义了一个名为Year的函数,该函数接受一个整数n作为参数,并返回一个整数。函数内部使用模运算符%来判断n是否为闰年(即是否符合格里高利历的规定:能被4整除但不能被100整除的年份为闰年,或者能被400整除的年份也属于闰年)。程序中定义了一个变量a,并将其地址赋值给指针p,然后通过指针p调用Year函数并打印返回值。根据题目描述,变量a的值为1900,该年份可以被4整除但不能被100整除,因此属于闰年。在调用Year函数后,该年份会被判定为闰年,并返回值1。因此,程序段执行结果为1。选项B和C中的错误与题目描述无关,所以不考虑在内。所以最终答案是选项A:1。'
  100. 若a为int型变量,则下列C语言表达中,不能表达数学关系式10<a<15的是( )

  101. A:!(a<=10)&&!(a>=15) B:a>10&&a<15 C:10<a<15 D:a==11||a==12||a==13||a==14

  102. 字符数组定义正确的是( )

  103. A:char a[i] B:char a[] C:char a[5] D:char a[0]
    AI参考:正确答案是B:char a[]。 在C语言中,定义字符数组的方式有两种:一种是直接指定数组长度,如char a[5];另一种是使用数组定义时自动给数组长度赋值,如char a[]。所以选项B是正确的,它表示定义了一个字符数组a,但是没有明确指定数组长度。其他选项中,A和D中i或0都是不正确的变量名,C中5表示数组长度但没有给数组赋值,因此都是不正确的。"
  104. 给定函数原型:int* f(int *p); 变量定义:int i; 下列选项哪个对函数的调用是错误的?( )

  105. A:f(&(i+6)); B:int* p = f(&i); C:*f(&i) = 6; D:f(&i);

  106. 假设有:char str[ ]="Beijing"; 那么执行 printf("%d\n", strlen(strcpy(str,"China"))); 后的输出结果是( )

  107. A:7 B:12 C:5 D:14
    AI参考:执行printf("%d", strlen(strcpy(str, "China")));后的输出结果是“D:14”。首先,strcpy函数用于将源字符串复制到目标字符串中,而strlen函数用于计算字符串的长度。在这种情况下,strcpy(str, "China")会将字符串"China"复制到str数组中。然后,strlen(str)会返回str数组中字符的数量,也就是字符串"China"的长度。由于str数组中已经包含了原始字符串"Beijing",所以strlen(str)会返回字符串"China"的长度加上原始字符串的长度,即14。因此,输出结果为D:14。'
  108. int main()
    {
    int x = 0;
    int a = 1;
    int b = 5;
    switch(x)
    {
    case 0: b++; break;
    case 1: a++; break;
    case 2: ++a, ++b; break;
    default:printf(“Error”);
    }
    printf(“%d, %d”, a, b);
    return 0;
    }
    以下程序的输出结果是( )

  109. A:2,5 B:1,5 C:1,6 D:2,6
    AI参考:正确选项是 `C:1,6`。程序中的 `switch` 语句是根据 `x` 的值进行选择的,根据题目给出的选项,`x` 的值是 1。所以程序会执行 `case 1: a++; break;`,此时 `a` 的值会增加 1。然后程序会跳出 `switch` 语句,执行 `printf("%d, %d", a, b);`,此时 `a` 的值为 2,`b` 的值为 6。因此,程序的输出结果是 `1,6`。其他选项中的输出结果都与实际执行的结果不符。'
  110. typedef struct NODE
    {
    int a;
    char b;
    } OLD;
    有上列程序段,则以下叙述中正确的是( )


  111. A:OLD是一个结构体类型 B:NODE的一个结构体类型 C:OLD是一个结构体变量

  112. switch(i)
    {
    case ‘1’:i+=1;
    case ‘2‘:i+=1;
    case ‘3’:i+=1;
    default:i+=1;
    };
    若int i = 1,执行下面程序段后,变量i的值为( )

  113. A:3 B:4 C:2 D:1

  114. 表示关系x<=y<=z的C语言表达式为( )

  115. A:(X<=Y)AND(Y<=Z) B:(X<=Y)&&(Y<=Z) C:(X<=Y<=Z) D:(X<=Y)&(Y<=Z)
    AI参考:表示关系x<=y<=z的C语言表达式为:D:(X<=Y)&(Y<=Z)。在C语言中,使用“&”符号表示逻辑与操作,所以选项D:(X<=Y)&(Y<=Z)表示x不大于y且y不大于z的关系。'
  116. 递归的基本思想是( )

  117. A:把规模大的问题转化为规模小的不同的子问题来解决 B:把规模小的问题转化为规模大的相似的子问题来解决 C:把规模大的问题转化为规模小的相似的子问题来解决 D:把规模小的问题转化为规模大的不同的子问题来解决

  118. 字符数组a[]={“hello”}的长度是( )

  119. A:6 B:4 C:3 D:5
    AI参考:正确选项是 D:5。 字符数组a[]={“hello”},这个数组包含了一个字符串“hello”,其中包含了5个字符,分别是h、e、l、l和o。因此,字符数组a[]的长度是5。选项A、B和C都与实际情况不符。"
  120. #include<stdio.h>
    int main()
    {
    int c=20;
    for(int i=0;i<1;i++)
    {
    int c=10;
    printf(“%d”,c);
    }
    printf(“%d”,c);
    return 0;
    }
    程序输出结果是( )

  121. A:2020 B:1020 C:1010 D:2010

  122. 与数学式子5乘以x的n次方除以(2y-5)对应的C语言表达式是( )。

  123. A:5*pow(x,n)*(1/(2*y-5)) B:5*x^n/(2*y-5) C:(5*x^n)/(2y-5) D:5*pow(n,x)/(2*y-5)

  124. long fun(int n)
    {
    long s;
    if (n==1 || n==2)
    s=2;
    else
    s=n-fun(n-1);
    return s;
    }
    int main()
    {
    printf("%ld\n", fun(3));
    return 0;
    }
    以下程序的输出结果是( )

  125. A:1 B:4 C:3 D:2
    AI参考:程序的输出结果是“D:2”。该程序定义了一个名为fun的函数,它采用一个整数n作为参数,并返回一个长整型值s。在fun函数中,根据n的值不同,有两种情况:* 如果n等于1或2,则将s设置为2。* 否则,将n减去fun(n-1)的结果赋给s。在main函数中,调用了fun(3)并打印出结果。由于n的值为3,所以根据上述描述,函数将返回n减去fun(2)的结果,即n减去fun(1)的结果。由于fun(1)的结果为2,所以最终fun(3)的结果为n-2=3-2=1。因此,程序的输出结果是1。所以,正确选项是D:2。'
  126. 有程序段:int *p,a=10,b=1; p=&a; a=*p+b; 执行该程序段后,a的值为( )

  127. A:10 B:编译出错 C:12 D:11

  128. int main()
    {
    float a = 5.034;
    double b = 3.62129;
    printf(“%.2f %.3lf\n”,&a,&b);
    return 0;
    }
    以下程序输出结果为( )

  129. A:5.03 3.621 B:5.0 3.62 C:5.03 3.62 D:5.03 3.622
    AI参考:程序输出结果为“C:5.03 3.62”。程序中,变量a被初始化为浮点数5.034,变量b被初始化为双精度浮点数3.62129。printf函数中的"%.2f %.3lf"格式化字符串表示输出的浮点数保留两位小数,双精度浮点数保留三位小数。由于浮点数类型的不精确性,所以在打印结果时可能存在一定的舍入误差。输出结果应为a=5.03,b=3.62。但是浮点数的舍入误差可能会影响到精度,导致输出的结果并非完全精确。所以可能存在一定的偏差,但是基本符合题目要求。因此选项C是正确答案。'

温馨提示支付 ¥2.65 元后可查看付费内容,请先翻页预览!
点赞(1) dxwkbang
返回
顶部