1. 首页 > 科技

C++,大佬们看下这里报错是为什么?可是这代码能AC啊?! 0x80071ac3无法复制

C++,大佬们看下这里报错是为什么?可是这代码能AC啊?!0x80071ac3无法复制

C语言问题 为什么在VC下能编译通过,运行就报错了。高手解答下

楼主是想用指针实现冒泡排序

你的代码怎么看怎么别扭。

出错的最大原因是指针在循环后指针的增加值错了

p+=j++,q+=k++

比如执行一次,p=p+j=0+1=1;第二次就是p=p+j=1+2=3

第三次就是p=p+j=3+3=6,很快指针就越界,所以会出混乱的数字

为了让你最好的理解,我在你的代码上做了最小的改动

另外你的代码看着特别扭,建议要去看一下编程代码规范

还别是条件,一般都是变量<常量的,你的却刚好反过来

养成一个良好的编程习惯对你很有帮助的

#include<iostream.h>

#include <stdio.h>

main()

{

int a[]={6,3,9,2,1,5,11,7,4,8,10},i,j,k,l,m;

int *p,*q;

i=sizeof(a)/sizeof(a[0]);

for(p=a,j=0;i>j;p=a +j++)

{

for(q=p+1,k=j+1;i>=k;q=a+k++)

{

if(*p>*q)

{l=*p;

m=*q;

*p=m;

*q=l;}

}

}

for(int c=0;i>c;c++)

printf("%d ",a[c]);

getchar();

}

大佬帮忙看看C语言哪里错了

问题出在这一句:

scanf("%d,%d,%d,&a,&b,&c);//漏了一个引号"一共两个错误:

1、按你写的程序看,读取的应该是a、b、d,而不是a、b、c

2、引号的位置不对。

改为:

scanf("%d,%d,%d",&a,&b,&d);其余不用改。

三个数比较的程序没必要这么麻烦,给出程序如下:

#include 

void main()

{

int a,b,c;

scanf("%d,%d,%d",&a,&b,&c);

printf("max=%d\n",(a>b?a:b)>c?a>b?a:b:c);

}

请问大佬为什么这段c代码错了?本意想读取输入,把换行符替换成结束符,并丢弃多余输入

第二个if语句没什么作用吧,只是判断对字符数组最后一个元素不是换行符或结束符时反复测试输入是否为换行符,是则退出判断分支。

一个c++程序,我不知道哪错了,能运行,但输不出结果,求各位大佬帮忙看下

#include <iostream>

using namespace std;

void fun ( int x, int pp[], int *n )

{

int k=1,*s;

*n=0;

s=&pp[0];

//错误1,搞清楚while的参数是什么意思 

while(k<=x) {

if(x%k==0) {

*s=k;

s++;

//错误2,*的优先级不如++ 

(*n)++;

}

k += 2;

}

}

//友情提示 

//C/C++ 没有规定 main和void main这种写法 

int main(void)

{

int x, aa[1000], n, i ;

cout<< "\nPlease enter an integer number:\n" ;

cin>>x;

fun(x, aa, &n ) ;

for( i = 0 ; i < n ; i++ )

cout<< aa[i]<<" ";

cout<<endl;

return 0;

}