C语言笔记第十一课

一、作业内容

1. Sn=a+aa+aaa+…+aa…a 之值,其中 a 是一个数字, n 表示 a 的位数, a n 由键盘输入。例如:
2+22+222+2222+22222( 此时 a=2,n=5).
构造数字的方法如下 :

 

 

int main()
{
int a;
int n;
scanf("%d%d",&a,&n);
int sum=0;//和
int tmp=0;//当前值
for(int i=1;i<n;i++)
{
tmp=sum*10+a;//构造新数字
sum+=tmp;
}
printf("%d\n",sum);
return 0;
2. 给定一个整数可能为正 ,0, 负数 , 统计这个数据的位数 . 例如 1234567 输出 7 ; -12345678 输出 8 ;0输出 1

 

 

int main()
{
long long m;
long long n;
scanf("%lld",&n);
m=n;
int count=0;//位数
do
{
count++;
n/=10;//舍弃个位
}while(n!=0);
printf("%lld是%d位数\n",m,count);
return 0;
}
3. 给定一个整数可能为正 ,0, 负数 , 从右往左输出这个数据的每一位 .
例如 1234567 输出 7 6 5 4 3 2 1
例如 -12345678 输出 -8 7 6 5 4 3 2 1

 

int main()
{
long long n;
scanf("lld",&n);
if(n<0)
{
printf("-");
n=-n;
}
do
{
printf("%d",n%10);//得到个位
n/=10;
}while(n!=0);
return 0;
}

 4.给定一个整数可能为正,0,负数,顺序输出这个数字的每一位.

例如 1234567 输出 1 2 3 4 5 6 7
例如 -123456789 输出 -1 2 3 4 5 6 7 8 9

 

int main()
{
long long n;
scanf("%lld",&n);
if(n==0)
{
printf("0\n");
return 0;
}
int count=0;//位数
long long m=n;
do
{
n/=10;//舍弃个位
count++;
}
int power=pow(10,count-1);
m=n;
if(n<0)
{
printf("-");
return 0;
}
while(n!=0)
{
printf("%d\n",n/power);
n%=pow;
power/=10;
}
return 0;
}

二、上课内容

进制 :
按权展开求和
十进制 (0~9):123.45 = 1 10^2 + 2 10^1 + 3 10^0 + 4 10^-1 + 5*10^-2
二进制 (0~1):1010.1 = 2^3+2^1+2^-1=10.5
八进制 (0~7):123 = 1 8^2 + 2 8^1+3 = 83
十六进制 (0~9,a~f/A~F):123=1 16^2+2 16+3=256+35=291
( 十进制 ) 计算机 ( 二进制 )
人能直接使用二进制吗 ? 01011010111101101111010110101011, 容易看错 , 人不能直接使用
二进制能转成十进制吗 ? 01011010111101101111010110101011, 计算量太大
八进制 : 把二进制数 , 合三为一 . 例如 001 011 010 111 101 101 111 010 110 101 011
1 3 2 7 5 5 7 2 6 5 3
13275572653 ( 历史遗留问题 ,CPU 中央处理器 32,64 , 都是 4 得倍数 )
十六进制 : 把二进制数 , 合四为一 , 例如 0101 1010 1111 0110 1111 0101 1010 1011
5 A f 6 F 5 a B
十六进制必须掌握 : 二进制合四为一为十六进制 , 十六进制 1 个拆成 4 个二进制
表示方法 : 八进制用 0 开头 , 十六进制用 0x 0X 开头
0x10 表示十六进制的 10, 转二进制为 0001 0000 , 转十进制为 16, 转八进制为 020
整型 :4 字节 ,1 字节 =8 ,1 位就是一个 0 或者 1
int main()
{
int a = 0x10;//十六进制
int b = 20;//十进制
int c = 020;//八进制
printf("%d,%d,%d\n",a,b,c);//16,20,16
printf("%x\n",a);//%x:输出十六进制数字
printf("%x\n",20);//14,
printf("%c,%d,%x\n",65,65,65);//'A',65,41
printf("%x,%X\n",20000,20000);//4e20,4E20
return 0;
}

 

int main()
{
int a = 20;
int b = 024;//0开头的数据表示八进制数字
int c = 0x14;//0x开头的数据表示十六进制
int d = 0b10100;//0b开头的数据表示二进制 (新标准增加的)
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值