C语言萌新写题第二天

目前只上传自己做的题目

  1. 第一题
    某医院想统计一下某项疾病的获得是否与年龄相关,需要对以前的诊断记录进行整理,按照018,1935,36~60,60以上四个年龄段统计的患病人数占总患病人数的比例
    输入比例个数
    输入患病的年龄
    输出四个年龄段患病的比例
    代码:


#include<stdio.h>
int main(){
       int n, i, j, k;
       printf("请输入病历个数:");
       scanf("%d", &n);
       int patients[n];
       for(i = 0; i < n; i++){
              printf("请输入患病的年龄:");
              scanf("%d", patients + i);
       }
       int p1 = 0, p2 = 0, p3 = 0, p4 = 0;
       for(j = 0; j < n; j++){
              if(0 <= *(patients + j) && 18 >= *(patients + j))
                p1 += 1;
              else if(19 <= *(patients + j) && 35 >= *(patients + j))
                p2 += 1;
              else if(36 <= *(patients + j) && 60 >= *(patients + j))
                p3 += 1;
              else
                p4 += 1;
       }
       printf("四个年龄段的比例:%d : %d : %d : %d\n", p1, p2, p3, p4);
}

运行结果:
在这里插入图片描述

  1. 已知一个已经从小到大排好序的数组,连续数值相同的数就组成一个高度相同的平台,编写一个程序,输入一个排好序的数组,输出最长平台的长度。


#include<stdio.h>
int main(){
       int a[10], n, i, j, k;
       printf("请输入数组元素:");
       for(i = 0; i < 10; i++)
              scanf("%d", a + i);
       for(i = 0; i < 10; i++)
              for(j = 0; j < 9; j++)
                  if(a[j] > a[j + 1]){
                            a[j + 1] = a[j] + a[j + 1];
                            a[j]= a[j + 1] - a[j];
                            a[j + 1] = a[j + 1] - a[j];
                     }
       printf("验证是否按照从小到大排序:\n");
       for(i = 0; i < 10; i++)
       printf("%-5d", a[i]);
       printf("\n");
       int b[10] = {0};
       for(i = 0; i < 10; i++)
       {
         if(i == 0){
              b[i] = 1;
         }
         else if(a[i] == a[i - 1])
         {
              b[i] = b[i - 1] + 1;
         }
         else
         {
              b[i]= 1;
         }  
         printf(" %d ", b[i]);
       }
       printf("\n");
       int max = b[0];
       for(j= 0; j < 10; j++)
       {
              if(max < b[j])
                max = b[j];
       }
       printf("最长平台的长度:%d\n", max);
}

运行结果:
在这里插入图片描述

  1. 有一个4行5列的二维数组,通过键盘输入赋初值,找出该数组中的靶点,即该位置上的元素在该行上最大、在该列上最小。也可能没有靶点。

代码:

#include<stdio.h>
int main(){
       int a[4][5], i, j, k, n;
       for(i= 0; i < 4; i++){
              for(j= 0; j < 5; j++){
                     printf("请为第%d行第%d列赋值:",i+1, j+1);
                     scanf("%d",*(a + i) + j);
              }
       }
       for(i= 0; i < 4; i++){
              for(j= 0; j < 5; j++){
                     printf("%-5d",*(*(a + i) + j));
             }
              printf("\n");
       }
       int max = 0, min = 0;
       for(i= 0; i < 4; i++){
           //找出第i行j中的最大值max
              for(j= 0; j < 5; j++){
                     if(max< a[i][j]){
                       max = a[i][j];        
                     }
              }
              //确认max在第i行k列的位置
              for(k= 0; k < 5; k++){
                     if(max== a[i][k])
                     {
                         //对比max在该列位置上的其他行的数的大小
                            for(n= 0; n < 4; n++)
                            {
                                   if(max  > a[n][k])
                                         break;
                                   else
                                        min= max;
                            }
                     }
              }
       }
       if(min== 0 && max == 0)
         printf("这个二维数组不存在靶点!\n");
       else
         printf("%d是靶点!\n",min);
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值