首页 > 编程语言 >计算机考研C程序设计自命题必刷满分题型

计算机考研C程序设计自命题必刷满分题型

时间:2024-11-06 20:44:04浏览次数:5  
标签:case 题型 题目 int 语句 switch printf 必刷 考研

一、C程序的基本数据类型、基本算术运算、简单程序的设计

  1. 题目: 若有条件表达式(exp)?a++:b++;,则以下表达式中能完全等价于表达式(exp)的是( )。

    • 选项:
      • A. exp == 0
      • B. exp != 0
      • C. exp == 1
      • D. exp != 1
    • 答案: D
    • 解释: 条件表达式(exp)?a++:b++;意味着如果exp为真(非0),则执行a++,否则执行b++。因此,等价于exp != 0
  2. 题目: 效率最高的计算2*8的方法是( )。

    • 选项:
      • A. 2*2*2*2
      • B. 2*2*4
      • C. 2<<3
      • D. 2+2+2+2+2+2+2+2+2+2+2+2+2+2+2
    • 答案: C
    • 解释: 2<<3是位运算中的左移操作,相当于2*2^3,即2*8,这是最高效的计算方法。
  3. 题目: a=1, b=22,则表达式a|ba||b的值分别为( )。

    • 选项:
      • A. 1 3
      • B. 3 1
      • C. 1 2
      • D. 2 1
    • 答案: A
    • 解释: a|b是按位或运算,1|22的二进制表示为1010|00010110,结果为10001,即十进制的17。a||b是逻辑或运算,因为a为真,所以结果为真,即1。
  4. 题目: sizeof(float)是( )。

    • 选项:
      • A. 一种函数调用
      • B. 一个不合法的表达式
      • C. 一个整型表达式
      • D. 一个浮点型表达式
    • 答案: C
    • 解释: sizeof是一个编译时运算符,用于计算数据类型或数据结构在内存中的大小,结果是一个整型值。
  5. 题目: 若有定义int a[5], *p=a;则对a数组元素地址的正确引用是( )。

    • 选项:
      • A. p+5
      • B. *a+1
      • C. &a+1
      • D. &a[0]
    • 答案: D
    • 解释: &a[0]是取数组第一个元素的地址,这是正确的引用方式。
  6. 题目: 若有定义int a[2][3], (*p)[3]; p=a;则对a数组元素地址的正确引用是( )。

    • 选项:
      • A. *(p+2)
      • B. p[2]
      • C. p[1]+1
      • D. (p+1)+2
    • 答案: A
    • 解释: *(p+2)实际上是p[2],即第二个子数组的首地址,这是正确的引用方式。
  7. 题目: 已有定义int k = 2; int *ptr1, *ptr2;ptr1ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。

    • 选项:
      • A. k = *ptr1 + *ptr2
      • B. ptr2 = k
      • C. ptr1 = ptr2
      • D. k = *ptr1*(*ptr2);
    • 答案: B
    • 解释: ptr2 = k试图将一个整型值赋给一个指向整型的指针,这是不合法的。
  8. 题目: 当有如下定义char *p = (char*)malloc(100);p被分配到( )中。

    • 选项:
      • A. 栈
      • B. 堆
      • C. 全局初始化区
      • D. 以上说法均不对
    • 答案: B
    • 解释: malloc函数用于在堆上动态分配内存。
  9. 题目: 输入三个数,并从大到小输出。

    • 代码:
      #include<stdio.h>
      void swap(int* x,int* y)
      {
             
          int tmp = *x;
          *x = *y;
          *y = tmp;
      }
      int main()
      {
             
          int a, b, c;
          printf("请输入三个数:>\n");
          scanf("%d %d %d", &a, &b, &c);
          if (a < b) swap(&a, &b);
          if (a < c) swap(&a, &c);
          if (c > b) swap(&b, &c);
          printf("%d %d %d", a, b, c);
          return 0;
      }
      
    • 解释: 该程序通过比较和交换确保a是最大的,c是最小的,然后按从大到小的顺序输出。
  10. 题目: 打印100~200的素数(质数)。

    • 代码:
      #include <stdio.h>
      #include <math.h>
      int main() {
             
          int i, j;
          for (i = 101; i <= 200; i += 2) {
              // 从101开始,每次i+2,只考虑奇数
              int isPrime = 1;
              for (j = 2; j <= sqrt(i); j++) {
             
                  if (i % j == 0) {
             
                      isPrime = 0;
                      break;
                  }
              }
              if (isPrime) printf("%d ", i);
          }
          printf("\n");
          return 0;
      }
      
    • 解释: 该程序使用试除法来判断素数,只考虑奇数,并且只试除到sqrt(i),提高了效率。

