注册 登录
编程论坛 C语言论坛

不知道为什么不能运行!

一路向北! 发布于 2021-08-07 13:04, 3563 次点击
#include<stdio.h>
void swap(int *p1,int *p2)
void main()
{
    int a,b;
    int *pointer_1;
int *pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if(a<b)
{
    swap(*pointer_1,*pointer_2);
}
printf("max=%d\nmin=%d\n",a,b);
}
void swap(int *p1,int *p2)
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
15 回复
#2
牛马点缀生活2021-08-07 18:03
#include<stdio.h>
int main()
(void swap(int*p1,int*p2);
int a,b;
int *point1,*point2;
printf("please enter a and b:");
scanf("%d,%d",&a,&b);
point1=&a;
point2=&b;
if(a<b)
swap(point1,point2);
printf("max=%d,min=%d\n",a,b)'
return 0;
}
开头的主函数main没有
其他还行但是你的程序不太规范
#3
牛马点缀生活2021-08-07 18:09
不好意思 没太仔细看你的函数部分 你的函数部分应该是这样子的
void swap(int*p1,int*p2)
{    int temp;
        temp=*p1;
        *p1=*p2;
        *p2=temp;}
#4
一路向北!2021-08-09 11:55
回复 3楼 牛马点缀生活
还是不行呢!把我给整懵了!
#5
rjsp2021-08-09 12:30
回复 4楼 一路向北!
程序代码:
#include <stdio.h>

void swap( int* p1, int* p2 );

int main( void )
{
    int a, b;
    scanf( "%d ,%d", &a, &b );

    if(a<b)
        swap( &a, &b );

    printf( "max=%d\nmin=%d\n", a, b );
}

void swap( int* p1, int* p2 )
{
    int tmp = *p1;
    *p1 = *p2;
    *p2 = tmp;
}

你输入 3,4 和 4,3 试试
#6
自由而无用2021-08-09 16:50
line 2 miss ;
line 13 swap(*(int*)&a, *(int*)&b); eg: a=5, b=10 swap((int*)(0x00000005), (int*)(0x000000010))
swap((int*)&a, (int*)&b) eg: a=5, b=10 &a=0x12ff9c, &b=0x12ff98; swap((int*)(0x12ff9c), (int*)(0x12ff98))


[此贴子已经被作者于2021-8-9 16:52编辑过]

#7
编程小飞2021-08-09 18:52
函数声明写到main函数里
#8
一路向北!2021-08-09 23:12
回复 5楼 rjsp
我也觉得你的代码没有问题,运行没有问题,但是输出有点问题
#9
一路向北!2021-08-09 23:14
回复 7楼 编程小飞
具体一点,我试了好多遍还是运行有点问题
哈哈哈哈!谢谢啦
#10
一路向北!2021-08-09 23:17
回复 6楼 自由而无用
有点难搞哦
#11
自由而无用2021-08-10 07:31
scanf( "%d ,%d", &a, &b ); input 1,2
scanf( "%d %d", &a, &b ); input 1 2
#12
repair10002021-08-12 08:23
回复 楼主 一路向北!
感觉{  }少一个
#13
狮子头2021-08-22 13:43
你说的‘不能运行’是双击之后不能运行吗?
退出或安全防护软件一下或关掉防护软件的免打扰可以了。
#14
llsh772021-08-22 19:43
swap(*pointer_1,*pointer_2);这里不用加星
#15
守护墨迫2021-08-29 14:37
5楼大佬已经为你解决问题,我说下你源代码的几个错误点:
1、你函数声明时没有分号(;);
2、书写scanf函数时%d和%d是逗号连接,我不知道你这是有意还是无意,我还是想提醒一下,你这样写运行时输入数据也要用逗号分隔,如果写成%d%d,运行时可以回车分隔;
3、swap函数体没有大前括号({),感觉你有点粗心。
#16
不会游泳的虾2021-08-29 15:38
修改如下,问题见注释,供参考:
程序代码:
#include<stdio.h>
void swap(int *p1,int *p2);//少了 ‘;’
int  main()
{
    int a,b;
    int *pointer_1;
    int *pointer_2;
    scanf("%d%d",&a,&b);//scanf("%d,%d",&a,&b);
    pointer_1=&a;
    pointer_2=&b;
    if(a<b)
    {
                         //swap(*pointer_1,*pointer_2);
         swap(pointer_1,pointer_2);
    }
    printf("max=%d\nmin=%d\n",a,b);
   
    return 0;
}
void swap(int *p1,int *p2)
{                         //少了‘{’
    int temp;
    temp=*p1;
    *p1=*p2;
    *p2=temp;
}
#17
Mrluoyuzhao2021-09-02 17:11
调用swap函数传参你为什么将指针解引用了,解引用出来就是a,b值了。这里传参要和你声明的函数参数一致,用地址
#18
yyangdid2021-09-03 20:31
程序代码:

#include <stdio.h>

void swap(int *p1, int *p2);

int main(void) {
  int a, b;
  int *pointer_1;
  int *pointer_2;
  scanf("%d%d", &a, &b); //此处两个 %d 之间不要用任何分隔符,输入时可使用空格、回车、tab分隔输入两个数
  pointer_1 = &a;
  pointer_2 = &b;
  if (a < b) {
    // 此处调用 swap 函数时,实参不要 * 号,因为 pointer_1 和 pointer_2 定义时就已经是指针了
   
// swap 要求参数为指针,*pointer_1 其实是表示指针指向的内容,传参不符
    swap(pointer_1, pointer_2);
  }
  printf("max=%d\nmin=%d\n", a, b);
}

void swap(int *p1, int *p2) {
  int temp;
  temp = *p1;
  *p1 = *p2;
  *p2 = temp;
}


没注意到有两页回复,有大佬已经解决了 这是我第一个帖子,也留着吧

另外,感觉你是用很简单的文本编辑器写的代码,推荐还是用 IDE 吧,vs、codeblock、codelite 等等,因为会直接给你错误提示,这样可以避免很多小的错误,例如你函数声明没写分号、函数定义没有左大括号,这种小错误可以直接避免了,传参错误自然也有提示

[此贴子已经被作者于2021-9-3 20:42编辑过]

1