程序练习总结1(多项式结果,数字排序,回文数,兔子问题,指针排序)

1、利用  变量 = -变量,来实现数值的正负号规律性变换。

/*
	2019年7月23日23:22:00
	功能:计算多项式1-1/2+1/3-1/4+···+1/99-1/100的结果。
	所得:数值正负号有规律变换,可以通过  sign = -sign来实现。
*/
#include <stdio.h>

int main(void)
{
	double d;
	double d2 = 0;//计算结果
	double i;
	int sign = -1;

	for(i = 1;i<=100;i++)
	{
		sign = -sign; //控制符号变换。
		d = sign/i;
		d2 = d2 + d;	
	}
	printf("d2 = %f",d2);

	return 0;
}
/*
————————
输出结果:
d2 = 0.688172
————————
*/

2、对输入的数字进行排序。

/*
	2019年7月24日21:26:02
	功能:随机输入三个数字,然后排序。
	重点:利用if进行判断,刚开始思路错误。
*/

#include <stdio.h>

int main(void)
{
	int a, b, c;
	int t;

	printf("请输入你的三个整数:");
	scanf("%d%d%d",&a,&b,&c);
	
	if(a < b)
	{
		t = a;
		a = b;
		b = t;
	}
	if(a < c)
	{
		t = a;
		a = c;
		c = t;
	}
	if(b < c)
	{
		t = b;
		b = c;
		c = t;
	}

	printf("%d,%d,%d",a,b,c);

	
	return 0;
}

3、回文数。数字操作,将数字翻转。

/*
2019年7月28日19:16:10
功能:求一个数字时不是回文数(正写和反写一样)
重点:如何讲一个数字反过来。
*/
#include <stdio.h>

int main(void)
{
	int val; //输入数字储存
	int m;  //输入数字
	int sum = 0;
	
	printf("请输入你的数字:");
	scanf("%d",&val);
	
	m = val;
	while(m)
	{
		sum = sum * 10 + m%10;    //通过对10取余,得到最后一位数字。
		m /= 10;
	}
	
	if(sum == val)
		printf("是!");
	else
		printf("不是");
	
	return 0;
}

4、菲波拉契数列。

/*
2019年7月28日19:51:32
功能:菲波拉契数列,1,2,3,5,8.....
重点:第三项开始,F3 = 前面两项之和。
*/

# include <stdio.h>

int main(void)
{
	int f1, f2, f3;
	int i, n;

	f1 = 1;
	f2 = 2;
	
	printf("请输入你的数字:");
	scanf("%d",&n);
	
	if(n == 1)
		f3 = 1;
	else if(n == 2)
		f3 = 2;
	else
		for(i=3; i<= n; i++)
		{
			f3 = f1 + f2;    //本项数字等去前两项数字之和。
			f1 = f2;         //赋值前两项数字、  
			f2 = f3;
		}

	printf("%d",f3);

	return 0;
}

5、使用指针为三个输入的数字进行排序。

/*
	2019年8月4日09:10:00
	功能:为三个输入的数字进行从大到小的排序。
	重点:指针的应用。
*/
#include <stdio.h>

void exchange(int * p1,int * p2,int * p3);
void swap(int * p1,int * p2);

int main(void)
{
	
	int a, b, c;
	char ch;
	ch = 'y';
	int * p1;
	int * p2;
	int * p3;
	p1 = &a;
	p2 = &b;
	p3 = &c;
	
	while(ch == 'y')
	{
		printf("请输入你需要比较的三个数字(用逗号分开):");
		scanf("%d,%d,%d",p1,p2,p3);   //用户输入需要比较的三个数字。
		exchange(p1,p2,p3);
		printf("%d>%d>%d",a,b,c);		
		printf("继续 y ,其他键退出。");
		while(getchar() != '\n')    //去除垃圾值的影响,方便下次输入。
			continue;
		scanf("%c",&ch);
	}

	return 0;
}

void exchange(int * p1,int * p2,int * p3) // 为三个数字比较大小。
{
	if(* p1 < * p2)
		swap(p1,p2);
	if(* p1 < * p3)
		swap(p1,p3);;
	if(* p2 < * p3)
		swap(p2,p3);;
}

void swap(int * p1,int * p2) // 通过指针来为两个变量交换。
{
	int t;
	t = * p1;
	* p1 = * p2;
	*p2 = t;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值