1.编一C程序,它能对输入的一串整数(不多于1000个,以-9999为结束标记,-9999不参与排序),
进行直接插入排序(从小到大排序),输出排序结果和所用的关键字比较次数。
#include<stdio.h> #define END -9999 #define MAX_SIZE 1005 int array[MAX_SIZE],n; int cnt; void BubbleSort(){ int i,j; int temp; for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++,++cnt){ if(array[j] > array[j+1]){ temp = array[j]; array[j]= array[j+1]; array[j+1] = temp; } } } } int main(){ int x; printf("这是冒泡排序\n"); printf("请输入一串整数:\n"); for(n=0;scanf("%d",&x) && x!=END;array[n++]=x){} BubbleSort(); for(x=0;x<n;printf("%d%c",array[x]," \n"[x+1==n]),++x){} printf("所用的关键字比较次数:%d\n",cnt); return 0; }
2.编一C程序,它能读入一串(n个)整数(n<1000,以-9999为结束标记),并判断第n个整数(即-9999的前一个)在前(n-1)个整数中出现的次数,
再输出该次数(输入时,两个相邻的整数用空格隔开)。
#include<stdio.h> #define MAX_SIZE 1005 #define END -9999 int array[MAX_SIZE],n; int main(){ int x,num=0; printf("请输入一串数字,以-9999结尾:\n"); for(n=0;scanf("%d",&x) && x!=END;array[n++]=x){} for(x=0;x<n;x++){ if(array[x] == array[n-1]){ num++; } } printf("%d出现的次数为%d",array[n-1],num); printf("\n"); return 0; }