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;
}