输入:第一行输入人数,第二行输入对应个数的成绩
输出:元素之间以空格间隔
以选择法或冒泡法完成排序
冒泡排序就行
#include <iostream>
using namespace std;
int main()
{
int a[100];
int n,i,j,t;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(a[j] < a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
}
选择排序版
#include <stdio.h>
void selection_sort(int arr[], int n) {
int i, j, max_idx;
for (i = 0; i < n - 1; i++) {
max_idx = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[max_idx]) {
max_idx = j;
}
}
int temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
int main() {
int n;
printf("请输入学生人数(不超过100人):\n");
scanf("%d", &n);
int scores[n], i;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的成绩:\n", i + 1);
scanf("%d", &scores[i]);
}
selection_sort(scores, n);
printf("学生成绩从高到低排序结果如下:\n");
for (i = 0; i < n; i++) {
printf("%d ", scores[i]);
}
printf("\n");
return 0;
}
冒泡排序
#include <stdio.h>
void bubble_sort(int arr[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int n;
printf("请输入学生人数(不超过100人):\n");
scanf("%d", &n);
int scores[n], i;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的成绩:\n", i + 1);
scanf("%d", &scores[i]);
}
bubble_sort(scores, n);
printf("学生成绩从高到低排序结果如下:\n");
for (i = 0; i < n; i++) {
printf("%d ", scores[i]);
}
printf("\n");
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: while (cur != nullptr) {
ans = ans * 2 + cur->val;
cur = cur->next;
}
如此简单的两行代码是如何做到将二进制转化为十进制的?
我们在进行二进制到十进制的转换时,一般思维是从低位向高位转,但显然这道题是从高位向低位转,那么问题就来了如何从高位向低位转换?
由于敲公式太过繁琐,就用上图解释了将二进制转换为十进制时从高位转化为低位的方法,我想应该是解释清楚了,如果有疑问也欢迎大家在评论区留言,如有问题也欢迎进行批评指正!