c语言的程序题!
发布网友
发布时间:2024-09-05 10:02
我来回答
共5个回答
热心网友
时间:2024-11-02 05:34
少年……听课要认真,错误非常多。
1.void swap(int,int);是函数原型,不能放在main函数里面
2.return只能返回一个变量,如果要返回多个变量可以把多个变量整合为一个结构体,或者把变量弄成全局变量,之后在你的函数里面修改变量。或者像你那样用指针,又或者用引用。
目测暂时只发现俩错误。修改后代码:
void swap(int,int);
#include <stdio.h>
void main()
{
int a,b;
int *pointer_1=NULL, *pointer_2=NULL;//<-------------------------不规范错误
scanf("%d,%d",&a,&b);//<-------------------错误4
pointer_1=&a,pointer_2=&b;
if (a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}
void swap(int * p1,* p2)
{int temp;
temp=*p1;
*p1 =*p2;
*p2 =temp;
}
又发现不规范地方= =。
3.定义指针的时候,如果不能赋值最好把指针赋值为NULL,否则可能会出现错误。
4.我说scanf里面怎么只有一个双引号= =
热心网友
时间:2024-11-02 05:35
void swap(int x,int y)//比如swap(a,b):其实就是x=a,y=b
{int temp; //所以这之后进行的操作与a,b无关。
temp=x;
x=y;
y=temp;
}//结束后a,b的值没有变化
如果再在这个swap函数里加return (x,y)可以吗?
少年啊,上课要认真啊,你们老师绝对是讲个34边了滴
C里的函数的参数传递是值传递
热心网友
时间:2024-11-02 05:35
用整形变量的话,就不能达到交换的目的了。
c语言中, return(x,y) 是语法错误的。 不能这样用法。
热心网友
时间:2024-11-02 05:36
实参传给形参是单向值传递,并不是不可以写成int swap(int x,int y)这种形式,只是这么写,根本达不到交换的目的,只能用指针,
void swap(int *x,int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("a=%d b=%d\n",a,b);
swap(&a,&b);
printf("a=%d b=%d\n",a,b);
}
热心网友
时间:2024-11-02 05:37
因为你的
pointer_1=&a,pointer_2=&b;
pointer是地址,所以不能用整形。