信息学奥赛一本通 第二章 顺序结构程序设计 五节C语言非C++
2023-12-16 13:38:35
第五节 顺序结构实例
2070:【例2.13】数字对调
#include <stdio.h>
int main()
{
int n, a, b, c;
// 从输入读取一个整数n
scanf("%d", &n);
// 通过取余数运算得到n的个位数a
a = n%10; // 个位
// 通过除以10然后取余数运算得到n的十位数b
b = n/10%10; // 十位
// 通过除以100运算得到n的百位数c
c = n/100; // 百位
// 输出n的个位、十位和百位数字反转后得到的新数字
// 注意,如果a是0,那么输出的数字没有百位
printf("%d", a*100+b*10+c);
return 0;
}
2071:【例2.14】平均分
#include <stdio.h>
int main()
{
// 声明两个double类型的变量x, y
double x, y;
// 从输入读取两个double类型的数并分别赋给x和y
scanf("%lf %lf", &x, &y);
// 计算x乘以87加上y乘以85,然后除以x加y的结果
// 并将结果以保留4位小数的形式打印出来
printf("%.4f", (x*87+y*85)/(x+y));
return 0;
}
2072:【例2.15】歌手大奖赛
#include <stdio.h>
int main()
{
double t, h, l; // t:总分,h:最高分,l:最低分
t = 6*9.6; // 总分计算为6个9.6的和
h = t-5*9.4; // 最高分为总分减去5个9.4
l = t-5*9.8; // 最低分为总分减去5个9.8
// 计算(t-h-l)/4的结果,即去掉最高分和最低分后的平均分
// 以保留两位小数的形式打印结果
printf("%5.2f", (t-h-l)/4);
return 0;
}
2073:【例2.16 】三角形面积
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 声明四个double类型的变量a, b, c, p
double a, b, c, p;
// 从输入读取三个double类型的数并分别赋给a, b, c
scanf("%lf %lf %lf", &a, &b, &c);
// 计算(a+b+c)/2的结果并赋给p
p = (a+b+c)/2;
// 计算sqrt(p*(p-a)*(p-b)*(p-c))的结果,即根据海伦公式计算的三角形的面积
// 并将结果以保留3位小数的形式打印出来
printf("%.3f", sqrt(p*(p-a)*(p-b)*(p-c)));
return 0;
}
1029:计算浮点数相除的余
#include<stdio.h>
#include<math.h>
int main()
{
// 声明两个double类型的变量a, b
double a, b;
// 从输入读取两个double类型的数并分别赋给a和b
scanf("%lf %lf", &a, &b);
// 计算a除以b的商的整数部分,然后这个整数乘以b后和a的差
// 这实际上等价于a除以b的余数
// 并将结果打印出来
printf("%g", a - (int)(a/b) * b); // 或a - floor(a/b) * b
return 0;
}
1030:计算球的体积
#include<stdio.h>
int main()
{
// 声明并初始化一个常量PI,表示圆周率
const double PI = 3.14;
// 声明一个double类型的变量r,表示球的半径
double r;
// 从输入读取一个double类型的数并赋给r
scanf("%lf", &r);
// 计算球的体积,公式为4/3*PI*r*r*r
// 这里将4强制转换为double类型后参与除法运算,即可进行实数相除运算
// 并将结果以保留2位小数的形式打印出来
printf("%.2f", (double)4/3*PI*r*r*r);
return 0;
}
1031:反向输出一个三位数
#include<stdio.h>
int main()
{
// 声明一个整型变量n
int n;
// 从输入读取一个整数并赋给n
scanf("%d", &n);
// 对n进行循环,每次都将n除以10
for(int a = n; a > 0; a /= 10)
// 打印出n除以10的余数,也就是n的最后一位数字
printf("%d", a % 10);
return 0;
}
1032:大象喝水查
#include<stdio.h>
#include<math.h>
int main()
{
// 声明并初始化一个常量PI,表示圆周率
const double PI = 3.14159;
// 声明两个整型变量h和r,分别表示圆柱体的高度和半径
int h, r;
// 从输入读取两个整数并分别赋给h和r
scanf("%d %d", &h, &r);
// 计算圆柱体的体积(公式为PI*r*r*h),然后用20000(单位为立方厘米,相当于20升)除以圆柱体的体积,并向上取整(因为如果不足一桶需要再加一桶)
// 这里的结果是需要多少桶才能装满20升的水
// ceil()函数返回的值为double类型,所以需要强制转换为int型输出
printf("%d", (int)ceil(20/(PI*r*r*h/1000)));
return 0;
}
1033:计算线段长度
#include<stdio.h>
#include<math.h>
int main()
{
//声明四个double型变量,分别表示两个二维点的坐标
double xa, ya, xb, yb;
//从输入读取四个浮点数,分别赋值给xa, ya, xb, yb
scanf("%lf %lf %lf %lf", &xa, &ya, &xb, &yb);
//计算两点间的欧氏距离,公式为sqrt((xa-xb)^2 + (ya-yb)^2)
//并将结果保留三位小数,打印输出
printf("%.3f", sqrt((xa-xb)*(xa-xb) + (ya-yb)*(ya-yb)));
return 0;
}
1034:计算三角形面积
#include <stdio.h>
#include <math.h>
int main()
{
// 声明六个double类型的变量x1, y1, x2, y2, x3, y3,分别表示三个二维点的坐标
// 声明四个double类型的变量a_m, b_m, adotb, res,用于计算过程中的中间结果
double x1,y1,x2,y2,x3,y3, a_m, b_m, adotb, res;
// 从输入读取六个double类型的数并分别赋给x1, y1, x2, y2, x3, y3
scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
// 计算向量a的模(长度),公式为sqrt((x2-x1)^2 + (y2-y1)^2)
a_m = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
// 计算向量b的模(长度),公式为sqrt((x3-x1)^2 + (y3-y1)^2)
b_m = sqrt((x3-x1)*(x3-x1) + (y3-y1)*(y3-y1));
// 计算向量a和向量b的点积,公式为(x2-x1)*(x3-x1) + (y2-y1)*(y3-y1)
adotb = (x2-x1)*(x3-x1)+(y2-y1)*(y3-y1);
// 计算向量a和向量b所构成的平行四边形的面积,公式为0.5*sqrt(a_m*b_m*a_m*b_m - adotb*adotb)
res = 0.5 * sqrt(a_m*b_m*a_m*b_m-adotb*adotb);
// 以两位小数的精度打印res
printf("%.2lf\n", res);
return 0;
}
1035:等差数列末项计算
#include <stdio.h>
int main()
{
// 声明三个整数变量a1, a2, n,分别表示等差数列的前两项和项数
int a1, a2, n;
// 从输入读取三个整数并分别赋给a1, a2, n
scanf("%d%d%d", &a1, &a2, &n);
// 计算等差数列的第n项,等差数列的通项公式为an = a1 + (n-1)*d,其中d为公差,这里的公差d等于a2 - a1
// 然后将结果打印出来
printf("%d\n", a1 + (a2 - a1) * (n - 1));
return 0;
}
1036:A×B问题
#include <stdio.h>
int main()
{
// 声明两个long long类型的变量a, b,用于存储输入的两个大整数
long long a, b;
// 从输入读取两个long long类型的数并分别赋给a, b
scanf("%lld %lld", &a, &b);
// 计算a和b的乘积,并将结果打印出来
printf("%lld", a * b);
return 0;
}
1037:计算2的幂
#include <stdio.h>
int main()
{
// 声明两个整数变量n, r,其中n用于存储输入的整数,r用于计算2^n
int n, r = 1;
// 从输入读取一个整数并赋给n
scanf("%d", &n);
// 使用for循环计算2^n,每次循环让r乘以2,循环n次
for(int i = 0; i < n; ++i)
r *= 2;
// 打印2^n的结果
printf("%d", r);
return 0;
}
1038:苹果和虫子
#include <stdio.h>
#include <math.h>
int main()
{
// 声明三个double类型的变量n, x, y,用于存储输入的三个浮点数
double n, x, y;
// 从输入读取三个double类型的数并分别赋给n, x, y
scanf("%lf %lf %lf", &n, &x, &y);
// 计算n - y / x的值,然后将结果向下取整(floor函数),
// 然后和0比较取最大值(使用fmax函数),
// 最后将结果转换为整数(使用(int)进行类型转换)并打印出来。
printf("%d", (int)fmax(0, floor(n - y / x)));
return 0;
}
文章来源:https://blog.csdn.net/weixin_44738632/article/details/134974648
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!