电专c语言oj探秘1

题组86

本题组来源于西电oj的86题组(hqy老师课程课后习题),题目很简单,适合萌新。

本题涉及的所有文件都会在蓝奏云上发布。

本人新手,第一次写题解,如有不当之处,多多包涵,如有错误,请指正谢谢!

电专必看

如果你提交的时候一直编译错误:

请确保你提交的题目选择的文件匹配。

请确保你选择的编译选项正确,一般有两个选项visual c++和GNU C/C++(通常其他的编译器如devc++选择这个)。编者因为选错报错了一次

请确保你使用的标准是ANSIC或者C99,没有任何奇奇怪怪的东西(如vs的scanf_s函数等)。

T9

题目:计算球体重量

时间限制:1s

内存限制:10000Kb

问题描述:已知铁的比重是7.86(克/立方厘米),金的比重是19.3(克/立方厘米)。写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926

输入说明:输入两个整数,分别表示铁球与金球的直径(单位为毫米)。

输出说明:输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔。

输入样例:

100 100

输出样例:

4115.486 10105.456

提示:用scanf输入,用printf输出,保留3位小数的格式控制字符为%.3f

本题小解析

这道题主要是要注意运用球的体积公式(注意直径),还有就是注意单位换算(/1000),其他的小注意点如格式控制字符实数运算等。

弱鸡代码

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(){
int d1,d2;
double m1,m2;
const double PI=3.1415926;
scanf("%d %d",&d1,&d2);
m1=PI*d1*d1*d1/6000*7.86;
m2=PI*d2*d2*d2/6000*19.3;
printf("%.3f %.3f",m1,m2);
return 0;
}

T10

题目:温度转换

时间限制:1s

内存限制:10000Kb

问题描述:已知华氏温度到摄氏温度的转换公式为:摄氏温度= (华氏温度- 32)×5/9,写程序将给定的华氏温度转换为摄氏温度输出。

输入说明:只有一个整数,表示输入的华氏温度。

输出说明:输出一个表示摄氏温度的实数,小数点后保留2位有效数字,多余部分四舍五入。

输入样例:

50

输出样例:

10.00

提示:

用scanf输入,用printf输出,保留2位小数的格式控制字符为%.2f

本题小解析

注意精度控制实数运算即可。

弱鸡代码

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main(){
int f;
double c;
scanf("%d",&f);
c=(f-32)*5.0/9.0;
printf("%.2f",c);
return 0;
}

T11

题目:整数简单运算

问题描述:编写程序,计算用户输入的两个整数的和、差、乘积(*)和商(/)。

输入格式:输入两个整数,整数之间用空格分隔。

输出格式:输出四个整数结果,分别表示和、差、积和商,每输出一个结果换行。

输入样例:

3 4

输出样例:

7

-1

12

0

本题小解析

照样子做就行,可以选择定义结果的变量也可以选择直接输出。

没有/0差评。

弱鸡代码

1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
printf("%d\n",a-b);
printf("%d\n",a*b);
printf("%d\n",a/b);
return 0;
}

T16

题目:字符输入输出

问题描述:通过键盘输入5个大写字母,输出其对应的小写字母,并在末尾加上“!”。

输入说明:5个大写字母通过键盘输入,字母之间以竖线“|”分隔。

输出说明:输出5个大写字母对应的小写字母,之间无分隔,并在末尾加上‘!’。

输入样例:

H|E|L|L|O

输出样例:

hello!

本题小解析

这道题主要注意的就是字母大小写的转换,需要查询ASCII码表,并直接对ASCII码进行操作(-32)

另外注意输入样例的时候,scanf函数对非格式控制符是需要进行原样输入的。举个栗子,弱鸡代码里面的就需要输入A|B|C|D|E才能正常读取所有变量,即|字符需要原样输入。

可以选择输入字符串然后取出五个字符,或者直接输入五个字符。我tm在讲什么狗屁

