头歌实训平台C语言

您所在的位置:网站首页 输入五个值输出最大的值 头歌实训平台C语言

头歌实训平台C语言

2023-09-17 12:21| 来源: 网络整理| 查看: 265

目录

C语言程序设计编辑与调试环境

 第1关打印输出 Hello World 

 第2关打印输出图形

 第3关求3个数的最大值

 第4关熟悉C语言调试过程

顺序结构程序设计

第1关加法运算

第2关不使用第3个变量,实现两个数的对调

第3关用宏定义常量

第4关数字分离

第5关计算总成绩和平均成绩

第6关求三角形的面积

第7关立体几何计算题

第8关计算两个正整数的最大公约数

选择结构程序设计

第1关排序

第2关选择结构-闰年判断

第3关选择结构-分段函数问题

第4关学生成绩等级换算

选择结构程序设计进阶

第1关快递费用计算

第2关计算一元二次方程的根

正在挑战2610人完成挑战24324人可获经验100点

已完成

第3关产品信息格式化

循环结构程序设计1

第1关小球自由落体运动

第2关求解出n以内所有能被5整除的正整数的乘积

第3关最大公约数和最小公倍数

第4关字符串中各类字符数的统计

第5关求sn=a+aa+aaa+aaaa+......的值

循环结构程序设计2

第1关C循环-求平均成绩

第2关C循环-求各位数字之积

第3关C循环-求阶乘之和

第4关C循环-水仙花数

第5关C循环-寻找完数

第6关分数求和

函数

第1关求和

第2关回文数计算

第3关 编写函数求表达式的值

第4关阶乘数列

第5关亲密数

第6关公约公倍数

递归函数、嵌套函数

第1关递归求阶乘数列

第2关递归实现输出一个整数的逆序

第3关将整数递归转换成字符串

第4关递归实现Ackman函数

一维数组和二维数组

第1关排序问题

第2关查找整数

第3关计算数组中元素的最大值及其所在的行列下标值

第4关二分查找

第5关鞍点

第6关删除最大值

第7关杨辉三角

字符数组

第1关字符逆序

第2关字符统计

第3关字符插入

第4关字符串处理

第5关字符串统计

第6关字符串排序

指针

第1关用指针法输入12个整数,然后按每行4个数输出

第2关指针变量作为函数参数实现两变量交换值

第3关报数

第4关strcmp函数

指针进阶

第1关输出若干个学生成绩中的最高分.要求用指针函数实现

第2关采用指针变量表示地址的方法输入输出数组中的个元素

第3关用指针实现数组循环移动

结构体

第1关结构体变量的初始化和引用

第2关结构体排序

第3关结构体存储数据

第4关结构体存储学生信息

文件

第1关HelloWorld

第2关文件读取和写入

第3关统计文本字母数量

第4关读取文件中指定学生信息

C语言程序设计编辑与调试环境

第1关打印输出 Hello World

任务描述

本关任务:通过运行一个C语言程序,让你初步了解程序的运行方法。

#include int main(void) { /********* Begin *********/ printf( "Hello World\n" ); system( "pause" ); /********* End *********/ return 0; }

第2关打印输出图形

任务描述

本关任务:参照上面调试的程序,编写一个能输出规定图形的程序。

编程要求

编写一个C程序,输出以下图案,并上机调试通过。第一行开头有4个空格,第二行开头有3个空格,第三行有2个空格,第四行开头有一个空格,第五行开头没有空格,9个*。

****OKHello!*********

测试说明

平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。

输入:无

输出:

****OKHello!*********

提示 本题通过执行多个printf函数输出每一行即可,暂时不用考虑使用循环。

#include int main(void) { /********* Begin *********/ printf(" *\n"); printf(" ***\n"); printf(" OK\n"); printf(" Hello!\n"); printf("*********\n"); /********* End *********/ return 0; }

第3关求3个数的最大值

任务描述

本关任务:编写一个程序,输入a、b、c三个整数,输出其中最大值。

相关知识

输入

输入一行数据,分别为a b c。

输出

a b c其中最大的数,不用换行。

如何求出最大值

求几个数的最大值?

三个数两两比较,将较大的数存入最大值变量max;

#include int main(void) { /********* Begin *********/ int a, b, c,ma=-999999; scanf("%d,%d,%d",&a,&b,&c); if(a>ma){ ma=a; } if(b>ma){ ma=b; } if(c>ma){ ma=c; } printf("max=%d",ma); /********* End *********/ return 0; }

第4关熟悉C语言调试过程

任务描述

本关任务:以下程序源代码有错误,请使用C语言的调试功能,检查程序的错误并更正,使之能正确运行。

编程要求

程序中要求键盘输入x的值,当x的值为5时输出*****,否则输出#####。

输入:整数x的值。

