1
任务描述
本关需要你完成求圆的面积
S
及圆的周长C
的小程序。相关知识
算术运算符
下方显示了
C
语言支持的算术运算符。假设变量A
的值为10
,变量B
的值为20
,则:
A + B
将得到30
;
A - B
将得到-10
;
A * B
将得到200
;
B / A
将得到2
;
B % A
将得到0
(描述:取模运算符,整除后的余数)。圆的周长/面积公式
这里规定圆周率约等于
3.14
,半径为r
。那么,周长公式为:
C=2∗3.14∗r
面积公式为:
S=3.14∗r2
编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:
r
为圆的半径,c
为圆的周长,s
为圆的面积,输入圆的半径,通过相应的公式,输出圆面积及圆周长。请严格按照下面的要求编写输入输出函数的格式,否则不能得分。
绿色字体是说明性文字,不是程序内容;
黑色字体为输出内容;
红色字体为输入内容;
所有标点符号均为英文标点。
效果如下:
#include <stdio.h>
int main() {
float r, s, c;
printf("请输入圆半径r:");
scanf("%f", &r);
c = 2 * 3.14 * r;
s = 3.14 * r * r;
printf("圆面积S=%lf,圆周长C=%lf\n", s, c);
return 0;
}
2
任务描述
本关需要你完成计算物体在某个点的末速度和位移的小程序。
相关知识
初始速度
v0
,加速度a
,时间t
,那么:末速度
v
公式为:v=v0+a∗t
位移
s
公式为:s=v0∗t+0.5∗a∗t∗t
编程要求
已知时间
t
、加速度a
和初始速度v0
,根据物理公式,输出物体在某个时间点的末速度和位移。程序会对你编写的代码测试运行多次。
例:
测试输入:
30 0.19 0
//时间 加速度 初始速度预期输出:
当初始速度为0.000000时
30.000000s时的速度为5.700000
30.000000s时的位移为85.500000
#include <stdio.h>
int main() {
float t, a, v, s, v0;
scanf("%f%f%f", &t, &a, &v0);
v = v0 + a * t;
s = v0 * t + 0.5 * a * t * t;
printf("当初始速度为%f时\n", v0);
printf("%fs时的速度为%f\n%fs时的位移为%f\n", t, v, t, s);
return 0;
}
3
任务描述
本关需要你完成一个计算平面两点间距离(保留
2
位小数)的小程序。相关知识
距离公式
空间中任意两点的坐标为
x1,y1
,x2,y2
。则两点间的距离公式为
sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
。sqrt简介
功能:计算一个非负实数的平方根。
比如:计算
16的平方根
,sqrt(16)
就可以了。编程要求
x1 y1
表示第一个点的坐标;x2 y2
表示第二个点的坐标;均为float
类型。输入格式:
x1 y1 x2 y2
测试举例:
测试输入:
0 0 3 4
预期输出:5.00
提示: 使用
math.h
中的sqrt()
函数,不要加入额外的输入输出
#include <stdio.h>
#include <math.h>
int main()
{
double x1,y1,x2,y2,d;
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2f",d);
return 0;
}
4
任务描述
本关请完成将一个华氏温度
F
,转换成摄氏温度C
输出的小程序。相关知识
算术表达式
算术表达式是指数学课程中,由数字和运算符号组成的式子,可以简单清晰地记录或描述计算过程和内容。
例如:
(a-b)/c*2+'a'+15%-4
编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:输入一个华氏温度
F
,要求输出摄氏温度C
。计算公式为:
C=5/9 (F−32)
,输出要有文字说明,取2
位小数。效果如下:
#include <stdio.h>
int main() {
double C, F;
scanf("%lf", &F);
C=5.0/9*(F-32);
printf("摄氏温度为:%.2lf", C);
}
5
任务描述
本关需要使用
for
循环控制语句来完成求分数序列和。相关知识
让我们再次回顾
C
语言循环控制语句for
循环。for循环
在
C
语言中,for
语句使用最为灵活,它完全可以取代while
语句。它的一般形式为:
for(循环变量赋初值; 循环条件; 循环变量增量) 语句
它的执行过程如下图所示:
先求解表达式
1
;求解表达式
2
,若其值为真(非0
),则执行for
语句中指定的内嵌语句,然后执行下面第3
步;若其值为假(0),则结束循环,转到第5
步;求解表达式
3
;转回上面第
2
步继续执行;循环结束,执行
for
语句下面的一个语句。例如:
for( i=1; i<=100; i++ ) sum=sum+i;
for
语句使用注意事项:
省略了“表达式
1
(循环变量赋初值)”,表示不对循环控制变量赋初值;省略了“表达式
2
(循环条件)”,则不做其它处理时便成为死循环;省略了“表达式
3
(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。编程要求
有一分数序列:
2/1
,3/2
,5/3
,8/5
,13/8
,21/13
...求出这个数列的前n
项之和的整数部分。
n
的值运行时通过键盘输入给定,并且n<=30
。输出值只保留整数(不要四舍五入)。
效果如下:
输入:
20
。输出:
32
。
#include <stdio.h>
int main() {
float a=2,b=1,i,s=0,n;
scanf("%f", &n);
for ( i = 1; i <= n; i++) {
a=a+b;
b=a-b;
s+=(a/b);
}
printf("%2.f", s);
}
6
任务描述
本关需要你完成一个求学生平均成绩的小程序。
相关知识
上关我们回顾了
For
循环控制语句,本关我们继续回顾while
循环和do-while
循环语句。while循环
while
循环的一般形式为:
while(表达式){
语句块
}
其执行过程如下图所示:
其中表达式称为循环条件,语句块称为循环体。
- 计算
while
后面括号里表达式的值,若其结果非0
,则转入(2),否则转(3);- 执行循环体,转(1);
- 退出循环,执行循环体下面的语句。
由于是先执行判断后执行循环体,所以循环体可能一次都不执行。
循环体可以为空语句;
。例如:
#include <stdio.h>
int main(void){
int i=1, sum=0;
while(i<=100){
sum+=i;
i++;
}
printf("%d
",sum);
return 0;
}
do-while循环语句
do-while
循环的一般形式为:
do{
语句块
}while(表达式);
其执行过程如下图所示:
执行循环体,转(2);
计算
while
后面括号里表达式的值,若其结果非0
,则转入(1),否则转(3);退出循环,执行循环体下面的语句。
注意:
do……while
语句最后的分号(;)不可少,否则提示出错。循环体至少执行一次。例如:
#include<stdio.h>
void main(void)
{
int i=1,s=0; /*赋初值*/
do
{
s=s+i; /*求一千以内奇数的和*/
i=i+2; /*这里是循环体*/
}
while(i<=1000); /*不要忘记分号,while这写条件,不满足则退出程序*/
printf("一千以内奇数的和为:%d
",s);
}
编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:输入:学生人数和每个人的成绩。
输出:平均成绩。当输入的学生人数小于等于
0
时,输出平均成绩为0
分!效果如下:
#include<stdio.h>
int main()
{
int a,i;
double b,c=0;
scanf("%d",&a);
if(a<=0)
{
printf("the number of students:the scores:average=0.00\n");
}
else
{
for(i=1;i<=a;i++)
{scanf(" %lf",&b);
c=c+b;}
printf("the number of students:the scores:average=%.2f\n",c/a);
}
return 0;
}
7
任务描述
本关需要你完成整数间进制转换的小程序。
相关知识
什么是进制?进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,类似的
tally mark
计数等)。对于任何一种进制---
X
进制,就表示每一位置上的数运算时都是逢X进一
位。 十进制是逢十进一
,十六进制是逢十六进一
,二进制就是逢二进一
,以此类推,x
进制就是逢x进位
。计算机中常用的进制有二进制、八进制、十进制、十六进制。本关我们将回顾十进制和十六进制。
十进制
十进制的基数为
10
,数码由0
-9组成,计数规律逢十进一
。十进制编码几乎就是数值本身。十六进制
十六进制,它由
0-9
,A-F
(它们分别表示十进制数10~15
)组成,字母不区分大小写。十六进制数运算规律是逢十六进一
,即基数R=16=2^4
,通常在表示时用尾部标志H
或下标16
以示区别,在c
语言中用添加前缀0x
以表示十六进制数。例如:十六进制数
4AC8
可写成(4AC8)16
,或写成4AC8H
。十六进制转十进制
把十六进制数按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”。
例:把
(38A.11)16
转换为十进制数。解:
(38A.11)16
=3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方
=768+128+10+0.0625+0.0039
=906.0664
十进制转十六进制
一个十进制整数转换为十六进制整数通常采用除十六取余法,即用十六连续除十进制数,直到商为
0
,逆序排列余数即可得到——简称除十六取余法。例:将
25
转换为十六进制数。解:
25÷16=1 余数9
1÷16=0 余数1
所以25=(19)16
编程要求
编写程序,将十进制正整数转成十六进制字符串输出。效果如下:
输入:
17
。 输出:11
。
#include <stdio.h>
int main()
{
int a,b,i=0,j=0;
char sz[]="0123456789ABCDEF";
char h[16];
scanf("%d\n",&a);
while(a)
{
h[i++]=sz[a%16];
a=a/16;
}
for (j=i-1;j>=0;--j)
printf("%c",h[j]);
return 0;
}
8
任务描述
本关需要你完成在数字中插入千分位分隔符的小程序。
相关知识
什么是千分位分隔符呢?千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。
在
C
语言中编译千分位分隔符涉及到循环控制语句,if
嵌套语句等,总的来说就是循环判断综合。例如:
int main()
{
int i = 1, n, m, p, q,t;
printf("Please input an integer:");
scanf("%d", &n);
t = n;//copy一个副本
printf("The result is:");
while ((n / 10) != 0){
n = n / 10;
i++;
}//到这 n不存在了
i = i - 1;
p = 1;
for (q = 1; q <= i; q++){
p = p * 10;
}
while (i >= 0){
m = t / p;
t = t - m*p;
printf("%d", m);
p = p / 10;
if (i % 3 == 0 && i != 0){
printf(",");
}
i = i - 1;
}
return 0;
}
编程要求
在输入的数字中插入千分位分隔符并将其输出。
效果如下:
输入:
1234567
。 输出:1,234,567
。
#include <stdio.h>
int main()
{
long int i = 1,n,m,p,q,t;
scanf("%ld", &n);
t = n;
while ((n/10) != 0){
n = n/10;
i++;
}
i=i-1;
p=1;
for (q=1; q<=i; q++){
p=p*10;
}
while (i>=0){
m=t/p;
t=t-m*p;
printf("%d", m);
p = p/10;
if (i%3==0 && i!=0){
printf(",");
}
i=i-1;
}
return 0;
}
9
任务描述
本关需要你完成一个常规的歌手评分系统的小程序。
相关知识
本关继续强化
C
语言循环控制语句和if
判断语句练习。前面的几个关卡我们回顾了循环控制语句的while
循环语句、do-while
循环语句和for
循环语句,本关将带你回顾判断语句if
。判断语句要求程序指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
C
语言把任何非零和非空的值假定为true
,把0
或null
假定为false
。if语句
用法如下:
if(表达式) 语句
功能:表达式为真,则执行语句;表达式为假,则跳过语句执行程序的下面的代码。
if
的控制范围:
- if只能控制紧临的第一种语句执行或不执行;
if(表达式)
语句A;//属于If控制
语句B;//不属于if控制
- if可以控制{}内的所有的语句。
if(表达式)
{
语句A;
语句B;
}
在一般情况下,为了代码的整齐、易懂,就算只有一条语句要控制,也会用
{}
括起来。编程要求
歌手评分系统:有
7
个评委对歌手打分,请编程计算歌手的成绩。
规则:去掉一个最高分,去掉一个最低分,求平均分,就是歌手应得分。效果如下:
输入:
99 98.5 96 92.5 96.5 90 93
。 输出:score=95.30
。
#include<stdio.h>
#include<stdlib.h>
int main()
{
double a[10];
double sum=0.0;
for(int i=0;i<7;i++){
scanf("%lf",&a[i]);
}
double max=a[0];
double min=a[0];
for(int i=0;i<7;i++){
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
sum+=a[i];
}
sum=sum-max-min;
printf("score=%.2lf",sum/5);
return 0;
}
更多推荐
头歌作业C语言基本语法练习题
发布评论