C语言学习中5道印象深刻的题
斐波那契数列,阶乘,阿姆斯特朗数列,秒转时间,数的组合
目录
前言
在这里分享一些自己学习C语言过程中练习的题
`
正文内容,下面案例可供参考
一、阿姆斯特朗数的求解
对于一个三位数abc,它满足以下条件:
a^3 + b^3 + c^3 = abc
例如,153 就是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
代码如下:
//计算100-1000的阿姆斯特朗数
#include <stdio.h>
int main(){
int num,i=0;
int n1,n2,n3;
for ( num = 100; num<1000; num++)
{
n1 = num/100;
n2 = (num%100)/10;
n3 = num%100%10;
if (n1*n1*n1+n2*n2*n2+n3*n3*n3==num)
{
printf("%d\n",num);
i++;
}
}
printf("综上所述共有%d个阿姆斯特朗数",i);
return 0;
}
运行结果如下:
153
370
371
407
综上所述共有4个阿姆斯特朗数
二、阶乘
1.阶乘的解释
代码如下(示例):
阶乘是指自然数 n 与比它小的正整数之积,通常用符号 “n!” 表示,其定义如下:
n! = n × (n-1) × (n-2) × … × 3 × 2 × 1
其中,0 的阶乘被定义为 1。
例如:
5! = 5 × 4 × 3 × 2 × 1 = 120
4! = 4 × 3 × 2 × 1 = 24
3! = 3 × 2 × 1 = 6
2! = 2 × 1 = 2
1! = 1
#include <stdio.h>
int g(int n){
if(n==1){
return 1;
}
else{
return n*g(n-1);//利用了函数的递归
}
}
int main(){
int a;
printf("这个是一个阶乘程序\n");
printf("请输入一个整数:\n");
scanf("%d",&a);
printf("%d",g(a));
return 0;
}
这个是一个阶乘程序
请输入一个整数:
6
720
三.斐波那契数列
代码如下(示例):
#include <stdio.h>
// 斐波那契数列F(n)=F(n - 1)+F(n - 2)
// 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
//x1 = 1 ,x2 =1
int f(int i){
if (i==1||i==2)
{
return 1;
}
else{
return f(i-1)+f(i-2);
}
}
int main(){
int result;
printf("请输入你要求的斐波那契的项数\n");
scanf("%d",&result);
printf("第%d项的值是%d\n",result,f(result));
return 0;
}
四,1,2,3,4四个数可以组成几个互不相等的三位数
代码展示
//1234四个数可以组成几个互不相等的三位数
#include <stdio.h>
int main(){
int num[]={1,2,3,4};
int i,j,k,x=0;
int a,b,c;
int result;
for(i=0;i<4;i++){
a = num[i];
for (j= 0; j < 4; j++)
{
b = num[j];
if(a!=b){
for (k= 0; k < 4; k++)
{
c = num[k];
if(c!=a&&c!=b){
result = (num[i]*100)+(num[j]*10)+(num[k]*1);
printf("%d\n",result);
x++;
}
}
}
}
}
printf("共有%d种结果\n",x);
return 0;
}
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
共有24种结果
五,将一个以秒为单位的数(十进制)转化为‘几时几分几秒’
代码展示
#include <stdio.h>
int main(){
int t;
printf("请输入数字: ");
scanf("%d",&t);
// 668668是一个以秒为单位的值
int hour ,minute , second;
hour = t /3600;
minute = (t %3600)/60;
second = (t%3600)%60;
printf("时间是:%d时%d分%d秒\n",hour,minute,second);
return 0;
}
结果是:
请输入数字: 668668
时间是:185时44分28秒