其他分享
首页 > 其他分享> > C语言经典笔试题——交换两个变量的值(函数形式)(C classic written questions-swap the values of two variables in function fo

C语言经典笔试题——交换两个变量的值(函数形式)(C classic written questions-swap the values of two variables in function fo

作者:互联网

 

C语言笔试题中经常会遇到的题目——交换2个变量的值。这时候大家就要注意了,这个问题虽然简单,但是你要认真审题,看是否让你把这个功能写成函数形式。

(1)如果不需要写成函数形式,那就是以下代码:大学的时候大家应该都学过的,交换C语言中两个变量的值核心是一定要借助一个临时变量:

 1 #define _CRT_SECURE_NO_WARNINGS 1
 2 #include <stdio.h>
 3 int main() {
 4 
 5     int a = 100;
 6     int b = 200;
 7     int tmp = 0;
 8     printf("a=%d b=%d \n", a, b);
 9     tmp = a;
10     a = b;
11     b = tmp;
12     printf("a=%d b=%d \n", a, b);
13     return 0;
14 }

结果:

 

(2)如果题目要求让你写成函数形式,那么你就要注意了,这个是一定很容易出错的问题。

我们先来看下函数函数调用涉及到的知识点:

函数调用的2种方式:

先贴上代码:

 1 #define _CRT_SECURE_NO_WARNINGS 1
 2 #include <stdio.h>
 3 
 4 // !!!!这个才是正确的交换2变量的示例
 5 void Swap2(int* pa, int* pb) {
 6     int tmp = 0;
 7     tmp = *pa;
 8     *pa = *pb;
 9     *pb = tmp;
10 }
11 
12 // void是空,无的意思,就是不需要返回值
13 // !!!!这里的交换方式是错误的,不会交换x,y的值
14 // 当实参传给形参的时候,形参其实是实参的一份临时拷贝,对形参的修改是不会改变实参的
15 void Swap1(int x, int y) {
16     int tmp = 0;
17     tmp = x;
18     x = y;
19     y = tmp;
20 }
21 
22 int main() {
23 
24     int a = 100;
25     int b = 200;
26     int tmp = 0;
27     printf("a=%d b=%d \n", a, b);
28     // 函数的调用:传值调用
29     printf("错误交换方式 \n");
30     Swap1(a, b);
31     printf("a=%d b=%d \n", a, b);
32 
33     // 知识点回顾
34     int* pa = &a;  // pa指针变量
35     *pa = 200;  // 解引用操作,修改指针中的内容
36     printf("a = %d\n", a);
37 
38     a = 100;
39     b = 200;
40     printf("a=%d b=%d \n", a, b);
41     // 函数的调用:传址调用
42     printf("正确的交换方式 \n");
43     Swap2(&a, &b);
44     printf("a=%d b=%d \n", a, b);
45 
46     return 0;
47 }

结果:

这里有几个知识点需要提点下大家:

没想到一个简单的交换两个函数的函数会涉及到指针,我把这个拿出来和大家说,因为我觉得这个示例对理解C语言指针有很大的帮助,希望大家有兴趣对C语言指针还不熟悉的话可以亲自去敲下代码,一定会帮你加深理解的~

参考资料:https://www.bilibili.com/video/BV1q54y1q79w?p=10

 

标签:function,tmp,函数,form,classic,int,交换,printf,指针
来源: https://www.cnblogs.com/ttweixiao-IT-program/p/15800963.html