输出:当x的值为5时输出*****,否则输出#####。

#include"stdio.h" int main(void) { /********* Begin *********/ int x; int y=2,z=3; scanf("%d",&x); if(x==y+z) printf("*****"); else printf("#####"); return 0; /********* End *********/ }

顺序结构程序设计 第1关加法运算

任务描述

本关任务:写一个加法程序,输入整数a,b,输出他们的和。

#include int main(void) { int a,b,c; //Please input a,b: /*********Begin*********/ scanf("%d,%d",&a,&b); c=a+b; printf("%d+%d=%d",a,b,c); /*********End**********/ return 0; }

第2关不使用第3个变量,实现两个数的对调

任务描述

本关任务:下列程序是不用第三个变量,实现将两个数进行对调的操作。 程序代码如下: 1 #include 2 int main(void) 3 { 4 int a,b;printf(“Enter a and b:”); 5 scanf(“%d%d”,&a,&b); 6 printf(“a=%d b=%d\n”,a,b); 7 a= ① ;b= ② ;a= ③ ; 8 printf(“a=%d b=%d\n”,a,b); 9 return 0; 10 }

#include int main(void) { int a,b; //Enter a and b: scanf("%d%d",&a,&b); printf("a=%d b=%d\n",a,b); /*********Begin*********/ a=a+b; b=a-b; a=a-b; /*********End**********/ printf("a=%d b=%d\n",a,b); return 0; 第3关用宏定义常量

任务描述

本关任务:已知某物品单价为30,数量为x。求商品的总价钱。用宏定义物品的单价。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,用宏定义物品的单价。

输入:一个整数x,代表物品的数量。

输出:输出总价格。

#include int main(void) { /*********Begin*********/ int x,y; scanf("%d",&x); y=30*x; printf("%d\n",y); /*********End**********/ return 0; }

第4关数字分离

任务描述

输入一个三位数,分别求出x的各位数字,十位数字,百位数字的值。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,输入一个三位数,分别求出x的各位数字,十位数字,百位数字的值。

输入:一个三位数

输出:输出该数字的百位,十位,个位,数字之间用一个空格隔开。

#include int main(void) { /*********Begin*********/ int k,l,m,n; scanf("%d",&k); l=k/100; m=k/10%10; n=k%10; printf("%d %d %d\n",l,m,n); /*********End**********/ return 0; }

第5关计算总成绩和平均成绩

任务描述

本关任务:编程求从键盘上输入一个学生的五门成绩,计算出该学生的总成绩和平均成绩。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,编程求从键盘上输入一个学生的五门成绩,计算出该学生的总成绩和平均成绩。

输入:五个整数

输出:总成绩和平均成绩,其中平均成绩保留小数点后两位。

#include int main(void) { /*********Begin*********/ int a,b,c,m,n,sum; float s; scanf("%d%d%d%d%d",&a,&b,&c,&m,&n); sum=a+b+c+m+n; s=sum/5.00; printf("%d %.2f",sum,s); /*********End**********/ return 0; }

第6关求三角形的面积

任务描述

本关任务:编程求以a、b、c为边长的三角形的面积area。

相关知识

三角形面积计算公式为: 假设三角形三条边长分别为a、b、c,其中s=(a+b+c)/2,则面积:

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,编程求以a、b、c为边长的三角形的面积area。

输入:a b c三角形的三条边,可以是小数;

输出:三角形面积,保留3位小数。

#include int main(void) { /*********Begin*********/ float a,b,c,area,s; scanf("%f %f %f",&a,&b,&c); s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("%.3f",area); /*********End**********/ return 0; }

第7关立体几何计算题

任务描述

本关任务:设圆半径r,圆柱高h , 求圆周长C1,半径为r的圆球表面积Sb,圆半径r,圆柱高为h的圆柱体积Vb。 用scanf输入数据,输出计算结果,输出时取小数点后两位数字。请编程序。 PI=3.14

编程要求

输入:两个double型浮点数,r和h;

输出:圆周长C1、圆球表面积Sb、圆柱体积Vb。 保留两位小数,每个结果后换行。

#include #define PI 3.14 int main(void) { /*********Begin*********/ double r,h,C1,Sb,Vb; scanf("%lf,%lf",&r,&h); C1=2*PI*r; Sb=4*PI*r*r; Vb=PI*r*r*h; printf("C1=%.2lf\n",C1); printf("Sb=%.2lf\n",Sb); printf("Vb=%.2lf\n",Vb); /*********End**********/ return 0; }

第8关计算两个正整数的最大公约数

任务描述

编程计算两个正整数的最大公约数。其中求最大公约数的函数原型已经给出,请在主函数中编程调用函数,输出最大公约数。

