如标题所言,今天是复习课也做了一些新练习,今天做了一个小测验,我发现我自己有很多不该错的题,原因就是记混了一些概念,也有一些不会的题,我要在这里做个总结,相当于一个错题本了。
错题记录&知识梳理
1.若float x ;x = 10/4 ; x的值是 。
这题是一个坑,x定义为float但是 10/4 的值为2,将2赋值给一个float类型的变量,x就等于2.00。
2.设有以下语句:int a=3,b=6,c; c=a^b<<2; 则c的二进制值是 。
这题是对位运算符优先级的考察,<< >> > & > ^ > |
3.&& 和 || 操作符不要功能记混(我就记混了,乐)
4.回文数的判断:形如12321
思路:将该数翻转过来,与原数据比较,比较核心的代码是:num = num*10 + shujju%10;这是将原数据翻转过来的方式,我认为这是一种很巧妙的方式。
int shuju = 12321;
int type = shuju;
int num = 0;
for(int i = 0;; i ++){
num = num*10 + shuju%10;
shuju /= 10;
if(shuju == 0){
break;
}
}
if(num == type){
printf("%d是回文数据\n");
}
5.素数的判断
老师教了我们一种很好的方法去判断素数,也是我之前没有想到的,利用公约数,素数的公约数是1和本身,可以用循环判断1-n/2之内是否有数可以被%为0,如果结果只有1,那么n这个数就是素数。文字描述有点麻烦下面用一段简单的代码来表示。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int sushu;
printf("请输入一个数\n");
scanf("%d",&sushu);
getchar();
int n = 0;
for(int i = 1; i <= sushu/2; i ++){
if(sushu % i == 0){
n ++;
}
}
if(n == 1){
printf("%d是素数\n",sushu);
}else{
printf("%d不是素数\n",sushu);
}
return 0;
}