二、条件选择语句if和switch的语法及其应用

  1. 题目: 下面代码的执行结果是什么?

    #include <stdio.h>
    int main() {
         
        int x = 3;
        int y = 3;
        switch (x % 2) {
         
            case 1:
                switch (y) {
         
                    case 0: printf("first"); 
                    case 1: printf("second"); break;
                    default: printf("hello");
                }
            case 2:
                printf("third");
        }
        return 0;
    }
    

    答案: 输出为 “hellosecondthird”。
    解释: 由于switch语句中case后面没有break,所以会执行到switch结束。

  2. 题目: switch(c)语句中,c不可以是什么类型?

    • 选项:
      • A. int
      • B. long
      • C. char
      • D. float
        答案: D
        解释: switch选择语句中,switch(整型表达式/枚举类型)case整型常量表达式/枚举常量;字符类型char本质上也属于整型家族,因为char类型在内存中以ASCII码进行存储,ASCII码本质上是一组整数。
  3. 题目:func(1) =( )

    int func(int a)
    {
         
        int b;
        switch (a)
        {
         
            case 1: b = 30;
            case 2: b = 20;
            case 3: b = 16;
            default: b = 0;
        }
        return b;
    }
    
    • 选项:
      • A. 30
      • B. 20
      • C. 16
      • D. 0
        答案: D
        解释: 由于casedefault后没有跟break,不会跳出switch语句,会顺延执行下去,直到switch语句结束。
  4. 题目: 关于switch说法不正确的是:

    • 选项:
      • A. switch语句中的default子句可以放在任意位置
      • B. switch语句中case后的表达式只能是整形常量表达式
      • C. switch语句中case子句必须在default子句之前
      • D. switch语句中case表达式不要求顺序
        答案: C
        解释: switch语句中对于case子句与default子句摆放位置是不要求的,因为switch语句是根据switch()中()里的为准,进行选择,并不是顺序执行。
  5. 题目: 程序的输出结果是?( )

    #include <stdio.h>
    int main()
    {
         
        int a = 0, b = 0;
        for (a = 1, b = 1; a <= 100; a++)
        {
         
            if (b >= 20) break;
            if (b % 3 == 1)
            {
         
                b = b + 3;
                continue;
            }
            b = b - 5;
        }
        printf("%d\n", a);
        return 0;
    }
    
    • 选项:
      • A. 10
      • B. 9
      • C. 8
      • D. 7
        答案: C
        解释: 由于continue语句的存在,当b % 3 == 1时,b增加3并继续循环,不执行b = b - 5;。因此,b的值在达到20之前,a的值会先达到8。
  6. 题目: 下列哪一项不是C语言的特点?

    • 选项:
      • A. 运算符丰富,是完全模块化和结构化的语言
      • B. 语言简洁、紧凑,使用方便、灵活
      • C. 生成的目标代码质量高,程序执行效率高
      • D. 允许直接访问物理地址,可以用来编写系统软件,但该语言与硬件相关,编写的程序很难移植到不同系统上运行
        答案: D
        解释: C语言与硬件无关,编写的程序可以移植到不同系统上运行。
  7. 题目: 下面哪一条语句是定义一个常变量(其值为255,存在期间不能改变)的正确语句?

    • 选项:
      • A. #define MASK 255
      • B. const int mask = 255;
      • C. #define MASK 255;
      • D. const int mask 255;
        答案: B
        解释: const关键字用于定义常量,其值在定义后不能改变。
  8. 题目: 在C语言程序中,表达式356%8的值是?

    • 选项:
      • A. 44.5
      • B. 44
      • C. 4
      • D. 0
        答案: C
        解释: %是取模运算符,356%8的结果是4。
  9. 题目: 下面哪一语句与“if(x<=y)r=1;else r=0;”等价?

    • 选项:
      • A. r= (x<=y);
      • B. r = (x>y)?1:0;
      • C. r = (x<=y)?0:1;
        答案: A
        解释: if语句可以转换为三元运算符的形式,但在这里r的值应该是1或0,而不是根据条件直接为真或假,因此选项A是正确的。
  10. 题目: 已知学生成绩(100分为满分)与等级的对应关系,编写一个程序,要求输入学生成绩,输出学生成绩对应的等级。

    int main(int argc, const char *argv[])
    {
         
       int grade;
       scanf("%d",&grade);
       grade = grade / 10;
       switch(grade){
         
           case 10:case 9:
                   printf("A");break;
           case 8:
                   printf("B");break;
           case 7:
                   printf("C");break;
           case 6:
                   printf("D");break;
           default:
                   printf("E");break;
       }
       return 0;
    }
    

    答案: 程序正确地根据输入的成绩输出对应的等级。
    解释: 程序使用switch语句根据成绩的十分之一来确定等级,这是一种简单且有效的方法来处理成绩等级的判断。

三、for、while、do-while三种循环控制语句的语法特点和应用

1. for循环的语法和应用

题目: 写出一个for循环,计算并打印1到100的和。
答案:

#include <stdio.h>
int main() {
   
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
   
        sum += i;
    }
    printf("Sum = %d\n", sum);
    return 0;
}