程序的运行示例: 12,3↙ 3 ####函数原型说明 求最大公约数的函数原型如下: int MaxCommonFactor( int a, int b); 返回值:返回的是最大公约数;若输入的数据有任意一个不满足条件,返回值是-1。 参数:a,b是两个整型数

相关知识

本任务主要考察函数的调用方法。 ####编程要求 根据提示,在右侧编辑器Begin-End处补充代码,编程计算两个正整数的最大公约数。

输入:输入格式:"%d,%d"输出:输出格式:"%d\n" #include int MaxCommonFactor( int a, int b) { int c; if(aprintf("6");}

for语句

基本语法:基于for实现循环的基本语法如下:

for(1.赋值语句或者省略;2.判断语句或者省略;3.执行语句或者省略){需循环的语句或者代码块} 其中1处位置,是一个赋值语句,在循环开始前执行一次,之后再不执行。其中2处位置为判断语句,每次开始循环时(包括第一次)都会先经过这个判断语句的判断 如果此处为真,则进入循环,执行循环内语句或者代码块。如果此处为假,则不进入循环,执行之后的代码。其中3处位置为一个运算语句,每执行完一次循环,就会执行一次此处代码。

应用示例:

// 同样需要输出3个6int i;for(i=0;i需要循环的语句或者代码块} 其中括号中的布尔值如果为真,这进入循环,直到布尔值变为假,则推出循环,继续执行之后代码。其中括号中的布尔值如果为假,则直接不进入循环,继续执行循环代码块之后代码。

应用示例:

// 需要循环输出3次6int n = 3;while(n--){printf("6");}

for语句

基本语法:基于for实现循环的基本语法如下:

for(1.赋值语句或者省略;2.判断语句或者省略;3.执行语句或者省略){需循环的语句或者代码块} 其中1处位置,是一个赋值语句,在循环开始前执行一次,之后再不执行。其中2处位置为判断语句,每次开始循环时(包括第一次)都会先经过这个判断语句的判断 如果此处为真,则进入循环,执行循环内语句或者代码块。如果此处为假,则不进入循环,执行之后的代码。其中3处位置为一个运算语句,每执行完一次循环,就会执行一次此处代码。

应用示例:

// 同样需要输出3个6int i;for(i=0;i// 请在此添加代码/********** Begin *********//********** End **********/return 0;} #include int main(void) { /*********Begin*********/ int n,i; float score,sum=0,average; scanf("%d",&n); for(i=1;iprintf("6");}

for语句

基本语法:基于for实现循环的基本语法如下:

for(1.赋值语句或者省略;2.判断语句或者省略;3.执行语句或者省略){需循环的语句或者代码块} 其中1处位置,是一个赋值语句,在循环开始前执行一次,之后再不执行。其中2处位置为判断语句,每次开始循环时(包括第一次)都会先经过这个判断语句的判断 如果此处为真,则进入循环,执行循环内语句或者代码块。如果此处为假,则不进入循环,执行之后的代码。其中3处位置为一个运算语句,每执行完一次循环,就会执行一次此处代码。

应用示例:

// 同样需要输出3个6int i;for(i=0;i// 请在此添加代码/********** Begin *********//********** End **********/return 0;} #include int main(void) { /*********Begin*********/ int fac=1,num; scanf("%d",&num); while(num) { fac*=num%10; num/=10; } printf("%d",fac); /*********End**********/ return 0; }

第3关C循环-求阶乘之和

任务描述

本关任务:编写一个程序,任意输入n,求S=1!+2!+...+n!。 注意:n!表示n的阶乘。0的阶乘等于1,负数的阶乘等于0。 *提示:(n+1)!=n!(n+1)** 例如: 输入:10 输出:4037913

输入:7 输出:5913

输入:-1 输出:0

相关知识

在编程中,我们常常遇到需要将一条语句或者一段代码重复运行多次的情况,如没有循环语句,需逐条编写,会导致程序的繁杂与冗余。

C中可利用while、for、do-while等常用循环函数来是语句或代码块进行重复操作,从而省去很多重复的工作,使代码简洁明了。

while语句

基本语法:基于while实现循环的基本语法如下:

while(布尔值){需要循环的语句或者代码块} 其中括号中的布尔值如果为真,这进入循环,直到布尔值变为假,则推出循环,继续执行之后代码。其中括号中的布尔值如果为假,则直接不进入循环,继续执行循环代码块之后代码。

应用示例:

// 需要循环输出3次6int n = 3;while(n--){printf("6");}

for语句

基本语法:基于for实现循环的基本语法如下:

for(1.赋值语句或者省略;2.判断语句或者省略;3.执行语句或者省略){需循环的语句或者代码块} 其中1处位置,是一个赋值语句,在循环开始前执行一次,之后再不执行。其中2处位置为判断语句,每次开始循环时(包括第一次)都会先经过这个判断语句的判断 如果此处为真,则进入循环,执行循环内语句或者代码块。如果此处为假,则不进入循环,执行之后的代码。其中3处位置为一个运算语句,每执行完一次循环,就会执行一次此处代码。

