C语言基础语法进阶练习题

第1关:温度转换

100

  • 任务要求
  • 参考答案
  • 评论219
  • 任务描述
  • 相关知识
    • 算术表达式
  • 编程要求
  • 测试说明

任务描述

本关请完成将一个华氏温度F,转换成摄氏温度C输出的小程序。

相关知识

算术表达式

算术表达式是指数学课程中,由数字和运算符号组成的式子,可以简单清晰地记录或描述计算过程和内容。

例如:

 
  
  1. (a-b)/c*2+'a'+15%-4

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

输入一个华氏温度F,要求输出摄氏温度C

计算公式为:C=5/9 (F−32),输出要有文字说明,取2位小数。

效果如下:

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include 
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    double C,F;
    scanf("%lf",&F);
    C=5.00/9.00*(F-32.00);
    printf("摄氏温度为:%.2lf",C);
	/********** End **********/   
}

第2关:分数序列求和

100

  • 任务要求
  • 参考答案
  • 评论219
  • 任务描述
  • 相关知识
    • for循环
  • 编程要求
  • 测试说明

任务描述

本关需要使用for循环控制语句来完成求分数序列和。

相关知识

让我们再次回顾C语言循环控制语句for循环。

for循环

C语言中,for语句使用最为灵活,它完全可以取代 while 语句。它的一般形式为:

 
  
  1. for(循环变量赋初值; 循环条件; 循环变量增量) 语句

它的执行过程如下图所示:

  1. 先求解表达式1

  2. 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3步;若其值为假(0),则结束循环,转到第5步;

  3. 求解表达式3

  4. 转回上面第2步继续执行;

  5. 循环结束,执行for语句下面的一个语句。

例如:

 
  
  1. for( i=1; i<=100; i++ ) sum=sum+i;

for语句使用注意事项:

  1. 省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值;

  2. 省略了“表达式2(循环条件)”,则不做其它处理时便成为死循环;

  3. 省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。

编程要求

有一分数序列:2/13/25/38/513/821/13...求出这个数列的前n项之和的整数部分。

n的值运行时通过键盘输入给定,并且n<=30

输出值只保留整数(不要四舍五入)。

效果如下:

输入:20

输出:32

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include 
#include
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    long n,i;
    double fz=2.0,fm=1.0,sum=0.0,t;
    scanf("%ld",&n);
    for(i=1;i<=n;i++){
        sum+=fz/fm;
        t=fz;
        fz=fz+fm;
        fm=t;
    }
    sum=floor(sum);
    printf("%.0lf",sum);
	/********** End **********/
}

第3关:计算平均成绩

100

  • 任务要求
  • 参考答案
  • 评论219
  • 任务描述
  • 相关知识
    • while循环
    • do-while循环语句
  • 编程要求
  • 测试说明

任务描述

本关需要你完成一个求学生平均成绩的小程序。

相关知识

上关我们回顾了For循环控制语句,本关我们继续回顾while循环和do-while循环语句。

while循环

while循环的一般形式为:

 
  
  1. while(表达式){
  2. 语句块
  3. }

其执行过程如下图所示:

其中表达式称为循环条件,语句块称为循环体。

  1. 计算while后面括号里表达式的值,若其结果非0,则转入(2),否则转(3);
  2. 执行循环体,转(1);
  3. 退出循环,执行循环体下面的语句。

由于是先执行判断后执行循环体,所以循环体可能一次都不执行。 循环体可以为空语句

例如:

 
  
  1. #include
  2. int main(void){
  3. int i=1, sum=0;
  4. while(i<=100){
  5. sum+=i;
  6. i++;
  7. }
  8. printf("%d
  9. ",sum);
  10. return 0;
  11. }

do-while循环语句

do-while循环的一般形式为:

 
  
  1. do{
  2. 语句块
  3. }while(表达式);

其执行过程如下图所示:

  1. 执行循环体,转(2);

  2. 计算while后面括号里表达式的值,若其结果非0,则转入(1),否则转(3);

  3. 退出循环,执行循环体下面的语句。

注意:

  • do……while语句最后的分号(;)不可少,否则提示出错。循环体至少执行一次。

例如:

 
  
  1. #include
  2. void main(void)
  3. {
  4. int i=1,s=0; /*赋初值*/
  5. do
  6. {
  7. s=s+i; /*求一千以内奇数的和*/
  8. i=i+2; /*这里是循环体*/
  9. }
  10. while(i<=1000); /*不要忘记分号,while这写条件,不满足则退出程序*/
  11. printf("一千以内奇数的和为:%d
  12. ",s);
  13. }

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

输入:学生人数和每个人的成绩。 输出:平均成绩。

当输入的学生人数小于等于0时,输出平均成绩为0分!

效果如下:

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include 
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    int n,i=1;
    double scores,average,sum=0.0;
    scanf("%d",&n);
    if(n<=0){
        printf("the number of students:the scores:average=0.00");
    }
    while(i<=n){
        scanf("%lf",&scores);
        sum+=scores;
        i++;
    }
    average=sum/n;
    printf("the number of students:the scores:average=%.2lf",average);
	/********** End **********/
}

第4关:进制转换

100

  • 任务要求
  • 参考答案
  • 评论219
  • 任务描述
  • 相关知识
    • 十进制
    • 十六进制
    • 十六进制转十进制
    • 十进制转十六进制
  • 编程要求
  • 测试说明

任务描述

本关需要你完成整数间进制转换的小程序。

相关知识

什么是进制?进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,类似的tally mark计数等)。

