第一题 求实数的绝对值
题目
求实数的绝对值。
输入 输入数据有多组,每组占一行,每行包含一个实数。
输出 对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。
思路
这道题目就是考察了我们绝对值求法,也就是判断,将数分为两部分,需要变号和不需要变号的两部分,对于需要变号的也就是小于0的数字,我们变号后输出即可,对于不需要变号的,我们就进行直接输出。
在这里题目要求我们输入数据有多组,所以这里我们就要运用EOF的知识,而这部分我们在上期已经讲过了,所以在这就不细说,直接沾上链接,如果有需要的就去看一下吧:
【C语言基础】那些必会的编程练习题-第一部分_红颜如霜凝结了过往的博客-CSDN博客
AC
#include <stdio.h> int main(){ double number; while((scanf("%lf",&number)!=EOF)){ if(number<0) number=-number; printf("%.2lf\n",number); } return 0; }
运行结果:
第二题 计算球体积
题目
求实数的绝对值。
输入 输入数据有多组,每组占一行,每行包含一个实数。
输出 对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。
思路
第二题考察了一个球的体积公式,也就是 V=(4/3)πR³ ;我们在C语言中使用这个公式去计算即可,当然这次在代码中我们提到了一个 #define, 那就为大家简单介绍一下这个吧。
#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。
使用规则:
#define 宏名 字符串
#表示这是一条预处理命令,所有的预处理命令都以 # 开头。宏名是标识符的一种,命名规则和变量相同。字符串可以是数字、表达式、if 语句、函数等。
同理我们也可以用此讲PI和3.1415926去联立在一起,当我们调用PI的时候就是调用3.1415926了。
AC
#include <stdio.h> #define PI 3.1415927 int main(){ double r; double result; while((scanf("%lf",&r))!=EOF){ result=4.0*PI*r*r*r/3.0; printf("%.3lf\n",result); } return 0; }
运行结果
第三题 两点距离
题目
输入两点坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),计算 并输出两点间的距离。
输入 第一行输入一个整数 n(0<n<=1000),表示有 n 组测试数据;随后每组占一行,由 4 个实数组成,分别表示 x1,y1,x2,y2,数据之间用空格隔开。
输出 对于每组输入数据,输出一行,结果保留两位小数。
思路
这道题目就是考察了我们勾股定理了,我们可以通过两个点的坐标,去求得直角三角形两个直角边的长度,然后我们就可以使用勾股定理( c^2 = a^2 + b^2) 去求得斜边的平方,这时我们可以去调用sqrt()函数去求得其平方根。
sqrt()函数我们也在之前提到过,这里也就不细说
AC
#include <stdio.h> #include <math.h> int main(){ int T; double a; double b; double c; double d; double distance; scanf("%d",&T); while(T--){ scanf("%lf%lf%lf%lf",&a,&b,&c,&d); distance=sqrt((a-c)*(a-c)+(b-d)*(b-d)); printf("%.2lf\n",distance); } return 0; }
运行结果:
#include <stdio.h> #include <math.h> int main(){ int T; double a; double b; double c; double d; double distance; scanf("%d",&T); while(T--){ scanf("%lf%lf%lf%lf",&a,&b,&c,&d); distance=sqrt((a-c)*(a-c)+(b-d)*(b-d)); printf("%.2lf\n",distance); } return 0; }
第四题 ASCII 码排序
题目
输入三个字符(可以重复)后,按各字符的 ASCII 码从小到大的顺 序输出这三个字符。
输入 第一行输入一个数 N,表示有 N 组测试数据。后面的 N 行输入多组数据,每组输入数 据都是占一行,有三个字符组成,之间无空格。
输出 对于每组输入数据,输出一行,字符中间用一个空格分开。
思路
这道题目是让我们按ASCII 码排序,那么我们先了解一下ASCII 码。
ASCII(发音:,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。
ASCII 码表:
这里我们字符的比较也就是比较其ASCII 码,所以我们就将其当成一个平时的数字去进行比较就行,不要想那么多,小的就先输出,大的后输出。这样就可以了。
AC
#include <stdio.h> int main() { char a; char b; char c; char temp; int T; scanf("%d",&T); getchar(); while(T--){ scanf("%c%c%c",&a,&b,&c); //输入 getchar(); if(a>b){ //判断ab大小 temp=a; //交换 a=b; b=temp; } if(a>c){ temp=a; a=c; c=temp; } if(b>c){ temp=b; b=c; c=temp; } printf("%c %c %c\n",a,b,c); } return 0; }
运行结果:
第五题 数值统计
题目
统计给定的 n 个数中,负数、零和正数的个数。
输入 输入数据有多组,每组占一行,每行的第一个数是整数 n(n<100),表示需要统计 的数值的个数,然后是 n 个实数;如果 n=0,则表示输入结束,该行不做处理。
输出 对于每组输入数据,输出一行 a,b 和 c,分别表示给定的数据中负数、零和正数的个 数。
思路
这道题目就是将输入的数去进行一个分类就可以了,先设出三个变量,用来表示其负数 零 正数的个数,之后我们每个数都进行判断,如果是哪个变量,就对应++即可,这样我们最后输出三个变量就可以得到我们最后的结果了。
AC
#include <stdio.h> int main() { int n; int i; int a; int b; int c; double number; while(1) { a=0; b=0; c=0; scanf("%d",&n); if(n==0) break; for(i=0;i<n;i++){ scanf("%lf",&number); if(number<0) //负数 a++; else if(number==0) //0 b++; else //正数 c++; } printf("%d %d %d\n",a,b,c); } return 0; }
按0直接退出
正常输入相关个数:
好的,到了这里我们这期的习题就到这里了,希望这些题目可以帮助到你,加油。