寒假C练习_3

这个寒假打算学习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;
}

上一篇:【树】前缀树


下一篇:LCT 小记