对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位

计算机中常用的进制有二进制、八进制、十进制、十六进制。本关我们将回顾十进制和十六进制。

十进制

十进制的基数为10,数码由0-9组成,计数规律逢十进一。十进制编码几乎就是数值本身。

十六进制

十六进制,它由0-9A-F(它们分别表示十进制数10~15)组成,字母不区分大小写。十六进制数运算规律是逢十六进一,即基数R=16=2^4,通常在表示时用尾部标志H或下标16以示区别,在c语言中用添加前缀0x以表示十六进制数。

例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H

十六进制转十进制

把十六进制数按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”。

例:把(38A.11)16转换为十进制数。

解:

 
  
  1. (38A.11)16
  2. =3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方
  3. =768+128+10+0.0625+0.0039
  4. =906.0664

十进制转十六进制

一个十进制整数转换为十六进制整数通常采用除十六取余法,即用十六连续除十进制数,直到商为0,逆序排列余数即可得到——简称除十六取余法。

例:将25转换为十六进制数。

解:

 
  
  1. 25÷16=1 余数9
  2. 1÷16=0 余数1
  3. 所以25=(19)16

编程要求

编写程序,将十进制正整数转成十六进制字符串输出。效果如下:

输入:17。 输出:11

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include 
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);
    //结果输出使用prinf
    //printf("%d",x);
 	// 请在此添加你的代码
    /********** Begin *********/
    int n,a[100],i=0,m=0,yushu;
    char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    scanf("%d",&n);
    while(n>0){
        yushu=n%16;
        a[i++]=yushu;
        n/=16;
    }
    for(i=i-1;i>=0;i--){
        m=a[i];
        printf("%c",hex[m]);
    }
	/********** End **********/
}

第5关:千分位分隔符

100

  • 任务要求
  • 参考答案
  • 评论219
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

本关需要你完成在数字中插入千分位分隔符的小程序。

相关知识

什么是千分位分隔符呢?千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。

C语言中编译千分位分隔符涉及到循环控制语句,if嵌套语句等,总的来说就是循环判断综合。

例如:

 
  
  1. int main()
  2. {
  3. int i = 1, n, m, p, q,t;
  4. printf("Please input an integer:");
  5. scanf("%d", &n);
  6. t = n;//copy一个副本
  7. printf("The result is:");
  8. while ((n / 10) != 0){
  9. n = n / 10;
  10. i++;
  11. }//到这 n不存在了
  12. i = i - 1;
  13. p = 1;
  14. for (q = 1; q <= i; q++){
  15. p = p * 10;
  16. }
  17. while (i >= 0){
  18. m = t / p;
  19. t = t - m*p;
  20. printf("%d", m);
  21. p = p / 10;
  22. if (i % 3 == 0 && i != 0){
  23. printf(",");
  24. }
  25. i = i - 1;
  26. }
  27. return 0;
  28. }

编程要求

在输入的数字中插入千分位分隔符并将其输出。

效果如下:

输入:1234567。 输出:1,234,567

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include 
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);
    //结果输出使用prinf
    //printf("%d",x);
 	// 请在此添加你的代码
    /********** Begin *********/
    long i=0,n,m,p=1,t;
    scanf("%ld",&n);
    t=n;
    while ((n/10)!= 0){
        n=n/10;
        p*=10;
        i++;
    }
    while (i>=0){
        m=t/p;
        t=t-m*p;
        printf("%ld",m);
        p=p/10;
        if (i%3==0&&i!=0){
            printf(",");
        }
        i--;
    }
    return 0;
	/********** End **********/
}

第6关:歌手评分系统

100

  • 任务要求
  • 参考答案
  • 评论219
  • 任务描述
  • 相关知识
    • if语句
  • 编程要求
  • 测试说明

任务描述

本关需要你完成一个常规的歌手评分系统的小程序。

相关知识

本关继续强化C语言循环控制语句和if判断语句练习。前面的几个关卡我们回顾了循环控制语句的while循环语句、do-while循环语句和for循环语句,本关将带你回顾判断语句if

判断语句要求程序指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

C 语言把任何非零和非空的值假定为 true,把0null假定为 false

if语句

用法如下:

 
  
  1. if(表达式) 语句

功能:表达式为真,则执行语句;表达式为假,则跳过语句执行程序的下面的代码。

if的控制范围:

  1. if只能控制紧临的第一种语句执行或不执行;
 
  
  1. if(表达式)
  2. 语句A;//属于If控制
  3. 语句B;//不属于if控制
  1. if可以控制{}内的所有的语句。
 
  
  1. if(表达式)
  2. {
  3. 语句A;
  4. 语句B;
  5. }

在一般情况下,为了代码的整齐、易懂,就算只有一条语句要控制,也会用{}括起来。

编程要求

歌手评分系统:有7个评委对歌手打分,请编程计算歌手的成绩。 规则:去掉一个最高分,去掉一个最低分,求平均分,就是歌手应得分。

效果如下:

输入:99 98.5 96 92.5 96.5 90 93。 输出:score=95.30

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include
#include
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    double a[7],t;
    int i,j;
    double num=0.0;
    for(i=0;i<7;i++)
    scanf("%lf",&a[i]);
    for(i=0;i<7;i++){
        for(j=0;j<7;j++){
            if(a[j]

你可能感兴趣的:(湖南工业大学(移动云启),c语言,开发语言)