一、编程题
1.奇偶交换排序算法
举例:待排数组[6 2 4 1 5 9]
第一次比较奇数列,奇数列与它的邻居偶数列比较,如6和2比,4和1比,5和9比
[6 2 4 1 5 9]
交换后变成
[2 6 1 4 5 9]
第二次比较偶数列,即6和1比,5和5比
[2 6 1 4 5 9]
交换后变成
[2 1 6 4 5 9]
第三趟又是奇数列,选择的是2,6,5分别与它们的邻居列比较
[2 1 6 4 5 9]
交换后
[1 2 4 6 5 9]
第四趟偶数列
[1 2 4 6 5 9]
一次交换
[1 2 4 5 6 9]
以下表现其单处理器算法,类似冒泡排序,较为简单但效率并不特别高。
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
void swap(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
void printArray(int a[], int count)
{
int i;
for(i = 0; i < count; i++)
printf("%d ",a[i]);
printf("\n");
}
void Odd_even_sort(int a[], int size)
{
bool sorted = false;
while(!sorted)
{
sorted = true;
for(int i = 1; i < size - 1; i += 2)
{
if(a[i] > a[i + 1])
{
swap(&a[i], &a[i + 1]);
sorted = false;
}
}
for(int i = 0; i < size - 1; i += 2)
{
if(a[i] > a[i + 1])
{
swap(&a[i], &a[i+1]);
sorted = false;
}
}
}
}
int main(void)
{
int a[] = {
3, 5, 1, 6, 9, 7, 8, 0, 11};
int n = sizeof(a) / sizeof(*a);
Odd_even_sort(a, n);
printArray(a, n);
return 0;
}
2.设圆半径r=1.5,圆柱高h=3
// 设圆半径r = 1.5,圆柱高h = 3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱表面积,圆柱体积
// 要求:用scanf输入数据,取小数点后两位
#include <stdio.h>
int main()
{
float r,h;
float c,s