蓝桥杯第一周-C语言作业

米醋电子类C语言基础部分测试题

一,填空题

  1. (4分)在32位计算机上,int型变量常见的大小是( 4 )字节,( 32 )位.

  2. (4分)在C语言循环语句中,用于跳出当前循环的语句是( break ),用于跳出当前循环剩余代码进入下一次循环的语句是( continue ).

  3. (4分)设 a,b,c 都是 int 型变量,且 a=6,b=10,c=12.则表达式 c+=((a>b)||c)的c的结果为(13 )表达式!(a<b)&&!c||1)的结果为( 1 ).

  4. (3分)若有下面的代码段程序,则运行完该程序屏幕上显示( 3 )

     #include <stdio.h>
    void exchange_num(int a,int b)
    {
        int c;
        a=b;
        b=c;
    }
    int main()
    {
        int d=2,e=3;
        exchange_num(d,e);
        printf("%d",e);
        return 0;
    }
    
  5. (2)在 32 位电脑上,一个存放 int 型变量的数组 a,其中最后一个元素为 a[8],则该数组占用的内存为( 36 )字节。(2分) 4*9

  6. (2)设有 int a,*p;*p=&a;则指针p的值为( a )的地址。

  7. (6)在 C语言中 0x 开头表示十六进制数(a-f分别对应 10-15),比如 0Xb3 转换成十进制是 113,转换为二进制为 1011 0011.运算符&是按位与,|是按位或。如 1101&0100=0100.则0xd3|0xc9=0x( db )转换成二进制是( 1101 1011 ).

二,选择题(每题5分)

  1. 以下变量名合法的是(B)

A.67num B._32student

C. float D.32_student

  1. 代码printf(“%3.2f”,a);中,表示输出的结果(D)

    A.显示数字3.2 B.显示%3.2f

    C.显示一个浮点数,保留三位小数,宽度为2

    D.显示一个浮点数,保留两位小数,宽度为3

  2. 设w,x,y,z,m均为int型,有w=1,x=1,y=3,z=4,执行以下程序段后,m的值为(A)

    m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;

     		A.1   B.2   C.3   D.4
    
  3. 以下程序运行后,输出的结果是(A)

    ​ A.7 B.4 C.2 D.3

    void main()
    	{
    	    int a=1,b=2,c=3;
    	    a+=b;
    	    switch(a)
    	    {
    	        case 1:c++;
    	        case 2:c--;
    	        case 3:c+=4;
    	        case 4:c-=5;
    	    }
    	 printf("%d",c);
    	}
    
    1. 以下程序运行后,输出的结果是(C)

      A.3 B.2 C.4 D.5

    void main()
    {
        int a,b=12,c;
        int d[3];
        for(a=0;a<3;a++)
        {
            b+=4;   16    20   24    
            d[a]=b;    
        }
        printf("%d",d[2]%5);   
    }
    

    三,判断题(每题2分)

    1. 要让int型变量满足小于5且大于2的时候,屏幕显示你好,可以写成如下的形式 ( × )

      if(2<a<5)
      {
       printf("你好");
      }
      
    2. 在C语言中,可以将一个整数赋值给一个字符变量 ( √ )

    3. 在C语言中,if必须有else语句作为分支 ( × )

    4. 在C语言中,switch只能测试整型表达式的值 ( √ )

    5. 如int占4个字节,C语言中的每种数据类型所占的字节数总是固定的 (×)

    四,编程题(每题十分)

    1. 编写一个猜数游戏,让用户有5次机会猜该数字,每次猜完提示猜大了还是猜小了,猜错和猜对要有相应的提示,5次猜错结束游戏,也要有相应的提示,该中奖数字应方便调试修改.

      #include <stdio.h>
      
      int m=32,i,j,k=0;
      
      int main()
      {
      	printf("游戏开始,您有五次机会\n");
      	for(i=0;i<5;i++)
      	{
      		printf("第%d次尝试,请输入您猜的数\n",i+1);
      		scanf("%d",&j);
      		if(j>m)
      		{
      			printf("猜大了\n");
      		}
      		else if(j<m)
      		{
      			printf("猜小了\n");
      			
      		}
      		else
      		{
      			printf("恭喜您,猜对了\n");
      			k=1;
      			break;
      		}
      	}
      	if(k==0)
      	{
      		printf("次数用尽,正确答案是%d",m);
      	}
      	return 0;
      }
      
    2. 设计一个C程序,计算从1到N的所有整数的和,其中N由用户输入,需要有相关提示,例如,如果用户输入的是5,则计算1+2+3+4+5的结果并输出。

      #include <stdio.h>
      int N,sum,i;
      int main()
      {
      	printf("请输入数字:");
      	scanf("%d",&N);
          if(N<=0)
          {
              printf("请输入正整数!\n");
              return 1;
          }
      	for(i=0;i<=N;i++)
      	{
      		sum=sum+i;
      	}
      	printf("1到%d的所有整数的和为%d",N,sum);
      	return 0;
      }
      
    3. 设置一个进制转换程序,用户输入0-255的十进制数,然后输出十六进制0x** 和2进制 **** **** 。如输入12,输出0X0C

      0000 1100

      #include <stdio.h>
      
      int main() {
          int decimal;  // 存储用户输入的十进制数
          
          printf("请输入0-255之间的十进制数:");
          scanf("%d", &decimal);  // 读取用户输入
          
          // 输入验证
          if (decimal < 0 || decimal > 255) {
              printf("输入超出范围!\n");
              return 1;  // 异常退出
          }
          
          // 输出十六进制 - 使用printf的格式控制
          printf("十六进制:0x%02X\n", decimal);
          
          // 输出二进制 - 需要手动计算
          printf("二进制:");
          for (int i = 7; i >= 0; i--) {
              printf("%d", (decimal >> i) & 1);  // 关键:逐位提取
              if (i == 4) printf(" ");  // 在第4位后加空格(即4位一组)
          }
          printf("\n");
          
          return 0;
      }
      
    4. 设计一个C程序,提示用户输入10个整数,范围0-9999,将用户输入的10个数字排序,形如a<b<c<…或者a>b>c>…

      #include <stdio.h>
      
      int main() {
          int numbers[10];
          
          printf("请输入10个0-9999之间的整数:\n");
          for (int i = 0; i < 10; i++) {
              printf("第%d个数:", i + 1);
              scanf("%d", &numbers[i]);
              
              if (numbers[i] < 0 || numbers[i] > 9999) {
                  printf("输入超出范围!请重新输入。\n");
                  i--;
              }
          }
          
          // 选择排序(升序)
          for (int i = 0; i < 9; i++) {
              for (int j = i + 1; j < 10; j++) {
                  if (numbers[i] > numbers[j]) {
                      int temp = numbers[i];
                      numbers[i] = numbers[j];
                      numbers[j] = temp;
                  }
              }
          }
          
          // 输出升序结果
          printf("升序排列:");
          for (int i = 0; i < 10; i++) {
              printf("%d", numbers[i]);
              if (i < 9) printf(" < ");
          }
          printf("\n");
          
          // 输出降序结果
          printf("降序排列:");
          for (int i = 9; i >= 0; i--) {
              printf("%d", numbers[i]);
              if (i > 0) printf(" > ");
          }
          printf("\n");
          
          return 0;
      }