|
|
发表于 2020-11-30 23:10:20
|
显示全部楼层
- #include <stdio.h>
- #include <stdbool.h>
- #include <math.h>
- #include <limits.h>
- #define max(a,b) (a > b ? a : b)
- #define min(a,b) (a > b ? b : a)
- void init(){
- printf("\t\t\t1) 将3个数排序\n\
- 2) 闰年识别\n\
- 3) 三角形面积计算\n\
- 4) 简单四则运算\n\
- 5) 求10个数的最大最小值\n\
- 6) 用选择法将10个数排序\n\
- 7) 用二分法算法查找\n\
- 8) 退出\n\n");
- }
- void SelectSort(int a[],int n)
- {
- int i,j,temp,max;
- for(i=0;i<n-1;i++)
- {
- max=i;
- for(j=i+1;j<n;j++)
- {
- if(a[max]<a[j])
- {
- max=j;
- }
- }
- if(max!=i)
- {
- temp=a[max];
- a[max]=a[i];
- a[i]=temp;
- }
- }
- }
- void print(int arr[], int n){
- if(n == 0)return ;
- printf("%d",arr[0]);
- for(int i = 1; i < n; ++i){
- printf(" %d",arr[i]);
- }
- putchar('\n');
- }
- void leap_year(){
- int year;
- printf("请输入一个年份: ");
- scanf("%d",&year);
- if(year%4==0&&year%100!=0||year%400==0)
- printf("%d是润年",year);
- else printf("%d不是润年");
- putchar('\n');
- }
- void triangle(){
- double a, b, c;
- printf("请输入三角形的三条边: ");
- scanf("%lf %lf %lf", &a, &b, &c);
- if( a + b > c && a + c > b && b + c > a )
- {
- double area , s ;
- s = ( a + b + c ) / 2.0;
- area = sqrt ( s * ( s - a ) * ( s - b ) * ( s - c ) );
- printf("三角形的面积为: %.2f\n", area);
- }
- else printf("输入的三条边不能构成三角形\n");
- }
- void compute(){
- double a,b;
- printf("请输入2个数字: ");
- scanf("%lf%lf",&a,&b);
- printf("%.2lf + %.2lf = %.2lf\n\
- %.2f - %.2f = %.2f\n\
- %.2f * %.2f = %.2f\n\
- %.2f / %.2f = %.2f\n",a,b,a+b,a,b,a-b,a,b,a*b,a,b,a/b);
-
- }
- void maxmin(int *arr, int n){
- int mx = INT_MIN, mi = INT_MAX;
- for(int i = 0; i < n; ++i){
- mx = max(arr[i],mx);
- mi = min(arr[i],mi);
- }
- printf("最大值为: %d\n最小值为: %d\n",mx,mi);
- }
- int binarySearch(int *nums, int n, int target){
- if(n == 0)
- return -1;
- int left = 0, right = n - 1;
- while(left <= right){
- // Prevent (left + right) overflow
- int mid = left + (right - left) / 2;
- if(nums[mid] == target){ return mid; }
- else if(nums[mid] < target) { left = mid + 1; }
- else { right = mid - 1; }
- }
- // End Condition: left > right
- return -1;
- }
- int main(void){
- while(true){
- init();
- int choose;
- scanf("%d",&choose);
- switch(choose){
- case 1 :
- {
- printf("请输入3个数: ");
- int arr1[3] = {0};
- for(int i = 0; i < 3; ++i){
- scanf("%d", &arr1[i]);
- }
- SelectSort(arr1,3);
- print(arr1,3);
- break;
- }
- case 2 :
- leap_year();
- break;
- case 3 :
- triangle();
- break;
- case 4 :
- compute();
- break;
- case 5 :
- {
- int arr2[10] = {0};
- printf("请输入10个数: ");
- for(int i = 0; i < 10; ++i){
- scanf("%d",&arr2[i]);
- }
- maxmin(arr2,10);
- break;
- }
- case 6 :
- {
- int arr3[10] = {0};
- printf("请输入10个数: ");
- for(int i = 0; i < 10; ++i){
- scanf("%d",&arr3[i]);
- }
- SelectSort(arr3,10);
- print(arr3,10);
- break;
- }
-
- case 7 :
- {
- int arr4[10] = {0};
- printf("请输入10个数: ");
- for(int i = 0; i < 10; ++i){
- scanf("%d",&arr4[i]);
- }
- int x;
- printf("请输入要查找的值: ");
- scanf("%d",&x);
- int index = binarySearch(arr4,10,x);
- if(index == -1){
- printf("数组中没有%d",x);
- }else {
- printf("%d的下标为%d",x,index);
- }
- putchar('\n');
- break;
- }
- case 8 :
- return 0;
- }
- }
- return 0;
- }
复制代码 |
|