题目1:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)示例:
输入0输出0 输入1输出1
输入10输出89
方法:先写出前面几个数的跳法,然后发现是斐波那契数列。直接上手。
代码:
#include<stdio.h>
int main()
{
int i=0,s,k,t,m=1,n=0;
printf("台阶的阶数是");
scanf("%d",&k);
while(i<k)
{
s=n+m;
t=m;
m=s;
n=t;
i++;
}
printf("方法是%d种",s);
return 0;
}
运行结果:
题目二:顺时针螺旋矩阵
给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例1:
输入:
[1,2,3], [4,5,6], [7,8,9] 输出:[1,2,3,6,9,8,7,4,5]
方法:首先先确定好边界,在一个循环里面进行4次循环,并且判断是否结束。
代码:
#include<stdio.h>
int main()
{
int i,j,n,k=0,m,t=1;
scanf("%d%d",&n,&m);
int a[n][m];
for(i=0;i<n;++i)
for(j=0;j<m;++j)
scanf("%d",&a[i][j]);
int s=0,x=n-1,z=0,y=m-1;
while(k<n*m){
for(i=s,j=z;j<=y;j++){
if(k==n*m)
break;
printf("%d ",a[i][j]);k++;
}
++s;
for(i=s,j=y;i<=x;i++){
if(k==n*m)
break;
printf("%d ",a[i][j]);k++;
}
--y;
for(i=x,j=y;j>=z;j--){
if(k==n*m)
break;
printf("%d ",a[i][j]);k++;
}
--x;
for(i=x,j=z;i>=s;i--){
if(k==n*m)
break;
printf("%d ",a[i][j]);k++;
}
++z;
}
return 0;
}
运行结果:
题目3:做出一个进制转换,输入一个Int范围的十进制整数,输入一个你想转换的进制(2~16)进制。输出你的计算结果。
实例:
输入 243 2 输出 11110011(输入一个十进制的数243,对应转换的为2进制,输出结果11110011)
输入 243 16 输出结果为F3 输入 243 8 输出结果为363
方法:要搞懂进制到底是怎么转换的,然后其次是一个进制内的数如果超过了10就得用a,b,c,d,e,f来代替。
代码:
#include<stdio.h>
int main()
{
int a[100],i,j,n,t,m=0;
printf("请输入要转换的进制");
scanf("%d",&t);
printf("请输入要转换的数");
scanf("%d",&j);
for(i=0;;i++){
if(j<t)
{
a[i]=j;
m++;break;
}
a[i]=j%t;
j=j/t;
m++;
}
for(i=m-1;i>=0;i--)
{
switch(a[i]){
case 10:printf("a");break;
case 11:printf("b");break;
case 12:printf("c");break;
case 13:printf("d");break;
case 14:printf("e");break;
case 15:printf("f");break;
default :printf("%d",a[i]);break;
}
}
return 0;
}
运行结果: