山东春季高考-C语言-综合应用题
(2018年)3.按要求编写以下C语言程序:
(1)从键盘上输入三个整数a、b、c,判断能否以这三个数为边构成三角形,若可以则计算机三角形的面积且保留两位小数;若不可以则输出“不能构成三角形”。
(提示:三角形的面积公式为:S=√P(P−a)(P−b)(P−c)  ̄,P=(a+b+c)/2)
(2)一个数列是:1/2,-3/2,5/3,-8/5,……,求这个数列的前20项之和。
#include <stdio.h>
#include <math.h>
int main() {int a, b, c;float s, p;scanf("%d %d %d", &a, &b, &c);if (a + b > c && a + c > b && b + c > a) {p = (a + b + c) / 2.0;s = sqrt(p * (p - a) * (p - b) * (p - c));printf("三角形的面积是: %.2f\n", s);} else {printf("不能构成三角形\n");}return 0;
}
#include <stdio.h>
main()
{int i,t;float a,b,m,sum;t=1;a=2;b=1;sum=0; //t表示±,a表示分子,b表示分母,sum表示总数 for(i=1;i<=20;i++){sum=sum+t*a/b;m=a;a=a+b;b=m;t=-t;}printf("sum=%f\n",sum);}
(2019年)3.按要求编写以下C语言程序:
(1)统计自今年至2100年的闰年个数,输出具体年份(格式为:2020年),输出时一行只显示10个年份。(提示:年份能被4整除但不能被100整除或者能被400整除,即为闰年)
(2)求Sn=1+1/2+1/4+1/7+1/11+1/16+1/22+……+an的值,直到最后一项的值小于10的-5次方
#include<stdio.h>
main()
{int year,n=0;for(year=2019;year<=2100;year++){if(year%4==0&&year%100!=0||year%400==0){n++;printf("%d年 ",year);if(n%10==0) printf("\n");}}printf("至2100年,闰年有%d个",n);
}
#include<stdio.h>//需要核对
main(){int n=1;float s=1,m=1;while(m>=1e-5){m=1.0/(n+1.0/m);s=s*m;n=n+1;}printf("s=%f",s);}
(2020年)3.按要求编写以下C语言程序:
#include<stdio.h>
#include<math.h>
int main(){float x,y;printf("请输出x的值:");scanf("%f",&x);if(x<0) y=x*x;else if(x<10) y=2*x-1;else y=sqrt(x+5);printf("\n x=%f时,y=%f",x,y);
}
(2)请编写程序,将11位评委给出的选手成绩存至一维数组,计算并输出选手的最终成绩(保留两位小数)。选手的最终成绩为去掉一个最高分和一个最低分的平均成绩。
#include<stdio.h>
int main(){int i;float a[11],min,max,sum,ave;printf("请输入评委给出的成绩:");for(i=0;i<11;i++)scanf("%f",&a[i]);max=min=sum=a[0];for(i=1;i<11;i++){sum+=a[i];if(a[i]>max) max=a[i];if(a[i]<min) min=a[i];} ave=(sum-max-min)/9;printf("\n选手的最终得分为:%.2f\n",ave);
}
(2021年)3.按要求编写以下C语言程序:
(1)现有序列{2,3,7,8,10,12,13,15,16,17},输出其中的偶数及所有偶数的和
#include <stdio.h> int main() { int a[] = {2, 3, 7, 8, 10, 12, 13, 15, 16, 17}; int sum = 0; printf("偶数有:"); for (int i = 0; i < 10; i++) { // 由于题目中要求输出序列中的偶数,所以不使用步长为2 if (a[i] % 2 == 0) { // 判断是否为偶数 printf("%d ", a[i]); sum += a[i]; // 偶数求和 } } printf("\n所有偶数的和为:%d\n", sum); return 0;
}
(2)在200米短跑比赛中,对前五名选手进行积分奖励,其他选手不在奖励行列。赋分规则为:第五名得2分,第四名比第五名多的2分,依次类推。
要求:先定义一个函数fun,实现根据名次进行赋分,再通过函数调用,对选手进行积分奖励。
#include <stdio.h> // 定义赋分函数
int fun(int rank) { if (rank == 5) { return 2; // 第五名得2分 } else if (rank == 4) { return 4; // 第四名得4分 } else if (rank == 3) { return 6; // 第三名得6分 } else if (rank == 2) { return 8; // 第二名得8分 } else if (rank == 1) { return 10; // 第一名得10分 } else { return 0; // 其他名次得0分 }
} int main() { int ranks[5]; int scores[5]; // 输入前五名选手的名次 printf("请输入前五名选手的名次(1-5):\n"); for (int i = 0; i < 5; i++) { printf("选手 %d 名次: ", i + 1); scanf("%d", &ranks[i]); } // 通过赋分函数计算得分 for (int i = 0; i < 5; i++) { scores[i] = fun(ranks[i]); } // 输出每位选手的名次和得分 printf("\n名次与得分:\n"); for (int i = 0; i < 5; i++) { printf("选手 %d 名次 %d 得分 %d\n", i + 1, ranks[i], scores[i]); } return 0;
}
(2022年)2.某校团委需统计各班学生“青年大学习”的完成情况,请按要求编写C程序。
(1) 定义函数count,计算班级“青年大学习”完成比(=已完成人数/应完成人数*100%)。
(2) 在 count 函数中,根据完成比输出对应等级,对应关系为:完成比≥90%为“优秀”≥80%为“良好”,≥60%为“合格”,其他情况为“不合格”。
(3) 通过主函数对 count函数进行调用。
#include <stdio.h>
void count(int x,int y){float z;int m;z=(float)x/y;m=(int)(z*100)/10;printf("完成率=%lf%",z*100);printf("完成情况:");switch(m){case 10:case 9:printf("优秀");break;case 8:printf("良好");break;case 7:case 6:printf("合格");break;default:printf("不合格");}
}
main(){int a,b;printf("请输入完成人数和总人数:"); scanf("%d,%d",&a,&b);count(a,b);
}
(2023年)用公式sin(x)=x-x的3次方/3的阶乘
24模拟
#include <stdio.h>
double f(double x,int n){double s=1;int i;for(i=1;i<=n;i++) s*=x+n;return s;
}
main(){int i,n;double s=0,t=-1,x;scanf("%lf,%d",&x,&n);for(i=1;i<=n;i++){ s+=t*f(x,i)/(2*i+1);t=-t;}printf("s=%f\n",s);
}