c 语言 交换两个变量的值
交换两个整型变量的值c语言
交换两个整型变量的值c语言交换两个整型变量的值是一个常见的编程问题。
在C语言中,有多种方法可以实现这个目标。
下面我将介绍三种常见的交换两个整型变量的方法:使用第三个变量、不使用第三个变量、使用异或运算。
1. 使用第三个变量这是最常见的方法之一。
它的实现方式是:首先将第一个变量的值赋给第三个变量,然后将第二个变量的值赋给第一个变量,最后将第三个变量的值赋给第二个变量。
以下是使用第一个变量实现交换的示例代码:```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int main() {int num1 = 5;int num2 = 10;printf("交换前的值: num1=%d, num2=%d\n", num1, num2);swap(&num1, &num2);printf("交换后的值: num1=%d, num2=%d\n", num1, num2);return 0;}```2. 不使用第三个变量这种方法利用了算术运算和赋值运算之间的关系。
具体的实现方式是:将第一个变量的值与第二个变量的值相加,然后将和减去第二个变量的值,并将结果赋给第一个变量。
最后,将第一个变量的值减去第二个变量的值,并将结果赋给第二个变量。
以下是不使用第三个变量实现交换的示例代码:```cvoid swap(int *a, int *b) {*a = *a + *b;*b = *a - *b;*a = *a - *b;}int main() {int num1 = 5;int num2 = 10;printf("交换前的值: num1=%d, num2=%d\n", num1, num2);swap(&num1, &num2);printf("交换后的值: num1=%d, num2=%d\n", num1, num2);return 0;}3. 使用异或运算异或运算是一种位运算,它有一个重要的特性:两个相同的数进行异或运算的结果是0。
非常全的C语言常用算法
一、基本算法1.交换(两量交换借助第三者)例1、任意读入两个整数,将二者的值交换后输出。
main(){int a,b,t;scanf("%d%d",&a,&b);printf("%d,%d\n",a,b);t=a; a=b; b=t;printf("%d,%d\n",a,b);}【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。
假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。
其中t为中间变量,起到“空杯子”的作用。
注意:三句赋值语句赋值号左右的各量之间的关系!【应用】例2、任意读入三个整数,然后按从小到大的顺序输出。
main(){int a,b,c,t;scanf("%d%d%d",&a,&b,&c);/*以下两个if语句使得a中存放的数最小*/if(a>b){ t=a; a=b; b=t; }if(a>c){ t=a; a=c; c=t; }/*以下if语句使得b中存放的数次小*/if(b>c) { t=b; b=c; c=t; }printf("%d,%d,%d\n",a,b,c);}2.累加累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。
“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。
例1、求1+2+3+……+100的和。
main(){int i,s;s=0; i=1;while(i<=100){s=s+i; /*累加式*/i=i+1; /*特殊的累加式*/}printf("1+2+3+...+100=%d\n",s);}【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。
交换两个变量的值,不使用第三个变量的方法及实现
交换两个变量的值,不使用第三个变量的方法及实现:附录中有C/C++代码:通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。
代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。
在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。
上面的算法最大的缺点就是需要借助一个临时变量。
那么不借助临时变量可以实现交换吗?答案是肯定的!这里我们可以用以下几种算法来实现:1)算术运算;2)指针地址操作;3)位运算;4)栈实现。
1)算术运算int a,b;a=10;b=12;a=b-a; //a=2;b=12b=b-a; //a=2;b=10a=b+a; //a=12;b=10它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。
具体过程:第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;第三句“a=b+a”求出b到原点的距离(a到原点距离与ab两点距离之和),并且将其保存在a中。
完成交换。
此算法与标准算法相比,多了三个计算的过程,但是没有借助临时变量。
(以下称为算术算法)除了使用加、减法外,还可以使用乘、除法实现,实现代码如下://if a=10;b=12;a=a*b; //a=120;b=12b=a/b; //a=120;b=10a=a/b; //a=12;b=10缺点:是只能用于数字类型,字符串之类的就不可以了。
a+b有可能溢出(超出int的范围),溢出是相对的,+了溢出了,-回来不就好了,所以溢出不溢出没关系,就是不安全。
2)指针地址操作因为对地址的操作实际上进行的是整数运算,比如:两个地址相减得到一个整数,表示两个变量在内存中的储存位置隔了多少个字节;地址和一个整数相加即“a+10”表示以a为基地址的在a后10个a类数据单元的地址。
交换变量的方法
交换变量的方法宝子们!今天咱们来唠唠交换变量这个事儿。
这在编程或者数学里可都是很有用的小技巧呢。
咱先说一种最直白的办法,就像玩换东西的游戏一样。
假如有两个变量,a和b,我们可以再找个“小帮手”,就叫c吧。
先把a的值放到c里,这就像是把a手里的东西暂时交给c保管。
然后呢,把b的值给a,这就好比b把自己的东西递给了a。
最后再把c里存着的原来a的值给b,这样a和b的值就完美交换啦。
就像是三个人之间愉快地交换了小礼物。
还有一种更酷的办法哦。
如果是在数学里或者一些特定的编程环境里,咱们可以用一种很巧妙的计算。
比如说,a = a + b,这时候a就变成了原来a和b的和。
然后呢,b = a - b,这么一算,b就得到了原来的a的值啦。
最后再让a = a - b,这样a就变成了原来的b的值。
是不是感觉像变魔术一样?就像把两个小宝贝的位置在一个神奇的魔法阵里给调换了。
在一些编程语言里,还有一种特别简洁的交换方式。
就像有个魔法咒语一样,直接就能交换两个变量的值。
不过这就需要了解这个编程语言的一些特殊语法啦。
这就好比每个魔法世界都有自己独特的魔法规则,掌握了就能轻松搞定变量交换这个小魔法。
宝子们,交换变量虽然看起来有点小复杂,但其实就像玩有趣的小游戏一样。
只要咱们多试试这些方法,就会发现其中的乐趣。
而且在解决各种数学或者编程问题的时候,这可是很厉害的小绝招哦。
不管是简单的小计算,还是复杂的编程项目,学会交换变量就像给自己的技能包里多装了一个超酷的小工具。
下次再遇到需要交换变量的情况,就可以轻松应对,像个小魔法师一样把变量的值变来变去啦。
嘻嘻!。
c语言数组最大值和最小值交换
在C语言中,可以通过以下步骤来交换数组中的最大值和最小值:1. 遍历数组,找到最大值和最小值的索引。
2. 使用临时变量交换最大值和最小值。
以下是一个示例代码:```c#include <stdio.h>void swap_max_min(int arr[], int size) {int max_index = 0, min_index = 0, temp;// Find the index of the maximum and minimum valuesfor (int i = 1; i < size; i++) {if (arr[i] > arr[max_index]) {max_index = i;}if (arr[i] < arr[min_index]) {min_index = i;}}// Swap the maximum and minimum values using a temporary variabletemp = arr[max_index];arr[max_index] = arr[min_index];arr[min_index] = temp;}int main() {int arr[] = {3, 6, 1, 8, 2, 9, 4, 7, 5};int size = sizeof(arr) / sizeof(arr[0]);printf("Original array: ");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");swap_max_min(arr, size);printf("Swapped array: ");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```在这个示例中,我们定义了一个名为`swap_max_min` 的函数来交换数组中的最大值和最小值。
C语言程序设计教程(第5版)王秀鸾第10章函数参数传递进阶
10.6 main( )函数的形参
主函数的原形如下: main(int argc,char *argv[]) { … }
其中,argc和argv就是main()函数的形参。argc 是整形变量,argv[]是一个字符型指针数组。
main( )函数是由操作系统调用的,它的参数由操 作系统传递,所以运行带形参的主函数时,必须在 操作系统命令状态下,输入命令行:
第10章 函数参数传递进阶
10.1 指针变量作为函数参数
• 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指
针类型数据。
【例10.1】交换两个指针变量所指向的变量的值
#include "stdio.h" void test(int *p1,int *p2) /* 形参为指针变量 */ { int p;
} int add(int a,int b) { return(a+b); }
3.指向函数指针变量作函数参数
指向函数的指针变量也可以作为函数的参数;即 将函数的入口地址传递给函数,也就是将函数名传 给形参,从而实现利用相同的函数调用语句调用不 同函数的目的。
【例】 用函数指针变量实现四则运算。
#include "stdio.h" double add(double x,double y) { return(x+y);} double sub(double x,double y) { return(x-y);} double mult(double x,double y) { return(x*y);} double divi(double x,double y) { return(x/y);} double result(double x,double y,doubl
c语言中!的用法
c语言中!的用法在C语言中,"!" 是逻辑运算符之一,用于对表达式取反。
它可以用来进行条件判断、控制程序流程以及实现一些简单的逻辑运算。
下面将就"!"的用法在C语言中进行详细讨论。
1. 条件判断:在C语言中,通过使用"!"运算符可以对条件表达式的结果进行取反。
通常结合其他逻辑运算符(如"&&"和"||")一起使用以实现复杂的条件逻辑。
示例一:判断一个数是奇数还是偶数```cint num = 10;if (!(num % 2)) {printf("偶数\n");} else {printf("奇数\n");}```解释:在上述示例中,我们使用了取余运算符"%"来判断一个数是否为偶数。
如果一个数可以被2整除,即取余为0,则表示该数为偶数。
通过在条件表达式前加上"!"运算符,实现对条件结果的取反,从而可以判断出一个数是奇数还是偶数。
2. 控制程序流程:在C语言中,可以使用"!"运算符来控制程序流程,例如在循环中实现跳出循环的功能。
示例二:在数组中查找特定的元素```cint arr[] = {1, 2, 3, 4, 5};int target = 3;int i;int found = 0;for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {if (arr[i] == target) {found = 1;break;}}if (!found) {printf("未找到特定元素\n");} else {printf("已找到特定元素\n");}```解释:在上述示例中,我们使用一个for循环来遍历数组arr,并通过判断当前元素是否与目标元素相等,从而实现查找特定元素的功能。
c语言连等式
c语言连等式C语言连等式C语言中的连等式是指在一个语句中同时对多个变量进行赋值的操作。
它的格式通常为:变量 1 = 变量 2 = 变量3 = ... = 表达式;连等式的作用是简化代码,提高编程效率。
在C语言中,连等式的执行顺序是从右往左进行的。
也就是说,表达式的值首先被赋给最右边的变量,然后依次向左传递,直到最左边的变量。
这种赋值方式可以用于多个变量同时获取相同的值,或者实现一些复杂的计算逻辑。
连等式的使用可以使代码更加简洁明了。
例如,当需要对多个变量进行相同的赋值时,使用连等式可以避免重复写多个赋值语句,提高代码的可读性和维护性。
此外,连等式还可以用于实现一些特殊的赋值逻辑,如链式赋值、交换变量值等。
在实际编程中,连等式的应用非常广泛。
下面通过几个示例来说明连等式的具体用法。
示例一:链式赋值```cint a, b, c;a =b =c = 10;```上述代码中,连等式`a = b = c = 10`将同时将变量a、b、c的值都赋为10。
这种链式赋值方式可以简化代码,提高可读性。
示例二:交换变量值```cint a = 10, b = 20;a = a + b;b = a - b;a = a - b;```上述代码实现了两个变量的值交换。
然而,使用连等式可以更加简洁地完成这个操作。
```cint a = 10, b = 20;a = a +b - (b = a);```通过连等式`a = a + b - (b = a)`可以同时完成两个变量的值交换,避免了引入额外的变量。
示例三:多重赋值```cint a, b, c;a =b =c = 0;```上述代码中,连等式`a = b = c = 0`将同时将变量a、b、c的值都赋为0。
这种多重赋值方式可以简化代码,提高可读性。
需要注意的是,连等式只适用于基本数据类型的变量,对于指针、结构体等复杂类型的变量,需要单独进行赋值操作。
总结起来,C语言中的连等式是一种便捷的赋值方式,可以在一条语句中同时对多个变量进行赋值。
指针练习题及答案
指针练习题及答案1. 请编写一个程序,交换两个变量的值,并通过指针来实现。
```c#include<stdio.h>void swap(int *a, int *b){int temp = *a;*a = *b;*b = temp;}int main(){int num1 = 10, num2 = 20;printf("交换前的值:num1=%d, num2=%d\n", num1, num2);swap(&num1, &num2);printf("交换后的值:num1=%d, num2=%d\n", num1, num2);return 0;}```2. 编写一个函数,统计字符串中某个字符出现的次数,并通过指针返回结果。
```c#include<stdio.h>int countChar(const char *str, char target){int count = 0;while(*str != '\0'){if(*str == target)count++;str++;}return count;}int main(){char str[] = "hello world";char target = 'l';int count = countChar(str, target);printf("字符 %c 出现的次数为:%d\n", target, count); return 0;}```3. 编写一个函数,找到整型数组中的最大值,并通过指针返回结果。
```c#include<stdio.h>int findMax(const int *arr, int size){int max = *arr;for(int i = 1; i < size; i++){if(*(arr+i) > max)max = *(arr+i);}return max;}int main(){int arr[] = {10, 20, 30, 40, 50};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("数组中的最大值为:%d\n", max);return 0;}```4. 编写一个函数,将字符串反转,并通过指针返回结果。
异或运算 linux c
异或运算 linux c
异或运算是一种常见的位运算,它在Linux C编程中经常被使用。
异或运算的结果是两个操作数的每一位进行比较,如果相同则结果为0,如果不同则结果为1。
在C语言中,可以使用^符号来表示异或运算。
在Linux C编程中,异或运算有着广泛的应用。
它常常被用来进行数据加密和解密操作。
通过对数据进行异或运算,可以实现简单的加密算法,从而保护数据的安全性。
同时,异或运算也可以用于校验数据的完整性,通过对数据进行异或运算得到一个校验值,来验证数据是否被篡改。
除此之外,在Linux C编程中,异或运算还常常被用于交换两个变量的值,不使用临时变量的情况下,可以通过异或运算来实现两个变量的值交换。
这种技巧在一些嵌入式系统和低级编程中经常被使用,可以提高程序的效率和性能。
总的来说,异或运算在Linux C编程中有着重要的作用,它可以用于数据加密、校验、数值交换等多种场景,是C语言中常用的
位运算之一。
对于C语言程序员来说,熟练掌握异或运算的原理和应用,将有助于提高程序的效率和安全性。
C语言程序设计第5章“使用指针参数交换两个变量值”案例
使用指针参数交换两个变量值”案例C主讲教师崔玲玲 5.1 “【案例说明】用函数实现两个变量值的交换使其在主调函数和被调函数中的值一致。
要求用指针变量作为函数参数。
程序运行结果如图 5.1所示。
图 5.1 使用指针参数交换两个变量值【案例目的】 1 熟悉如何定义指针变量掌握将指针变量作为函数参数的方法。
2 掌握通过指针参数由被调函数向主调函数传递多个值的方法。
【技术要点】由于变量的值始终存放在内存单元中因此要交换两个变量的值只需交换这两个变量对应的存储单元的值即可这就需要知道两个变量的地址。
也就是说需要保证主调函数与被调函数中所要交换的两个数的内存单元是同一内存单元即传递的参数是内存单元的地址而不是内存单元中的值。
【相关知识及注意事项】1. 指针和地址2. 指针变量的定义及初始化3. 指针变量的赋值4. 指针变量的引用 5. 指针作为函数参数 5.2 “有序数列的插入”案例【案例说明】用指针法编程插入一个数到有序数列中。
程序运行结果如图 5.7所示。
图 5.7 有序数列的插入【案例目的】 1 熟悉如何定义指针变量掌握将指针变量指向一维数组元素的方法。
2 掌握如何在一个有序的数列中查找合适的位置。
3 掌握如何将一个数插入到一个有序数列中。
【技术要点】 1 有序数组中插入一个数的关键是找到该数据插入的位置然后将插入位置及其后的所有元素均后移一位在空出的位置放入待插入的数据。
例如在13、27、38、49、65、76、97这列有序数据中插入53这个数成为新的有序数列13、27、38、49、53、65、76、97。
2 定义数组时必须多开辟一个存储单元用于存放待插入的数据。
【相关知识及注意事项】1. 指针变量的运算 2. 指针与一维数组 5.3 “两个字符串首尾连接”案例【案例说明】编写程序将两个字符串首尾连接起来。
要求用字符指针变量处理。
程序运行结果如图 5.9所示。
图 5.9 两个字符串首尾连接【案例目的】 1 学会定义基类型为字符型的指针变量并将指针变量指向串首的操作。
c语言交换两个变量的值
有两个变量a 和b,想要交换它们的值 int a,b;
c语 言 交 换 两 个 变 量 的 值
能不能这样操作呢? b=a; a=b; 不能啊,这样操作的意思是把a的值放到b中,然后b中的值已经被覆盖掉了,已经不是b原来的那个值了,所以是没有意义的。 OK,既然不能这样操作,那怎么办? 看一下问题出在哪里,是不是b的值被覆盖掉了,那么可以先把b的值备份一下,这样就可以覆盖了, 对不对? OK,设置一个变量t 先把b中的变量备份到t中 t=b; 然后把a中的变量放到b中 b=a; 然后把备份的b放到a中 a=t; 记录一下这个问题的思考过程。
c语言结构体整体交换
在C语言中,可以使用结构体变量整体交换的方法,即将两个结构体变量的所有成员逐个交换。
以下是一个示例代码:```c#include <stdio.h>#include <string.h>struct Student {char name[20];int age;float score;};void swap(struct Student *a, struct Student *b) {struct Student temp = *a;*a = *b;*b = temp;}int main() {struct Student stu1 = {"Tom", 18, 80.0};struct Student stu2 = {"Jerry", 20, 90.0};printf("Before swap:\n");printf(": %s, stu1.age: %d, stu1.score: %.1f\n", , stu1.age, stu1.score);printf(": %s, stu2.age: %d, stu2.score: %.1f\n", , stu2.age, stu2.score);swap(&stu1, &stu2);printf("After swap:\n");printf(": %s, stu1.age: %d, stu1.score: %.1f\n", , stu1.age, stu1.score);printf(": %s, stu2.age: %d, stu2.score: %.1f\n", , stu2.age, stu2.score);return 0;}```在上述代码中,我们定义了一个结构体`Student`,包含三个成员变量`name`、`age`和`score`。
c语言中的异或运算
c语言中的异或运算
异或运算是C语言中常用的一种运算符。
它的符号为“^”,表示两个数对应二进制位相同则结果为0,不同则结果为1。
例如,3 ^ 5 的结果为 6,因为3的二进制表示为011,5的二进制表示为101,它们对应位不同,结果为110,即6。
在C语言中,异或运算有许多使用场景。
例如,可以用异或运算来实现两个变量的交换。
具体实现方法为:
x = x ^ y;
y = x ^ y;
x = x ^ y;
通过三次异或运算,可以将x和y的值进行交换,无需借助第三个变量。
异或运算也可以用来判断一个数的奇偶性。
如果一个数的二进制表示的最后一位为0,则它为偶数;如果最后一位为1,则它为奇数。
因此,可以使用 x & 1 == 0 来判断x是否为偶数,其中&为按位与运算符。
另外,异或运算还可以用来加密解密。
通过对明文与密钥进行异或运算,可以进行简单的加密操作。
例如,将明文“hello”与密钥“abc”进行异或运算得到密文“u0018bdbm#”,再将密文与密钥进行异或运算即可解密得到原文。
总之,异或运算在C语言中使用广泛,是一种简单而实用的运算方式。
c语言中的异或运算
c语言中的异或运算
异或运算是C语言中的一种二进制运算符,也称为“异或”或“XOR”运算。
它的作用是对两个二进制数进行比较,当对应位的数值不同时返回1,否则返回0。
例如,对于两个二进制数1010和1100,它们
进行异或运算的结果是0110。
在C语言中,异或运算符用符号“^”表示。
它可以用于对整型
变量、字符变量和指针变量进行比较。
对于整型变量和字符变量,它们会被转换为二进制数进行比较;对于指针变量,它们会被转换为指向的地址进行比较。
异或运算在C语言中有很多应用。
例如,它可以用于加密和解密数据,通过对数据进行异或运算可以实现简单的加密和解密功能。
它也可以用于交换两个变量的值,例如:
a = a ^ b;
b = a ^ b;
a = a ^ b;
这样就可以在不使用第三个变量的情况下,交换a和b的值。
另外,异或运算还可以用于判断一个数的二进制表示中有几个1,例如:
int count = 0;
int num = 19;
while (num != 0) {
if (num & 1) {
count++;
}
num = num >> 1;
}
printf('19的二进制表示中有%d个1
', count);
这段代码中,我们使用了位运算符“&”和“>>”进行二进制数的移位和比较,最终得到了19的二进制表示中有3个1的结果。
总之,异或运算在C语言中是一个非常常用的二进制运算符,它可以用于加密、解密、交换变量值和判断二进制数中1的个数等多种用途。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 交换两个变量的值:用两种方法:
1) main () (3-5-1a(3-5-1b)
printf(“a,b=?”“a,b=?”);
scanf(“%d,%d”“%d,%d”,&a,&b);
pringf(“a=%d\tb=%d\n”“a=%d\tb=%d\n”,a,b) ;
t=a;a=b;b=t; a=a+b;b=a-b;a=a-b;
pringf(“a=%d\tb=%d\n”,a,b); pringf(“a=%d\tb=%d\n”,a,b);
} /*利用第三变量*/ } /*利用自身*/
3) 利用全局变量交换两个变量的值:
int a=3,b=7; Qj-swap2
main()
{ swap ()
printf("%d,%d\n",x,y);
}
swap()
{ a=a+b;b=a-b;a=a-b}
4)利用指针变量交换两个变量的值:
main ()
{ int a=3,b=10,*pa=&a,*pb=&b;
clrscr();
printf("a=%d\tb=%d\n",a,b);
swap (pa,pb);
printf("a=%d\tb=%d\n",*pa,*pb);
}
swap (int *x,int *y)
{ int *t;
t=*x;*x=*y;*y=t;
}
4)下列程序运行的结果:
(1)int x=1,y=2; Qj-swap1
main ()
{ int a=3,b=4;
move(x,y);move(a,b);
printf("%d, %d, %d, %d",x,y,a,b);
}
move(int p,int q)
{ int k ;
k=p;p=q;q=k;
}
(2)int x=1,y=2; 全局main ()
{ int a=3,b=4;
move(x,y);move(a,b);
printf("%d, %d, %d, %d",x,y,a,b);
}
move(int x,int y) x,y 局部的
{ int k ;
k=x;x=y;y=k;
}
(3) int x=30,y=50;
sub(x,y)
{ y=x>y?x:y;
return y;
}
main ()
{ int x=100;
clrscr();
printf("sub(x,y)=%d\n",sub(x,y));
printf("x=%d\ty=%d\n",x,y);
}
(4)程序填空
Vodi swap( ①__ int *a, int *b _ ) A卷 p162
{ int t;
t=*a;
②__ *a=*b __ ;
③____ *b=t ___ ;
}
main( )
{ int a,b;
scanf(″%d,%d″,&a,&b);
④____swap(&a,&b)___ ;
printf(″a=%d,b=%d″,a,b);
}
2.求半径为 10的圆的面积。
(例1-3-12)
main ()
{ float r,s; /* 定义两个实型变量*/
clrscr(); /* 清屏幕*/
r=10; /* 给半径变量 r赋值 */
s=3.14159*r*r; /*用公式计算圆的面积s 的值*/
printf("r=%f\tarea=%f\n",r,s); /* 输出 r和s的值*/
}
float sy(float x)
{ float s;
s=3.14159*x*x;
return s;
}
3.求多边形(五边形)的面积(三个的三角形面积之和)(3-5-7)
#include "math.h" b
main() c f { float a=2.3,b=3,c=3,d=2,e=2.5,f=2,g=1.4; e g float p1,p2,p3,s3,s1,s2; a
p1=(a+b+c)/2;s1=sqrt(p1*(p1-a)*(p1-b)*(p1-c)); d
p2=(c+d+e)/2;s2=sqrt(p2*(p2-c)*(p2-d)*(p2-e));
p3=(e+f+g)/2;s3=sqrt(p3*(p3-e)*(p3-f)*(p3-g));
printf("a=%f\tb=%f\tc=%f\tarea1=%f\n",a,b,c,s1);
printf("c=%f\td=%f\te=%f\tarea2=%f\n",c,d,e,s2);
printf("e=%f\tf=%f\tg=%f\tarea3=%f\n",e,f,g,s3);
printf("area total=%f\n",s1+s2+s3);
}
#include "math.h" 函数形式
main()
{ float area() /*函数声明*/
float a=2.3,b=3,c=3,d=2,e=2.5,f=2,g=1.4,st;
st= area(a,b,c)+ area(c,d,e)+ area(e,f,g);
printf("area total=%f\n",st);
}
float area(a,b,c)
float a,b,c;
{ float p,s;
p=(a+b+c)/2;
s=sqrt(p1*(p-a)*(p-b)*(p-c));
return s
}
调用上述函数,求阴影部分的面积(圆的面积-三角形的面积)(3-5-8)
#include "math.h"
main()
{ float a=2.3,b=3,c=3,r=10;
float p, ,s2,s;
s=sy(r)-area(a,b,c);
printf("r=%f\terae2=%f\n",r,s2);
printf("area total=%f\n",s2-s1);
}
3.英文大小写转换(3-5-11)。
#include<stdio.h>
main()
{ char c1,c2;
clrscr();
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32; /* c2=c1-32 */
printf("%c,%d\n",c2,c2);
}
char ch(char c)
{ char c1;
if ( c>=’A’&& c<=’Z’) c1=c+32;
else if( c>=’a’&& c<=’z’) c1=c-32;
return c1;
}
main ()
{ float a,b,c,r,p;
printf(“enter float a,b,c=?”);
scanf(“%f,%f,%f”,&a,&b,&c);
if (a==0)
if (b==0) printf(“no slution”);else printf(“x1=x2=%f\n”,-c/b);
else
{ d=b*b-4*a*c;
r=-b/(2*a);
p=sqrt(abs(d)/(2*a));
if (d>0) printf(“x1=%f\tx2=%f\n”,r+p,r-p);
else if (d==0) printf(“x1=x2=%f\n”,r);
else printf(“x1=%f+%fi\tx2=%f-%fi\n”,r,abs(p),r,abs(p));
)
}。