测验题目:错题修改 #include<stdio.h> void Swap(int *x,int *y); int main(void){ float a,b; scanf("%d,%d",&a,&b);/*输入a和b的值*/ printf("Before swap:a=%d,b=%d\n",a,b);/*打印交换前a,b的值*/ Swap(a,b); /*调用函数Swap实现a值与b值得交换*/ printf("After swap:a=%d,b=%d\n",a,b);/*打印交换后的a,b*/ } /*函数功能:交换两个整型数的值*/ void Swap(int *x,int *y); { int temp; temp = *x; *x = *y; *y = temp; }
时间: 2023-08-07 22:08:28 浏览: 77
这段代码中有一些错误,请看下面的修改后的代码:
```
#include <stdio.h>
void Swap(float *x, float *y);
int main(void) {
float a, b;
scanf("%f,%f", &a, &b); /*输入a和b的值*/
printf("Before swap: a=%f, b=%f\n", a, b); /*打印交换前a,b的值*/
Swap(&a, &b); /*调用函数Swap实现a值与b值得交换*/
printf("After swap: a=%f, b=%f\n", a, b); /*打印交换后的a,b*/
return 0;
}
/*函数功能:交换两个浮点型数的值*/
void Swap(float *x, float *y) {
float temp;
temp = *x;
*x = *y;
*y = temp;
}
```
修改之后的代码做了以下几个修改:
1. `%d` 应该改成 `%f`,因为 `a` 和 `b` 声明为了 `float` 类型;
2. 在函数声明和定义中,形参类型应该改成 `float *`,因为需要传递浮点型变量的地址;
3. 在函数定义中,去掉了多余的 `;` 符号;
4. 在 `main()` 函数中添加了 `return 0;` 语句,表示程序正常结束。
这样修改之后,代码就可以正确地编译、运行了。
相关问题
#include <stdio.h> #define M(x,y) x/y void main() { int a=20,b=16,c-5; printf("d",M(a+b,c-b));
这段代码存在两个错误。首先,在定义变量c时,应该使用等号而不是减号。其次,在printf函数中,应该用%而不是d。因此,修正后的代码如下所示:
```c
#include <stdio.h>
#define M(x,y) ((x)/(y))
int main() {
int a = 20, b = 16, c = 5;
printf("%d", M(a + b, c - b));
return 0;
}
```
这样修改后,程序的输出结果为3。
这个程序为什么没有互换成功,#include <stdio.h> void swap1(int a,int b) {int t; t=a; a=b; b=t; } void main() { int a=3; int b=5; if(a<b) swap1(a,b); printf("互换后结果为%d %d\n",a,b); }
这个程序没有成功地进行互换是因为在函数 `swap1` 中,传递的是变量 `a` 和 `b` 的值的副本,而不是变量本身。因此,函数内部对传递进来的 `a` 和 `b` 进行的操作不会影响到 `main` 函数中的变量 `a` 和 `b`。如果想要成功互换,可以将函数 `swap1` 改为使用指针进行操作,或者将函数返回值赋给 `a` 和 `b`。例如:
```
#include <stdio.h>
void swap1(int* a, int* b) {
int t;
t = *a;
*a = *b;
*b = t;
}
int main() {
int a = 3;
int b = 5;
if (a < b) {
swap1(&a, &b);
}
printf("互换后结果为 %d %d\n", a, b);
return 0;
}
```
这样,传递给 `swap1` 函数的是指向 `a` 和 `b` 的指针,函数内部对指针所指向的内容进行操作,可以实现成功的互换。
阅读全文