目前只上传自己做的题目
- 第一题
某医院想统计一下某项疾病的获得是否与年龄相关,需要对以前的诊断记录进行整理,按照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);
}
运行结果:
- 已知一个已经从小到大排好序的数组,连续数值相同的数就组成一个高度相同的平台,编写一个程序,输入一个排好序的数组,输出最长平台的长度。
#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);
}
运行结果:
- 有一个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);
}
运行结果: