(1)随机产生20个int类型的数组元素,编写并调用函数用冒泡排序法按降序排列后输出;编写并调用函数用简单选择排序法按降序排列后输出;
(2)输入几个英文姓氏,对其进行升序排列。
(3)向一个已经排好序的数组a中插入一个数,要求插入后数组仍按原来的规律排序,然后再将该数组的第3个元素删除,请编程实现该操作并显示插入和删除以后的数组。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int nums[20];
int i,j,k,tmp;
void product_num();
void maopao_rank();
void simple_rank();
void main(){
printf("请选择排序方式!输入数字1:冒泡排序,2:选择排序\n");
scanf_s("%d",&k);
if(k==1){
product_num();
maopao_rank();
}else if(k==2){
product_num();
simple_rank();
}else{
printf("输入不符请重新输入");
}
}
void product_num(){
srand((unsigned int)time(NULL));
for(i=0;i<20;i++){
nums[i]=rand()%100;
}
}
void maopao_rank(){
for(j=1;j<20;j++){
for(i=0;i<20-j;i++){
if(nums[i]<nums[i+1]){
tmp=nums[i];
nums[i]=nums[i+1];
nums[i+1]=tmp;
}
}
}
for(i=0;i<20;i++){
printf("%d ",nums[i]);
}
}
void simple_rank(){
for(j=0;j<19;j++){
int max=j;
for(i=j+1;i<20;i++){
if(nums[i]>nums[max]){
tmp=nums[max];
nums[max]=nums[i];
nums[i]=tmp;
}
}
}
for(i=0;i<20;i++){
printf("%d ",nums[i]);
}
}
2:
#include <stdio.h>
#include <string>
void main() {
printf("请输入5个英文姓氏");
char *a[5];
char *tmp;
int m = 5, i, j;
for (i = 0; i < m;i++) {
gets(a[i]);
}
for (i = 0; i < m - 1; i++) {
for (j = i + 1; j < m; j++) {
if (strcmp(a[i], a[j]) >0) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
for (i = 0; i < m; i++) {
puts(a[i]);
}
}
3:
#include <stdio.h>
void main(){
int a[6]={1,4,9,13,25};
int x,i;
printf("请输入数字:\n");
scanf("%d",&x);
for(i=4;i>=0;i--){
if(a[i]>x){
a[i+1]=a[i];
}else{
break;
}
}
a[i+1]=x;
printf("插入数组后:\n");
for(i=0;i<6;i++){
printf("%d ",a[i]);;
}
printf("删除数组第三个后:\n");
for(i=2;i<6;i++){
a[i]=a[i+1];
}
for(i=0;i<5;i++){
printf("%d ",a[i]);;
}
}