一、主要内容:
1. sizeof函数和strelen函数
sizeof判断数据类型(表达式)的长度,strlen统计字符串长度,到0或\0为止。
2. 负数在内存中以补码(反码+1)形式储存,最高位是符号位,0正1负。
3. 不同类型数据间运算时,需要转换类型(小转大),例如有符号数(-128~127)转换成无符号(0~255),负数符号也会参与运算。
4. const修饰只读变量,不可直接通过变量名更改对应内存中的值。
5. 运算符:
(1) /和%常用来求出某数据的各个位数,从而可以对它们做新的操作。以下是将正确输入的数反向输出的代码:
int a,ge,shi,bai;
scanf("%d",&a);
if(a>99&&a<1000) //锁定在3位数字
{
ge = a%10;
shi = a/10%10;
bai = a/100;
}
else
{
printf("input error\n");
}
printf("%d\n",ge*100+shi*10+bai);
(2) <<和>>可让数据逐位左移右移,下面是以此以此实现判断字符中1的个数的代码:
char a,b,i;
scanf("%c",&a);//8位
for(i=0;i<8;i++)
{
if((a<<i)&0x80)
{
b++;
}
}
printf("%d\n",b);
6. continue与break的区别:前者条件达成时可跳出本层循环,后者跳出全套循环。
二、作业:
1.求两个数的最大公约数,最小公倍数。
int max,min,mul,temp;
printf("Please input two num.\n");
scanf("%d,%d",&max,&min);
mul = max*min; //求出两数据的乘积
if(max<min)//判断输入的两个数据的大小判断是否进行位置的交换
{
temp = max;
max = min;
min = temp;
}
while((max%min)!='\0')//辗转相除求出最大公约数
{
temp = min;
min = max%min;
max = temp;
}
printf("最大公约数:%d.\n",min);
printf("最小公倍数:%d.\n",mul/min);
结果截图:
2. 200~300之间不能被3整除的数,5个一行输出。
int i,j;
for(i=200; i<=300; i++)
{
if(i%3!=0)
{
printf("%5d",i);
if((++j)%5==0)
{
printf("\n");
}
else
printf("\t");
}
}
return 0;