犯的错误://scanf要写&,注意lf啊什么的
/*2024.2.28,经鉴定,确实是电脑的问题。具体见下一篇帖*/
以下两种都有一个小问题(大概是我编译器的问题),就是它做不到识别c是A或D这步,尝试着把它放在scanf数组前面的话,就可以运行,但是一旦加入数组就不行了。
半成品
/*A
20 40 32 67 40 20 89 300 400 15*/
#include <stdio.h>
#include <stdlib.h>
void quicksort(int arr[],int low,int high)
{
int pivot=arr[low];
int i=low;
int j=high;
while(i<j){
while(i<j&&arr[j]>=pivot){
j--;
arr[i]=arr[j];
}
while(i<j&&arr[i]<=pivot){
i++;
arr[j]=arr[i];
}
arr[i]=pivot;
quicksort(arr,low,i-1);
quicksort(arr,i+1,high);
}
}
int main()
{
char ch;
scanf("%c",&ch);
if(ch=='A'){
int num[100]={0};
int i=0,j;
while((scanf("%d",&num[i]))!=EOF){
i++;
}
printf("hello,%d",i);
/*quicksort(num[100],num[0],num[i]);
for(j=0;j<i;j++){
printf("%d",num[j]);
}*/
}
}
网上找的参考答案
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp1(const void *a,const void *b){return *(int*)b-*(int*)a;}
int cmp2(const void *a,const void *b){return *(int*)a-*(int*)b;}
int main()
{
char c;
int a[100],l,tmp;
int flag[1001]={0};
scanf("%c\n",&c);
int i=0,j,k;
while(scanf("%d",&tmp)!=EOF)
{
if(flag[tmp]==0)
{
a[i++]=tmp;
flag[tmp]=1;
}
}
if(c=='A') qsort(a,i,sizeof(a[0]),cmp2);
if(c=='D') qsort(a,i,sizeof(a[0]),cmp1);
for(j=0;j<i-1;j++) printf("%d ",a[j]);
printf("%d\n",a[j]);
return 0;
}