应用示例:

// 同样需要输出3个6int i;for(i=0;i// 请在此添加代码/********** Begin *********//********** End **********/return 0;} #include int main(void) { /*********Begin*********/ int i, n, sum = 0, f = 1; scanf("%d", &n); for(i = 1; i printf("6");}

for语句

基本语法:基于for实现循环的基本语法如下:

for(1.赋值语句或者省略;2.判断语句或者省略;3.执行语句或者省略){需循环的语句或者代码块} 其中1处位置,是一个赋值语句,在循环开始前执行一次,之后再不执行。其中2处位置为判断语句,每次开始循环时(包括第一次)都会先经过这个判断语句的判断 如果此处为真,则进入循环,执行循环内语句或者代码块。如果此处为假,则不进入循环,执行之后的代码。其中3处位置为一个运算语句,每执行完一次循环,就会执行一次此处代码。

应用示例:

// 同样需要输出3个6int i;for(i=0;i}; //分号结束定义

例如,以下是一个描述学生信息的结构体类型定义:

struct student{long number;char name[20];char sex;float score;};

在这个结构体定义中,结构体类型名为student,该结构体由4个成员组成。第一个成员为number,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。应该注意在花括号后的分号是不可少的

声明结构体变量

声明结构体变量有四种方式,他们在本质上没什么区别,可根据自己习惯和要求选择你喜欢的方式:

先定义结构体,再声明结构体变量 struct student{long number;char name[20];char sex;float score;}; //先定义结构体struct student s1,s2;//声明结构体变量

在定义结构体类型的同时声明结题变量

struct student{long number;char name[20];char sex;float score;}s1,s2; //在定义结构体的同时定义结构体变量

直接声明结构体变量

struct{ //省去结构体名long number;char name[20];char sex;float score;}s1,s2; //直接给出结构体变量

此方法因为没有给出结构体名,所以不能用来在后面程序中声明此结构体类型的变量,因此在实际编程是这种方法用的较少。

typedef引用别名来定义 typedef struct student STUDENT; //给结构体student定义别名struct student{long number;char name[20];char sex;float score;};STUDENT s1,s2; //使用别名STUDENT定义结构体

结构体成员的访问

结构体变量的成员访问方式为: .

结构体变量的每个成员都可以看做一个独立的变量,称为成员变量,对成员变量所能做的操作由成员变量的类型决定。

例如,下面的操作是合法的:

s1.number=2010001;//number成员是long类型strcpy(s1.name,"lili");//name成员是字符数组类型

结构体成员要和结构体变量名联合使用,即以“结构体变量名.成员名”的访问方式,所以不同结构体类型的成员名字可以相同,并且他们还可以与程序中的其他非结构体成员的名字相同,不会引起歧义或冲突。

注意:如果结构体变量的成员本身又是一个结构体类型,则要用若干成员运算符找到最低一级成员,只能对最低一级的成员进行赋值或者读写及运算。

例如:

struct data{int month;int day;int year;};struct student{long num;char name[20];char sex;data birthday;}stu1;

对以上定义的结构体变量stu1,可以通过以下方式访问其中各成员:

stu1.num;stu1.birthday.month;

结构体变量初始化

在定义结构体变量的同时可以对其进行初始化,格式与数组变量初始化类似,用花括号吧每个成员的初始值括起来,每个初始值与相应的成员对应。

例如,对student结构体类型的变量s1进行初始化: struct student s1={2010001,"lili",'F',97};

在定义结构体类型是不能对其成员进行初始化,因为类型不是程序运行时的实体,不会给他们分配内存空间,因此,对其初始化没有意义。

#include struct Student{ long number; char name[20]; int score; }; int main(){ struct Student arr[2]; struct Student *p; p=arr; scanf("%ld %s %d",&(*p).number,(*p).name,&(*p).score); p++; scanf("%ld %s %d",&(*p).number,(*p).name,&(*p).score); p=arr; if(p->score >(p+1)->score){ printf("%ld %s %d",(*p).number,(*p).name,(*p).score); }else{ p++; printf("%ld %s %d",(*p).number,(*p).name,(*p).score); } return 0; } 第2关结构体排序

任务描述

本关任务:有n个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序输出学生的信息。

相关知识

参考结构体第1关相关知识

#include /*********Begin*********/ struct Student{ long number; char name[20]; int score; }; /*********End**********/ int main(void) { /*********Begin*********/ int n,i,k,j; scanf("%d",&n); struct Student arr[200]; struct Student t; struct Student *p=arr; for(i=0;inumber,p->name,&p->score); } for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3