山东春季高考-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);
}