C语言一些巧妙method

一:  一个巧妙的数据交换方法

#include<stdio.h>

void main()
{
	int x = 100;
	int y = 10;
	printf("x=%d,y=%d", x, y);

	//int t = x; //t=100,x=100,y=10
	//x = y;    //t=100,x=10,y=10
	//y = t;   //t=100,x=10,y=100

	              //x=100,y=10
	x = x + y;   //x=110,y=10
	y = x - y;  //x=110,y=100
	x = x - y; //x=10,y=100

	printf("\nx=%d,y=%d", x, y);
}

二:  goto和if实现循环功能  for

#include<stdio.h>

void  main(){
int i = 0;
for(i = 0;i < 100;i++){
printf("see you later %d",i);
}
}

void  main1(){
int i = 0;
METHOD: if( i < 100){
i++;
printf("see you later %d",i);
goto METHOD;
}
}


三: 复杂递归调用

//有50个台阶,一次可以走一步或者两步,//问,走完50个台阶,有多少个走法

//1个台阶   1
//2个台阶   11 2
//3个台阶	111 12  21
//4个台阶	1111 22  112 211 121
 //5       8
// 6       13
//7        21
//8        34
//9        55
//10       89

#include<stdio.h>
#include<stdlib.h>

int go(int n)
{
	if (n == 1)
	{
		return 1;
	}
	else if (n == 2)
	{
		return 2;
	}
	else
	{
		return go(n - 1) + go(n - 2);
	}
}

void main()
{
	printf("%d", go(10));
	getchar();
}


四: 任意数 转为 2到16进制  并表示出来

#include<stdio.h>
#include<stdlib.h>


void  transact(int data , int base)
{
	if (data==0)
	{
		return;
	}
	else
	{
		int x = data % base; 
		data /= base;

		transact(data,base);
	if(base <= 10)   printf("%d", x);   
        if(base > 10)  printf("%x", x);
	}
}

void main()
{
	int num , base;
	scanf("%d %d", &num,&base);
	if(base <= 0 || base > 16){
	printf(" error input because base between 1...16\n");
	return;
	}

	printf("number=%d  base=%d\n", num , base);
	transact(num,base);
    printf("\n");
}


五: 一个可变参数的例子

#include <stdio.h>
#include <stdarg.h>  //必须使用 stdarg.h 头文件,该文件提供了实现可变参数功能的函数和宏

// 函数 func() 最后一个参数写成省略号,即三个点号(...),省略号之前的那个参数必须是 int,代表了要传递的可变参数的总数
double average(int num,...)
{
    va_list valist;  //在函数定义中创建一个 va_list 类型变量 用于获得可变参数具体值,该类型是在 stdarg.h 头文件中定义
    double sum = 0.0;
    int i;
    va_start(valist, num); //使用 int参数个数 和 va_start 宏来初始化 va_list 变量为一个参数列表。宏 va_start 是在 stdarg.h 头文件中定义
    for (i = 0; i < num; i++)
    {
       sum += va_arg(valist, int);  // 使用 va_arg 宏和 va_list 变量来访问参数列表中的每个项
    }
    va_end(valist);  // 使用宏 va_end 来清理赋予 va_list 变量的内存
    return sum/num;
}

int main()
{
   printf("Average of 1, 2, 3, 4, 5, 6, 7 = %f\n", average(7, 1,2,3,4,5,6,7));
   printf("Average of 10 , 100 ,1000 = %f\n", average(3, 10,100,1000));
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值