C语言怎么用自定义函数将两个数交换要用函数实现两个数的交换,则函数参数必须定义为指针形式,否则函数中对数值的修改将不会影响主调函数,这是C语言的规则 。
所以,以整型为例 , 自定义函数书写如下:
void swap_int(int*a,int*b)
{
int t;
t = *a;
*a=*b;
*b=t;
}
c语言,交换函数交换函数很好写 。
比较难的读文件 。文件格式 与 读语句要 相配 。特别是 多余 的 空行和回车键 。
调试时用 printf 语句 检查 读得对不对 。
fgets() 函数可用来读整行的字符串,含回车键 。
#include stdio.h
#includestdlib.h
void jh(char *a, char *b){
char x[100];
strcpy(x,a),strcpy(a,b),strcpy(b,x);
}
int main(){
FILE *fp;
int n,i,j;
char a[100];
char b[100];
char ch;
if((fp=fopen("2.2.txt","r"))==NULL){
printf("Error");
exit(0);
}
fgets(a,100,fp);
sscanf(a,"%d",n);
//printf("n=%d\n",n);
for(j=1;j=n;j++){
fgets(a[0],100,fp);
//printf("read a: %s",a);
fgets(b[0],100,fp);
// printf("read b: %s",b);
printf("Case %d\n",j);
jh(a,b);
printf("%s",a);
printf("%s",b);
fgets(a[0],100,fp);// 假定2组数间只有一个空白行,则用它跳过 。
}
fclose(fp);
return 0;
}
5、使用C语言编写一个函数 , 用于交换两个变量的值(地址传递) 。不知道你要交换的两个变量类型,所以这里以整型数据交换为例,以下swap函数实现了交换两个整型变量值的功能:
#include stdio.h
// 交换给定指针指向整型变量的值 。
// 参数:
//a - 指向第一个变量的指针
//b - 指向第二个变量的指针
void swap(int* a, int * b);
int main(int argc, int argv)
{
int a = 3, b = 5;
printf_s("交换前:a = %d, b = %d\n", a, b);
swap(a, b);
printf_s("交换后:a = %d, b = %d\n", a, b);
return 0;
}
// 交换给定指针指向整型变量的值 。
// 参数:
//a - 指向第一个变量的指针
//b - 指向第二个变量的指针
void swap(int* a, int* b)
{
// 声明一个临时变量,保存第一个指针指向变量
// 的值 。
// 其中 *a 是取出 a 指针指向变量的值
int temp = *a;
// 将 b 指针指向的值赋值给 a 指针指向变量
(*a) = (*b);
// 将临时变量 temp 中保存的 a 指针指向变量的值赋值给
// b 指针指向的变量 。
(*b) = temp;
}
以上代码运行结果如下:
以下代码实现了使用宏定义作为模板 , 声明不同类型交换函数的功能,以下以声明double和float为例:
#include stdio.h
// 声明一个函数代码模板,逻辑参考 swap(int* a, int* b)
#define DEF_SWAP_FUNC(Type) void swap_##Type(Type* a, Type* b) \
{ \
Type temp = (*a); \
(*a) = (*b); \
(*b) = temp; \
}
// 使用模板声明并实现一个 double 类型变量交换函数,函数名为 swap_double
DEF_SWAP_FUNC(double)
// 使用模板声明并实现一个 float 类型变量交换函数,函数名为 swap_float
DEF_SWAP_FUNC(float)
int main(int argc, int argv)
{
// double 类型数据交换
double da = 5.6, db = 3.5;
printf_s("double 交换前:da = %lf, db = %lf\n", da, db);
swap_double(da, db);
printf_s("double 交换后:da = %lf, db = %lf\n", da, db);
// float 类型数据交换
float fa = 3.4, fb = 6.8;
printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);
swap_float(fa, fb);
printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);
return 0;
推荐阅读
- netframework4.0安装不上,netframework46安装不了怎么办
- 角色扮演手游新出的游戏,最新的角色扮演手游
- 虚拟直播电脑主机配置推荐,虚拟直播电脑主机配置推荐哪款
- c语言函数后面直接括号 c语言函数后面一个是什么意思
- 关于wordpress新建页面没有模版的信息
- 安卓医学翻译软件,手机医学翻译软件
- 初代暗影格斗游戏,暗影格斗是谁制作的
- c语言终止全部嵌套函数 c语言中断嵌套
- 什么是cpu的步进值,cpu步进a为什么不好