C语言的一些基本例题
全部例题来自于C语言王道训练营 链接如下
B站链接.
书籍:《跟“龙哥”学C语言编程》
func.h
#include<stdio.h>
#include<stdlib.h>
//函数声明
int printstar(int i);
void print_message();
func.c
#include"func.h"
//函数具体内容
int printstar(int i)
{
printf("***********\n");
printf("printstart %d\n", i);
return i + 3;
}
void print_message()
{
printf("how do you do\n");
printstar(3);
}
main.c
#include"func.h"
int main()
{
int a = 10;
a = printstar(a);
print_message();
printstar(a);
system("pause");
return 0;
}
运行结果
***********
printstart 10
how do you do
***********
printstart 3
***********
printstart 13
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//全局变量i存储在数据段,所以main函数和print函数都是可见的
int i = 10;//全局变量
void print(int i)
{
//如果局部变量与全局变量重名,那么将采取就近原则,即实际获取和修改的值是局部变量的值。
i = 20;
printf("print i=%d\n", i);
}
int main()
{
printf("main i=%d\n", i);
i = 5;
print(i);
system("pause");
return 0;
}
运行结果
main i=10
print i=20
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
#include<setjmp.h>
jmp_buf envbuf;
//我们的进程执行到setjmp位置时,通过setjmp函数保存了进程的上下文(处理器运行进程期间,运行进程的信息被存储在处理器的寄存器和高速缓存中,执行的进程被加载到寄存器的数据集被称为上下文),所以当执行到函数b时,可以通过longjmp恢复envbuf的操作
void b()
{
printf("I am b func\n");
longjmp(envbuf, 5);//回到setjmp位置
}
void a()
{
printf("before b(),I am a func\n");
b();
printf("after b(),I am a func\n");
}
int main()
{
int i;
i = setjmp(envbuf);
if (i == 0)
{
a();
}
system("pause");
return 0;
}
运行结果
before b(),I am a func
I am b func
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//求n的阶乘
int f(int n)
{
if (n == 1)
{
return 1;
}
return n * f(n - 1);
}
//走楼梯
int step(int n)
{
if (1 == n)
{
return 1;
}
if (2 == n)
{
return 2;
}
return step(n - 1) + step(n - 2);
}
int main()
{
int n;
int ret;
scanf("%d", &n);//输入数字大小
ret = f(n);
printf("%d的阶乘为%d\n",n, ret);
scanf("%d", &n);//输入台阶数
ret = step(n);
printf("%d上楼梯的方法有%d\n",n, ret);
system("pause");
return 0;
}
运行结果
10
10的阶乘为3628800
5
5上楼梯的方法有8
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//定义hanoi函数,将n个盘从第one柱接触第two柱,移到第three柱
void hanoi(int n, char one, char two, char three)
{
void move(char x, char y);//对move函数的声明
if (1 == n)
{
move(one, three);
}
else {
hanoi(n - 1, one, three, two);
move(one, three);
hanoi(n - 1, two, one, three);
}
}
void move(char x, char y)
{
printf("%c-->%c\n", x, y);
}
int main()
{
void hanoi(int n, char one, char two, char three);
//对hanoi函数的声明
int m;
printf("input the number of diskes:");
scanf("%d", &m);
printf("The step to moveing %d diskes:\n", m);
hanoi(m, 'A', 'B', 'C');
system("pause");
return 0;
}
运行结果
input the number of diskes:3
The step to moveing 3 diskes:
A-->C
A-->B
C-->B
A-->C
B-->A
B-->C
A-->C
请按任意键继续. . .
下面展示一些 可运行的代码
。
func.h
#include<stdio.h>
#include<stdlib.h>
void print();
func.c
#include "func.h"
//用extern来声明外部变量,以扩展外部变量的作用域。
extern int k;//借用main.c文件的全局变量k
//static修饰的函数,函数只能在本函数、本文件中使用
void print()
{
static int t = 0;//只能初始化一次
t++;
printf("print excute %d\n", t);
printf("print k=%d\n", k);
}
main.c
#include"func.h"
extern int k;
void print1()
{
printf("print1 k=%d\n", k);
}
int k = 10;//static修饰全局变量,该变量不能被其他文件借用
//定义全局变量k时加上static后func.c无法借用
int main()
{
int i = 10;
{
int j = 5;
//局部变量的有效范围是离自己最近的花括号
}
printf("i=%d k=%d\n", i, k);
print();
print1();
system("pause");
return 0;
}
运行结果
i=10 k=10
print excute 1
print k=10
print1 k=10
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//函数每次调用结束后,其内部使用的局部变量空间就会被释放,下次调用add函数时,i会被重新分配空间。
void add()
{
static int j = 0;
auto int i = 0;
i = i + 1;
j = j + 1;
printf("i=%d j=%d\n", i,j);
}
int main()
{
printf("第一次执行:\n");
add();
printf("第二次执行:\n");
add();
system("pause");
return 0;
}
运行结果
第一次执行:
i=1 j=1
第二次执行:
i=1 j=2
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
void swap(int* a, int* b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
int main()
{
int a, b;
int *p, *q;
a = 16;
b = 64;
p = &a;
q = &b;
swap(p, q);
printf("*p=%d,*q=%d\n", *p, *q);
//swap(&a, &b);
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
运行结果
*p=64,*q=16
a=64,b=16
请按任意键继续. . .
第一次发表一篇完整的博客,对于一些遗漏,读者不要太过深究~
比较适合新手打基础大佬请绕路~
希望这些可以帮助你更好的理解C语言
马上就考研了 我居然还在纠结一些基础 真是闲的闲的闲的闲*10000!
过几天在更新后几章的内容
欢迎大家评论、收藏、点赞 !!!