数值传参
#include<stdio.h>
int func(int x,int y){
//int x = a, y = b;
printf("a + b = %d\n",x+y);
x++;
return x;
}
int main(){
int a = 3, b = 4;
a = func(a,b);//此处参数列表的作用:读取实参a,b的值,并且分别将他写入到形参x,y中去。把函数返回值赋值给a
printf("a + b = %d\n",a+b);
return 0;
}
地址传参
地址传参的目的是为了同步数据
#include<stdio.h>
/*
函数名:func
函数参数:int* pa,int* pb
函数返回值:void
函数功能:把传进来的地址里面的数据+1
*/
void func(int* pa,int* pb){
(*pa)++;
(*pb)++;
//pa就是&a,所以 *pa就是a本身
//pb和b同理
}
int main(){
int a = 2,b = 3;
func(&a,&b);
printf("%d %d\n",a,b);
return 0;
}
输入:2 3
输出:3 4
休眠函数sleep
/*
在主函数中,循环产生2个随机数,并且在循环内部,通过调用函数计算这两个随机数的和
如果觉得数据刷新太快,不便于查看结果,可以在每一次循环结束之前,使用函数sleep(n),来是程序休眠n秒
*/
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<time.h>
void func(int xa,int xb){
printf("%d\n",xa+xb);
}
int main(){
srand(time(0));
while(1){
int a = rand()%100;
int b = rand()%100;
func(a,b);
sleep(1);
}
return 0;
}
计算1~100内所有质数之和
/*
封装函数,实现功能:使用函数判断传入的参数是否为质数。
然后调用该函数,求出1~100所有质数的和
*/
#include<stdio.h>
/*
函数名:func
函数参数:int num
函数返回值:不是质数返回0,是质数返回该质数的值
函数功能:判断一个实数是不是质数
*/
int func(int num){
int i = 0;
if(num==1){return 0;}//1不是质数
for(i=2;i<num;i++){
if(num%i==0){
return 0;
}
}
return i;
}
int main(){
int i = 0;
int res = 0;
for(i=1;i<=100;i++){
res = res + func(i);
}
printf("%d\n",res);
return 0;
}
统计一个函数被调用了几次
#include<stdio.h>
/*
设计一个函数func:该函数能够准确的统计自身被调用的次数。
然后在主函数中调用若干次func,并且最终打印出总共调用了几次func
*/
void func(int* count){
(*count)++;
}
int main(){
int count = 0;
func(&count);
func(&count);
func(&count);
printf("%d\n",count);//调用了3次func,此时count的值为3
return 0;
}
设计容器添加、移除数据
#include<stdio.h>
/*
编写一个界面,界面中只有两个功能:
假设存在一个容器。
功能一:向容器中添加1个数据
功能二:从容器中移除1个数据
在反复执行若干次功能一和功能二后,打印当前容器中还有多少数据
*/
void func(int count){
printf("当前数据数量为:%d\n",count);
}
/*
函数名:insert
函数参数:int* count-指向容器的指针
函数返回值:void
函数功能:向容器添加一个数据,容器的值+1
*/
void insert(int* count){
printf("添加数据成功\n");
(*count)++;//注意:++的优先级比*的优先级要高
func(*count);
//在insert函数中,再次调用一个函数func,
//这个函数啥都不干,仅仅打印当前容器数据数量
}
/*
函数名:Remove
函数参数:int* count-指向容器的指针
函数返回值:void
函数功能:当容器等于0时结束,否则容器的值-1
*/
void Remove(int* count){
if(*count==0){return;}
printf("移除数据成功\n");
(*count)--;
}
int main(){
int count = 0;//容器
int ch = 0;
while(1){//一般设计界面时候都用循环while(1),条件满足退出
printf("1:添加数据\n");
printf("2:移除数据\n");
printf("3:打印当前数据数量\n");
printf("请选择:");
scanf("%d",&ch);
while(getchar()!='\n');
switch(ch){
case 1:
insert(&count);
break;
case 2:
Remove(&count);
break;
case 3:
printf("当前数据数量为:%d\n",count);
break;
default:
break;
}
printf("\n");
}
return 0;
}