这个寒假打算学习C语言。
仅作个人纪录,无参考价值。
如有错误和问题,欢迎指出和纠正。
谢谢。
下面开始今天的练习:
1.编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
#include<stdio.h>
int main()
{
char ch=0;
printf("请输入您要转换的字符:");
while((ch=getchar())!=EOF)//输入字符
{
if(ch>=65 && ch<=90)
{
ch+=32;
putchar(ch);//输出字符
}
else if(ch>=97 && ch<=122)
{
ch-=32;
putchar(ch);
}
else if(ch>=48 && ch<=57)
{
}
}
return 0;
}
2.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定。
#include<stdio.h>
void cheng(int x)
{
int i,j;
for(i=1;i<=x;i++)
{
for(j=1;j<=i;j++)
{
printf("%2d×%d=%-5d",i,j,i*j);//%xd右对齐,%-xd左对齐
}
printf("\n");
}
}
int main()
{
int n;
printf("请输入你想要的乘法表阶数:");
scanf("%d",&n);
cheng(n);
return 0;
}
3.递归和非递归分别实现求第n个斐波那契数。
非递归:
#include<stdio.h>
int main()
{
while(1)
{
long n,i,t,sum=0,n1=0,n2=1;
printf("\n请问你想求的斐波那契数是第几项:");
scanf("%d",&n);
if(n==1)
sum=0;
else if(n==2)
sum=1;//前两个特殊情况单独分支
else
for(i=3;i<=n;i++)
{
sum=n1+n2;
n1=n2;
n2=sum;
}
printf("\n第%d个斐波那契数列是%d\n",n,sum);
}
return 0;
}
递归:
#include<stdio.h>
int fibno(int i)
{
if(i==1)
return 0;
else if(i==2)
return 1;
else
return fibno(i-1)+fibno(i-2);
}
int main()
{
int n;
printf("\n请问你想求的斐波那契数是第几项:");
scanf("%d",&n);
printf("\n第%d个斐波那契数列是%d\n",n,fibno(n));
return 0;
}
4.使用递归实现 n^k
#include<stdio.h>
int nk(int x,int y)
{
if(y==0)
return 1;
else if(y>0)
{
y--;
return nk(x,y)*x;
}
else
return 0;
}
int main()
{
int n=2,k=3;
printf("请分别输入你想要乘的次数和数字:");
scanf("%d %d",&n,&k);
printf("n^k=%d\n",nk(n,k));
return 0;
}