一: 一个巧妙的数据交换方法
#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));
}