蓝桥杯备赛 第一周 C语言作业

第一周 C语言作业 编程题部分

  1. 编写⼀个猜数游戏,让⽤⼾有5次机会猜该数字,每次猜完提⽰猜⼤了还是猜⼩了,猜错和猜对要有相应的提⽰,5次猜错结束游戏,也要有相 应的提⽰,该中奖数字应⽅便调试修改.

    #include <stdio.h>
    
    int main()
    {
    	int i;
    	int a;
    	int b = 67;
    	for (i = 0; i < 5; i++)
    	{
    		printf("请猜数字\n");
    		scanf_s("%d", &a);
    		if (a == b)
    		{
    			printf("猜对了\n");
    			break;
    		}
    		else if (a < b)
    		{
    			printf("猜小了,请重新输入\n");
    		}
    		else if (a > b)
    		{
    			printf("猜大了,请重新输入\n");
    		}
    	}
    	if (i = 5)
    		printf("游戏结束");
    	return 0;
    }
    
  2. 设计⼀个C程序,计算从1到N的所有整数的和,其中N由⽤⼾输⼊,需要有相关提⽰,例如,如果⽤⼾输⼊的是5,则计算1+2+3+4+5的结果并 输出。

    #include<stdio.h>
    
    
    int sum(int x)
    {
    	int a;
    	int m = 0;
    	for (a = 1; a <= x; a++)
    	{
    		m += a;
    	}
    	return m;
    }
    
    int main()
    {
    	int y;
    	printf("请输入一个大于0的整数\n");
    	scanf_s("%d", &y);
    	if (y <= 0)
    	{
    		printf("请重新输入\n");
    		return 0;
    	}
    	int n = sum(y);
    	printf("1到%d累加的结果是%d", y, n);
    	return 0;
    }
    

3.. 设置⼀个进制转换程序,⽤⼾输⼊0-255的⼗进制数,然后输出⼗六进制0x** 和2进制 。如输⼊12,输出0X0C 0000 1100

#include <stdio.h>

int main() {
    int a;  
    int b;  
    int i;  
    int c;  
    printf("请输入一个0-255的整数: ");
    scanf("%d", &a);
    if (a < 0 || a > 255) 
    {
        printf("请输入0-255之间的数\n");
        return 0; 
    }
    printf("\n转换结果:\n");
    printf("十进制: %d\n", a);
    
  
    printf("十六进制: 0x");
  
    c = (a >> 4) & 0xF; 
    if (c < 10)
        printf("%d", c); 
    else
        printf("%c", c - 10 + 'A'); 
    
    c = a & 0xF;  
    if (c < 10)
        printf("%d", c);
    else
        printf("%c", c - 10 + 'A');
    printf("\n");
    
  
    printf("二进制: ");
    
  
    for (i = 7; i >= 0; i--) {
      
        b = (a >> i) & 1;  
        
        if (b == 0)
            printf("0");
        else
            printf("1");
        
      
        if (i == 4)
            printf(" ");
    }
    
    printf("\n");
    return 0;
}
  1. 设计⼀个C程序,提⽰⽤⼾输⼊10个整数,范围0-9999,将⽤⼾输⼊的10个数字排序,形如a>b>c>…

    #include <stdio.h>
    
    int main() {
        int n[10];  
        int t;      
        int i, j;   
        int d;      
        
        printf("请输入10个整数(0-9999):\n");
        for (i = 0; i < 10; i++) {
            printf("第%d个数字: ", i + 1);
            scanf_s("%d", &n[i]);
      
            if (n[i] < 0 || n[i] > 9999) {
                printf("请输入0-9999之间的数字\n");
                i--;  
            }
        }
        printf("\n请选择排序方式:\n");
        printf("1. 从小到大排序(a<b<c<...)\n");
        printf("2. 从大到小排序(a>b>c>...)\n");
        printf("请输入1或2: ");
        scanf_s("%d", &d);
        
        for (i = 0; i < 9; i++) {        
            for (j = 0; j < 9 - i; j++) {  
                if (d == 1) {  
                    if (n[j] > n[j + 1]) {  
                     
                        t = n[j];
                        n[j] = n[j + 1];
                        n[j + 1] = t;
                    }
                } else {  
                    if (n[j] < n[j + 1]) {  
                        
                        t = n[j];
                        n[j] = n[j + 1];
                        n[j + 1] = t;
                    }
                }
            }
        }
        
        
        printf("\n排序结果:\n");
        
        if (d == 1) {
            
            printf("%d", n[0]);
            for (i = 1; i < 10; i++) {
                printf(" < %d", n[i]);
            }
        } else {
          
            printf("%d", n[0]);
            for (i = 1; i < 10; i++) {
                printf(" > %d", n[i]);
            }
        }
        
        printf("\n\n数组中的实际顺序:\n");
        for (i = 0; i < 10; i++) {
            printf("%d ", n[i]);
        }
        printf("\n");
        return 0;
    }