弱鸡代码

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main(){
char a,b,c,d,e;
scanf("%c|%c|%c|%c|%c",&a,&b,&c,&d,&e);
a+=32;
b+=32;
c+=32;
d+=32;
e+=32;
printf("%c%c%c%c%c!",a,b,c,d,e);
return 0;
}

T18

题目:数字字符

问题描述:通过键盘输入1个整数a(0<=a<=4),1个数字字符b(’0’<=b<=’5’),求a+b。

输入说明:整形数据、数字字符通过键盘输入,输入的整形数据介于0和4之间,输入的数字字符介于‘0’和‘5’之间,二个输入数之间用“,”分隔。

输出说明:分别以整数形式及字符形式输出a+b,输出的二个数之间用“,”分隔。

输入样例:

3,5

输出样例:

56,8

本题小解析

直接照着要求做,该怎么输入怎么输出就怎么搞,别想太多

弱鸡代码

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(){
int a;
char b;
scanf("%d,%c",&a,&b);
printf("%d,%c",a+b,a+b);
return 0;
}

T19

题目:实数运算

问题描述:通过键盘输入长方体的长、宽、高,求长方体的体积V(单精度)。

输入说明:十进制形式输入长、宽、高,输入数据间用空格分隔。

输出说明:单精度形式输出长方体体积V,保留小数点后3位,左对齐。

输入样例:

15 8.12 6.66

输出样例:

811.188

本题小解析

主要是注意精度问题,输出格式问题和左对齐问题。

用printf函数修饰符-来控制左对齐,在没有设置域宽(如本题)的时候,一般不用修饰符-,即默认左对齐。

弱鸡代码

1
2
3
4
5
6
7
#include <stdio.h>
int main(){
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
printf("%.3f",a*b*c);
return 0;
}

T20

题目:四则运算

问题描述:输入两个整数和一个四则运算符,根据运算符计算并输出其运算结果(和、差、积、商、余之一)。注意做整除及求余运算时,除数不能为零。

输入说明:使用scanf()函数输入两个整数和一个运算符,格式见输入样例。

输出说明:输出使用printf()函数,格式见输出样例。

输入样例:

5%2

输出样例:

5%2=1

本题小解析

首先,本题不需要你考虑数据为0的情况。

其次,本题需要用到条件判断,即if…elseif…else…或者switch….case….语句来进行编写,已经超出了本课教学的范围虽然教学啥都bushi

如果你要写if语句的话,就需要条件表达式,比如说if(op==’+’)(这里的op是运算符的意思,不是你想的那个),这时候就会涉及到逻辑运算符==的问题,而==代表相等的意思。

如果你要写switch语句的话,注意case语句后面都需要加上break;防止执行混乱。

最后,用%%来代表输出一个百分号%,亦可用输出op运算符替代。

弱鸡代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main(){
int a,b;
char op;
scanf("%d%c%d",&a,&op,&b);
switch(op){
case '+':printf("%d%c%d=%d",a,op,b,a+b);break;
case '-':printf("%d%c%d=%d",a,op,b,a-b);break;
case '*':printf("%d%c%d=%d",a,op,b,a*b);break;
case '/':printf("%d%c%d=%d",a,op,b,a/b);break;
case '%':printf("%d%c%d=%d",a,op,b,a%b);break;
}
return 0;
}

T21

题目:数位输出

问题描述:输入一个5位整数,求出其各数位数值,并按照从高位到低位的顺序输出,如:输入12345,输出为1 2 3 4 5。

输入说明:输入一个五位正整数。

输出说明:按数位从高到低依次输出,各数位之间以一个空格相分隔。

输入样例:

96237

输出样例:

9 6 2 3 7

本题小解析

看成是你输入五个字符,然后往这五个字符里面加入空格即可。

弱鸡代码

1
2
3
4
5
6
7
#include <stdio.h>
int main(){
char a,b,c,d,e;
scanf("%c%c%c%c%c",&a,&b,&c,&d,&e);
printf("%c %c %c %c %c",a,b,c,d,e);
return 0;
}