C语言练习题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

输出结果:

C语言练习题_十六进制

二:

题目:

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

思路:

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

C语言练习题_#include_02

源码:

#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以此类推

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

C语言练习题_字符串_03

源码:

#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语言练习题的主要内容,如果未能解决你的问题,请参考以下文章

牛客练习赛18

C语言 递归算法练习(阶乘,斐波那契..)

(C语言试题练习)用递归方式 求1——n之间的阶乘

(C语言试题练习)用递归方式 求1——n之间的阶乘

(C语言试题练习)用递归方式 求1——n之间的阶乘

Python练习题 037:Project Euler 009:毕达哥拉斯三元组之乘积