permui / ZJUCKC-C-Learning-Assistence

浙江大学竺可桢学院C语言程序设计辅学计划公共仓库。
6 stars 6 forks source link

陈泳岐-交换最大最小数-pta #13

Open HHHHXXXX520 opened 4 years ago

HHHHXXXX520 commented 4 years ago

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。 输入格式:

输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式:

在一行中顺序输出交换后的序列,每个整数后跟一个空格。

一直说编译错误

#include<stdio.h>
int main(){
    int N,cnt=0;
    scanf("%d",&N);
    int a[N];
    while(1){
        scanf("%d",&a[cnt++]);
        if(cnt==N) break;
    }
    int q,i;
    for(i=0;i<N;i++){
        q=0;
        for(int p=0;p<N;p++){
            if(a[i]<=a[p]){
                q++;
            }
            if(q==N){
            int u;
            u=a[i];
            a[i]=a[0];
            a[0]=u;
            goto out1;
            }
        }
    }
    out1:
    int k;
    for(int j=0;j<N;j++){
        k=0;
        for(int p=0;p<N;p++){
            if(a[j]>=a[p]){
                k++;
            }
            if(k==N){
                int m;
                m=a[j];
                a[j]=a[N-1];
                a[N-1]=m;
                goto out;
            }
        }
    }
    out:
        for(int i=0;i<N;i++){
                printf("%d ",a[i]);
        }

        return 0;

} 
permui commented 4 years ago

编译错误时会有相应的编译信息提示你的错误原因,希望你读一读错误提示,想一想是怎么回事。如果还是不明白,把错误提示贴上来。

HHHHXXXX520 commented 4 years ago

编译错误时会有相应的编译信息提示你的错误原因,希望你读一读错误提示,想一想是怎么回事。如果还是不明白,把错误提示贴上来。

devC++没问题 复制到pta上就说编译错误。。

lizhiqi-creator commented 4 years ago

把编译错误的那个检测结果弹出框截一个图吧,我们需要读一下pta上的编译信息。pta上有时候会禁用一些函数、语句,猜测会不会是老师禁用了goto的使用。截一个图,方便我们具体分析。

HHHHXXXX520 commented 4 years ago

把编译错误的那个检测结果弹出框截一个图吧,我们需要读一下pta上的编译信息。pta上有时候会禁用一些函数、语句,猜测会不会是老师禁用了goto的使用。截一个图,方便我们具体分析。

图片

lizhiqi-creator commented 4 years ago

goto跳转到的位置,是你设置的label(out)的位置。label可以看做是与后面的语句构成的一个整体。而变量申明不是一个语句,label只能与语句构成一个整体。pta上面编译比较严格,自己的编译器可能会帮你改正某些错误,所以经常都会出现自己的编译器可以过,但是pta不行。建议学会阅读pta上的编译信息。

HHHHXXXX520 commented 4 years ago

goto跳转到的位置,是你设置的label(out)的位置。label可以看做是与后面的语句构成的一个整体。而变量申明不是一个语句,label只能与语句构成一个整体。pta上面编译比较严格,自己的编译器可能会帮你改正某些错误,所以经常都会出现自己的编译器可以过,但是pta不行。建议学会阅读pta上的编译信息。

好的谢谢!!