题目:手写代码:判断一个数(int类型的整数)中有有多少1
题目:手写代码:判断一个数(转换成二进制表示时)有几个1
#include <stdio.h>
int main(int argc, const char *argv[])
{
//判断一个数(int类型的整数)中有有多少1
//不断除以2取余,余为1说明当前位数是奇数;判断之后“/10”取整判断下一位
int num=45281;
int k=0;//计数,等于1的个数
while(num)
{
if(num%2)//当前位置是否为1
k++;
num/=10;//判断下一个位数
}
printf("有%d个\n",k);
num=45281;
//判断一个数(转换成二进制表示时)有几个1;
//使用十进制整数转二进制的方法:不断除以2直到被除数为0;
for(int i=0;num;i++)//循环:直到被除数为0
{
if(num%2)//判断当前位置是否为1
k++;//计数++1
num/=2;
}
printf("有%d个\n",k);
return 0;
}
题目:float xx;x=10/4;x的值为?
答:2.0;注意float为小数类型;相当于float x=2;结果为2.0;
题目:timu阅读程序:输出结果为?
看不到结束条件,忘记了字符串后面有个‘\0’;*s=='\0'时候跳出循环
题目:int a[5][4],*p=a[0];则*(p+2*4+3)为a[?][?]
数组a有四列,p+4可以视作p向下偏移一列;+3视作向右偏移3个数组成员;
指针p向下移动2行,向右移动3列;由于a[0][0]变为a[2][3];
答:a[2][3]
题目:实现类似atoi函数,将字符串“123456”,转换成数值123456,int atoi(char *str)
如何将字符1转为整数1?
思路:、
int num='\3'-’\0‘;字符可以相减可以得到他们(ASCII码)相差的距离;
怎样将对应位置上的数对应上去?
思路:
指针目前指向字符串首地址;
将指针所在的数据转为int型给num;
num扩大十倍原来的位置变为0;
指针此时指向下一位;
不用知道字符串有多少位
int newatoi(char*str)
{
if(NULL==str)
{
return -1;
}
int num=0;
while(*str!='\0')
{
num*=10;//扩大10倍:新的数补到个位;
num+=*str-'0';//将字符型的1转为int型的1;并将值加到num上面;
str++;
}
return num;
}
题目:阅读程序:执行的结果为?
define不会对定义的内容施加括号
替换后:(N+1+1) * N+1 /2→(2+1+1)*2+1/2==8
知道,但是手欠加了括号