#这个题我一开始是使用C语言写的(C语言写的顺手一点),然后得到满分的C语言代码后,自己全部翻译成java代码,代码如下。
#其中排序时使用了选择排序(没有用别的高效排序是因为,,不会,自己也明白还是要学会使用高效排序方法 ε=(´ο`*)唉)
PTA | 程序设计类实验辅助教学平台 千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台 https://pintia.cn/problem-sets/1431533418782228480/problems/1431533584004251655
这是C语言
```c
#include<stdio.h>
int main()
{
int N,temp,M;
scanf("%d",&N); //要输入的数量
int a[N],b[N];
for(int i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
getchar();
int ii,tt;
for(ii=0;ii<N;ii++) //选择排序
{
for(tt=0;tt<ii;tt++)
{
if(a[ii]<a[tt])
{
temp=a[tt];
a[tt]=a[ii];
a[ii]=temp;
}
}
}
scanf("%d",&M); //对数组排序后从小到大查找
for(int jj=0;jj<=N;jj++)
{
if(M==a[jj])
{
printf("%d",jj+1);
break;
}
if(jj==N) printf("-1");
}
return 0;
}
这是由C语言傻瓜式翻译的java语言
↓
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
int N,temp,M;
int flag=0;
Scanner sc = new Scanner(System.in);
N=sc.nextInt();
int[] arr=new int[N];
for(int i=0;i<N;i++)
{
arr[i]=sc.nextInt();
}
int ii,tt;
for(ii=0;ii<N;ii++)
{
for(tt=0;tt<ii;tt++)
{
if(arr[ii]<arr[tt])
{
temp=arr[tt];
arr[tt]=arr[ii];
arr[ii]=temp;
}
}
}
/* for(int j=0;j<N;j++)
{
printf("%d",a[j]);
} */
M=sc.nextInt();
for(int q=0;q<N;q++)
{
if(M==arr[q])
{
flag+=1;
}
}
if(flag==0) System.out.println("-1");
else {
for(int jj=0;jj<=N;jj++)
{
if(M==arr[jj])
{
System.out.println(jj+1);
break;
}
if(jj==N)
System.out.println("-1");
}
}
}
}
所以你的问题是什么?看你的代码规范我很难受,差点想开除你
感觉下面有些复杂了
这样更简洁一些
int num = in.nextInt();
int flag = 0;
for(int m = 0;m<n;m++)
{
if(num==a[m])
{
System.out.println(m+1);
flag ++;
break;
}
}
if(flag==0)
System.out.println("-1");
马老师牛批