C语言练习题

简介: C语言练习题

一、

题目:

小明写了一个十六进制数ABCDEF,他问你对应的十进制数是多少?

思路:不能被带偏,想要自己将十六进制数转化位十进制数,再输出,其实不需要。只需要利用printf函数使用格式化打印%d即可。

但需要输入前缀0x,不然以为是字符串!

%x是打印十六进制数,十六进制的字母大小写区分和你格式化打印时的x有关。

源码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
printf("%d\n", 0xABC);
printf("%x", 0xABCDE);
return 0;
}

输出结果:

image.png

二:

题目:

不使用累计乘法的基础上,利用移位运算符<<计算2的n次方。

思路:

左移运算符对1的二进制位进行左移,每左移一位就是相当于乘一次2

image.png

源码:

#include<stdio.h>
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n );
printf("%d", 1 << n);
return 0;
}

三、

题目:

变种水仙花数:把任意的数字,从中间拆分成两个数字,比如1461可以拆分成(1和461),(14和61),(146和1),如果拆分后的乘积之和等于自身,则满足题目要求。

例如1461=1461+1461+146*1.求出5位数中所有满足题目要求的数字。

思路:

之前一直不会做这种题,把一个数字拆分成上述的形式(想用字符串,可是还要转化为十进制)。

经过老师指点,这类题目有特殊的算法,将这个数字分别/10,%10,就可以得到准确的十进制位,/100,%100以此类推

只要 求一个数字的 后几位 或者 前几位 就可以%几位数!

image.png

源码:

#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
for (int i=10000;i<=99999;i++)
  {
int sum = 0;
for (int k=10;k<=10000;k*=10)
    {
a = i / k;
b = i % k;
sum += a * b;
    }
if (i == sum)
    {
printf("%d ", i);
    }
  }
return 0;
}
相关文章
|
C语言
C语言练习题
C语言练习题
|
C语言
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
151 0
|
C语言
c语言编程练习题:7-49 Have Fun with Numbers
c语言编程练习题:7-49 Have Fun with Numbers
175 0
|
C语言
c语言编程练习题:7-46 爬动的蠕虫
c语言编程练习题:7-46 爬动的蠕虫
179 0
|
C语言
c语言编程练习题:7-60 Welcome to You!
c语言编程练习题:7-60 Welcome to You!
189 0
|
C语言
c语言编程练习题:7-52 求简单交错序列前N项和
c语言编程练习题:7-52 求简单交错序列前N项和
117 0
|
C语言
c语言编程练习题:7-51 求奇数分之一序列前N项和
c语言编程练习题:7-51 求奇数分之一序列前N项和
171 0
C语言练习题 温度自动转换‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪
C语言练习题 温度自动转换‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪
|
C语言 数据安全/隐私保护
C语言练习题
C语言练习题
96 1
|
人工智能 算法 Java