解释: for循环由三部分组成:初始化表达式、条件表达式和更新表达式。在本例中,初始化表达式int i = 1初始化循环变量i,条件表达式i <= 100控制循环直到i超过100,更新表达式i++在每次循环后递增i的值。循环体内计算累计和并最终打印结果。

2. while循环的语法和应用

题目: 使用while循环打印字母表中的所有大写字母。
答案:

#include <stdio.h>
int main() {
   
    char c = 'A';
    while (c <= 'Z') {
   
        printf("%c ", c);
        c++;
    }
    return 0;
}

解释: while循环在执行循环体之前会先评估条件。只有当条件为真时,才会执行循环主体。在本例中,只要c的值小于等于'Z',循环就会继续执行,打印从'A''Z'的所有大写字母。

3. do-while循环的语法和应用

题目:do-while循环实现一个程序,至少执行一次循环体,并在用户输入非’y’字符时结束循环。
答案:

#include <stdio.h>
int main() {
   
    char input;
    do {
   
        printf("请输入(输入y结束):");
        scanf(" %c", &input);
    } while (input == 'y');
    return 0;
}

解释: do-while循环在执行循环体之后才检查条件,因此循环体至少执行一次。在本例中,循环会一直执行直到用户输入'y'字符,循环体至少执行一次,即使第一次输入的就是'y'

4. for循环与数组

题目: 给定一个整型数组int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,使用for循环打印数组的所有元素。
答案:

#include <stdio.h>
int main() {
   
    int arr[10] = {
   1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    for (int i = 0; i < 10; i++) {
   
        printf("%d ", arr[i

标签:case,题型,题目,int,语句,switch,printf,必刷,考研
From: https://blog.csdn.net/qq_55615339/article/details/143469455

相关文章

  • 考研打卡(9)
    开局(9)开始时间 2024-11-0513:57:18结束时间 2024-11-05 14:26:41今天要去打剧本杀数据结构将一个n*n的对称矩阵A的下三角按行存放在一堆数组B中,A[0][0]存放在B[0][0]中,那么第i行的对角元素A[i][i]在B中的存放位置是____(湖南大学2012)A(i+3)*i/2B(i+1)*i/2C(2......
  • C语言版数据结构算法(考研初试版—3)--链表定义、创建
    2、链表1、链表结构体typedefstructLNode{   intdata;   structLNode*next; }LNode,*LinkList; 2、遍历链表voidPrintList(LinkListL){   LinkListp=L->next;//Skiptheheadnodewhichisadummynode   while(p!=......
  • C语言版数据结构算法(考研初试版—4)--链表删除操作
    删除链表中值为m的结点(1)创建一个链表(2)打印删除前的链表(3)查找值为m的前一个结点(4)执行删除操作(5)打印删除后的链表#include<stdio.h>#include<stdlib.h>typedefstructLNode{ intdata; structLNode*next;}LNode,*LinkList;//头插法LinkListCreateList_L(){......
  • 考研打开(6)
    开局(6)开始时间 2024-11-02 19:44:58结束时间 2024-11-02 19:48:42......
  • 考研打卡(5)
    开局(5)开始时间 2024-11-01 21:04:09结束时间 2024-11-01 21:36:55 今天翘了一节编译原理让谁室友帮忙签到数据结构下列关键字为堆的是____(南昌大学2015年)A100,60,70,50,32,65B60.70.65.50.32.100C65,100,70,32,50,60D70,65,100,32,50,60A1000,60,70,5......
  • 考研打卡(4)
    开局(4)开始时间 2024-10-31 18:26:04结束时间 2024-10-31 22:03:15麻了,今天彬彬大王点我上去讲题,汇编终于会了两题数据结构设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较___次就可以断定数据元素X是否在查找表中。(福州大学2014年)A5B6C......
  • 考研打卡(3)
    开局(3)开始时间 2024-10-30 21:38:56结束时间 2024-10-30 22:27:21呜呜今天体侧了数据结构设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行__躺的分配和回收才能使得初始关键字序列变成有序序列。(武汉科技大学2014)A3B4C5D8A3答案......
  • 考研打卡(2)
    开局(2)开始时间 2024-10-29 19:21:57结束时间 2024-10-29 23:32:52呜呜,昨天被老师骂了数据结构能说明快速排序是不稳定的排序方法的一组关键字序列是____(暨南大学2011)A(10,20,30,40,50)B(50,40,30,20,10)C(20,20,30,10,40)D(20,40,30,30,10)C(20,20,30,10,40)答......
  • java计算机毕业设计成都医学院考研信息交流平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及和就业压力的增加,越来越多的本科毕业生选择继续深造,攻读硕士学位。成都医学院作为四川省的一所重要医学院校,吸引了大量学生报考其......
  • 考研打卡(1)
    开局(1)开始时间 2024-10-28 20:45:43结束时间 2024-10-28 23:20:24 下列与队列结构有关联的是__(南京邮电大学2013年)A函数的递归调用B数组元素的调用C多重循环的执行D先到先服务的作业调度数据结构下列与队列结构有关联的是__(南京邮电大学2013年)A函数的递......