学C的第二次作业

1、位运算练习
#include <stdio.h>
#include <inttypes.h>

    // 1010 1111    AF
    // 8421 8421 
    // 第一个问题: 表现形式   不同进制  一样 
    //  0b00101100  二进制  |按位或运算   将某位 某些置1 
    //  0b00010000     1<<4         十六进制  0x | 0x
    // ②  左移
    // ③ 取反    异或 
    // 0b00101100
    // 0b00100000   ^ 
    // 0b00001100
// ④到底使用按位与还是按位或 按位异或  & | ^   
    // 置1          按位或(|)
    // 置0          按位与(&)
    // 取反         按位异或(^)
    // 取某些位    先按位与(&)操作  再进行右移(>>)   注意:数据位数  32位   十六进制  1位 === 4位  



//位运算练习

int main() {
 // 将变量a的第1位设置为1,其他位保持不变
 uint8_t a = 0b10101001;  // 0xa9
           //0b00000010;                           
           //0b10101010;  转换成十六进制为:0xab       相同为0 不同为1 
 printf("%0x\n",a | (1 << 1));      //左移1位     <<左移符            1 << 1 向左移一位将第一位置一
 printf("%0x\n",a | 0Xab);      


 // 将变量b的第3位设置为0,其他位保持不变
 uint8_t b = 0b10101001;  // 0xa9
           //0b11110111;
           //0b10100001;  转换十六进制为0xa1           相同为1 不同为0     "~"取反 
 printf("%0x\n",b & ~(1 << 3));
 printf("%0x\n",b & 0xa1);


 // 将变量c的第7位取反,其他位保持不变
 uint8_t c = 0b10101001;  // 0xa9
           //0b10000000;  
           //0b00101001;  转换十六进制为0x29           相同为0 不同为1     "^"取反符 
 printf("%0x\n",c ^ (1 << 7));
 printf("%0x\n",c ^ 0x80);


 // 将变量d的第0位和第7位取反
 uint8_t d = 0b10110011;  // 0xb3
           //0b10000001;
           //0b00110010;  转换十六进制为0x32
 printf("%0x\n",d ^ (1 << 0 | 1 << 7));
 printf("%0x\n",d ^ 0x81);


 // 检查变量e的第7位是否为1,如果是则输出"Bit is set",否则输出"Bit is not set"。
 uint8_t e = 0b10110011;
 if(e & (1 << 7)){
    printf("Bit is set");
 }else{
    printf("Bit is not set");
 }
 return 0;
}
2.编写一个程序,判断一个整数是否为偶数。
#include <stdio.h>
//编写一个程序,判断一个整数是否为偶数。
int main() {
 int num = NULL;                    //定义一个变量
 printf("请输入一个整数:");
 scanf("%d",&num);                  //用于接收变量
 if(num % 2 == 0){                  //将接收的变量%2判断是否为0
    printf("是偶数诶");              //如果为0执行这段代码并结束运行
 }else{
    printf("是基数诶");              //如果不为0则执行这段代码并结束运行
 }
 printf("%d",num);
 return 0;
}
3.从屏幕上输入一个学生的成绩(0 - 100),对学生成绩进行评定: < 60为E 60~69为D 70~79为C 80~89为B 90以上为A < 0或>100提示成绩输入出错
#include <stdio.h>

 /*
 从屏幕上输入一个学生的成绩(0 - 100),对学生成绩进行评定:
 < 60为E
 60~69为D
 70~79为C
 80~89为B
 90以上为A
 < 0或>100提示成绩输入出错
 */

int main() {
 int a = NULL;
 printf("请输入学生成绩:");
 scanf("%d",&a);
 if(a > 0 && a<60){
    printf("成绩E");
 } else if(a >60 && a <70){
    printf("成绩为D");
 }else if(a >70 && a <80){
    printf("成绩为C");
 }else if(a >80 && a <90){
    printf("成绩为B");
 }else if(a >90 && a <=100){
    printf("成绩为A");
 }
 else{
    printf("成绩有误");
 }
 return 0;
}
4.编写一个switch程序,根据用户输入的等级(A、B、C、D、E),输出对应的描述(优秀,良好,中等,及格,不及格)。
#include <stdio.h>

/*
    编写一个switch程序,根据用户输入的等级(A、B、C、D、E),输出对应的描述(优秀,良好,中等,及格,不及格)。
*/


int main() {
 int a;
 printf("请输入一个等级(A、B、C、D、E):");
 scanf("%c",&a);
 switch(a){
    case 'A':
        printf("优秀\n");
        break;
    case 'B':
        printf("良好\n");
        break;
    case 'C':
        printf("中等\n");
        break;
    case 'D':
        printf("及格\n");
        break;
    case 'E':
        printf("不及格\n");
        break;
    default:
        break;
 }

 return 0;
}
5.输出100以内能被7整除的数,分别用for循环和while循环完成
```
#include <stdio.h>
/*
输出100以内能被7整除的数,分别用for循环和while循环完成
*/
int main() {
    // 使用for循环
    for(int i = 0; i < 100; i++) { // 从0到99遍历
        if(i % 7 == 0) { // 判断是否能被7整除
            printf("%d\n", i); // 输出能被7整除的数
        }
    }

    printf("---------------------分---------------------割---------------------线---------------------");

    // 使用while循环
    int a = 0; // 初始化a为0
    while(a < 100) { // 当a小于100时循环执行
        if(a % 7 == 0) { // 判断是否能被7整除
            printf("%d\n", a); // 输出能被7整除的数
        }
        a++; // a自增1
    }

    return 0;
}
```
6.实现1~100偶数和累加,分别用for循环和while循环完成
#include <stdio.h>

int main() {
    int sum = 0;

    printf("使用for循环计算1~100偶数和的累加:\n");
    for (int i = 2; i <= 100; i += 2) { // 循环从2开始,每次增加2
        sum += i; // 将偶数累加到sum中
    }

    printf("累加结果为:%d\n", sum);

    int sum2 = 0;
    int num = 2;

    printf("使用while循环计算1~100偶数和的累加:\n");
    while (num <= 100) { // 当num小于等于100时,执行循环
        sum2 += num; // 将偶数累加到sum2中
        num += 2; // num递增2
    }

    printf("累加结果为:%d\n", sum2);

    return 0;
}
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值