写一个函数用选择法将n个整数由大到小排序,主函数通过键盘输入10个整数,然后通过函数调用实现排序。"
先看截图:
参考如下:
#include<stdio.h>
// 从大到小排序
void sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[j]>a[k]) // 从小到大,只需要 a[j] < a[k]
k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
int main()
{
int n;
printf("Input n:");
scanf("%d", &n);
printf("Input %d numbers:", n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
sort(a, n);
printf("Sorting results:");
for (int i = 0; i < n; i++) {
printf("%4d", a[i]);
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:【输入格式】
输入的第一行包含一个整数 n。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】
30
【样例输出】
18
【评测用例规模与约定】
对于 40% 的评测用例,1 <= n <= 10000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
//判断是否符合要求
if(n<1||n>1000000){
return;
}
//存储总的纯净数
int sum=0;
//把输入的数字转换为String 类型的值
for (int i = 1; i <=n; i++) {
String str=String.valueOf(i);
for (int j = 0; j <str.length(); j++) {
int number=Integer.valueOf(String.valueOf(str.charAt(j)));
if(number==2){
break;
}
if(j==str.length()-1){
sum++;
}
}
}
System.out.println(sum);
}
}
实际上,以上的解决方案是正确的,并且已经给出了函数和主程序的代码。这个问题是一个经典的排序算法问题,可以使用选择排序的方法解决。函数中的代码使用了两层嵌套循环来进行比较,然后交换元素的位置。主程序中,使用了 input() 函数和 map() 函数来读入数字,然后调用函数对它们进行排序,并且使用 print() 函数输出排序后的结果。
注意事项: