学习Java的the third week并且复习C语言
1.import 导入用不用com的问题
导入系统自带类(不带 com)
import java.util.Scanner;
import java.util.ArrayList;
导入别人写的工具类(带 com)
import com.utils.StringUtil;
2.位与&
&:按位与,二进制逐位对比
同 1 为 1,有 0 则 0
把两个十进制数 → 转二进制
上下对齐,逐位做 & 运算
结果二进制转回十进制
举例
例:3 & 5
3 二进制:011
5 二进制:101
0 1 1
& 1 0 1
--------0 0 1
作用
判断奇偶
n & 1
结果 = 1 → 奇数
结果 = 0 → 偶数
判断是否为2的幂次方
原理
2 的整数次幂二进制只有单独一个 1
例:
2 → 10
4 → 100
8 → 1000
减 1 后,唯一的 1 变 0,后面全变 1:
2-1=1 → 01
4-1=3 → 011
8-1=7 → 0111
按位与 & 后,全部抵消为 0
8 → 1000
7 → 0111
8&7 → 0000 = 0
成立,是2的幂
3.强制类型转换
目标类型 变量 = (目标类型) 原数据;
自动转换 vs 强制转换
自动转换:小→大,自动完成
强制转换:大→小,必须加 (类型)
// double 转 int
double d = 7.8;
int a = (int)d;// int 转 byte
int num = 60;
byte b = (byte)num;
4.%问题
1.输入输出 85% 这种格式
#include <stdio.h>
int main()
{int a;char sign;scanf("%d%c", &a, &sign);printf("%d%%", a);return 0;
}
2.计算后拼接输出带 %
int score = 78;
// 输出 78%
printf("%d%%\n", score);
double rate = 0.65;
printf("%.1f%%\n", rate*100);
5.读取整行字符串
前面 scanf,先清回车;
要用整行,就用 fgets;
读完一行,删掉换行。
6.理解学习敏感词过滤题目
给定一段用户输入的文本和一个敏感词列表,程序需要将文本中出现的所有敏感词替换为相同数量的星号(*),并统计被替换的敏感词总数量。



总结方法
fgets()
读取一整行字符串(带空格)
getchar()
读取单个字符,用来清空缓冲区换行
while(getchar()!='\n');
getchar();
strlen()
求字符串长度
strcmp()
比较两个字符串是否相等
strcmp(s1,s2)==0 代表相等
strcat()
字符串拼接(把内容拼接到后面)
strcspn()
找到\n的位置,用来去掉 fgets 读取的换行符
单个字符用单引号 ''
一串字符用双引号 ""
