当前位置: 首页 > news >正文

头歌实训作业答案C++ 01

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

学习目标

  • 了解C程序的基本结构(头文件、main()函数、语句、注释、分号)。
  • 熟练使用printf()进行基础输出,理解转义符与换行。
  • 掌握控制台输入输出的基本格式与常见陷阱(空格、换行)。
  • 理解条件分支的基本应用场景与格式化输出。
  • 学会从含糊的任务描述中提炼“输入-处理-输出”的最小闭环。

第1关:打印输出 Hello Word

任务描述

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

相关知识
  • #include <stdio.h>:标准输入输出头文件,提供printf()scanf()等。
  • main():程序入口函数;返回int,通常以return 0;结束表示正常退出。
  • printf():格式化输出函数;常见转义符:\n(换行),\t(制表)。
  • 语句与分号:每条语句以分号结尾;缩进与空格有助于可读性,但不影响语义。
编程要求

请在Begin-End之间完成输出,严格按照题面格式输出目标字符串。

解题思路:

  1. 引入标准I/O头文件;
  2. 编写main()函数;
  3. 使用printf()输出目标字符串;
  4. 注意末尾空格与换行要求(若有)。

实现步骤:

  • Begin-End之间书写printf()
  • 构建并运行程序,核对输出格式。

输入

输出 按题面给定的目标字符串

测试说明
  • 平台将比对输出是否与预期一致;
  • 常见问题:忘记末尾空格、漏写分号、使用了中文标点或中文引号。
#include<stdio.h>int main(void){  /********* Begin *********/printf("Hello World");/********* End *********/return 0;}

第2关:打印输出图形

任务描述

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

相关知识
  • 字符串字面量中的\n表示换行;多行输出可用多个printf或单个printf拼接多行。
  • 控制空格数量通常要精确匹配题目要求,否则会导致判题失败。
编程要求

Begin-End之间按样例严格输出多行图形,空格与换行需与题面一致。

解题思路:

  1. 明确每行开头空格数量与行内文本;
  2. 选择单个或多个printf实现;
  3. 检查每行是否正确换行。

实现步骤:

  • 按题面排版拼接字符串;
  • 使用\n插入换行;
  • 与样例对照验证。

输入

输出 与样例完全一致的多行图形

测试说明
  • 常见问题:空格数错误、缺少换行、意外多余空格。
#include<stdio.h>int main(void){  	/********* Begin *********/printf("    *\n   ***\n  OK\n Hello!\n*********");/********* End *********/return 0;}

第3关:求3个数的最大值

任务描述

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

相关知识
  • 输入格式:"%d,%d,%d" 使用英文逗号分隔;
  • 关系运算符:>>=<<===!=
  • 基本if选择结构:根据条件为真/假执行不同分支。
编程要求

Begin-End之间阅读并补充思路,正确读入并输出最大值,输出格式与题面一致。

解题思路:

  1. 使用scanf("%d,%d,%d", &a, &b, &c);读入三个整数;
  2. 通过一系列if比较,将最大的数保存在max中;
  3. 使用printf("max=%d", max);输出。

实现步骤:

  • 声明变量a,b,c,max
  • 依次比较a、b、c更新max
  • 按格式输出。

输入 一行,格式a,b,c

输出 一行,格式max=最大值

测试说明
  • 样例:10,30,20max=3015,78,85max=85
  • 注意:输入分隔符必须是逗号;多余空格可能导致读入失败。
#include<stdio.h>int main(void){  /********* Begin *********/int a,b,c,max;scanf("%d,%d,%d",&a,&b,&c);if(a>b&&a>c)max=a;if(b>a&&b>c)max=b;if(c>a&&c>b)max=c;printf("max=%d",max);/********* End *********/return 0;}

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

任务描述

以下程序源代码有错误,请使用调试功能检查并更正,使之能正确运行:当x==5时输出*****,否则输出#####

相关知识
  • 调试常见问题:变量未初始化、条件判断错误、花括号匹配、格式化字符串与参数不匹配;
  • 输入输出:scanf需要取地址符&,输出内容需与题意严格一致。
编程要求

Begin-End之间理解并定位潜在问题,运行调试验证分支逻辑。

解题思路:

  1. 读取x
  2. 使用选择结构根据条件输出不同字符串;
  3. 通过逐语句单步验证执行路径。

实现步骤:

  • scanfif处设置断点观察变量值;
  • 验证条件表达式是否达到预期;
  • 确认只输出一次且内容准确。

输入 一个整数x

输出 *****#####

测试说明
  • 输入:5 → 输出:*****
  • 其他:输入非5时输出#####
#include<stdio.h>
int main(void){/********* Begin *********/int  x,y,z;y=2;z=3;scanf("%d",&x); if (x==y+z)printf("*****");else  printf("#####" );return 0;/********* End *********/}

选择结构程序设计

第1关:排序

任务描述

从键盘输入三个整数按从小到大的顺序输出。

相关知识
  • 交换法:使用临时变量t交换两个变量的值;
  • 多重if:可分步调整a、b、c使其满足a<=b<=c
  • 输出格式需完全匹配样例。
编程要求

Begin-End之间完成排序与输出,保证格式正确。

解题思路:

  1. 依次保证a<=ba<=cb<=c
  2. 每步用临时变量交换;
  3. 最后按指定格式输出结果。

实现步骤:

  • 读取输入后进行三次有序性调整;
  • 输出printf("从小到大排列为:%d,%d,%d",a,b,c);

输入 三个整数,以空格分隔

输出 一行,从小到大排列为:x,y,z

测试说明
  • 样例:输入请输入三个整数:5 7 6 → 输出从小到大排列为:5,6,7
  • 注意:格式字符串与题面一致,中文标点、逗号与空格位置必须匹配。
#include<stdio.h>int main(void){  /*********Begin*********/int a,b,c,t;printf("请输入三个整数:");scanf("%d%d%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}elsea=a;b=b;if(a>c){t=a;a=c;c=t;}elsea=a;c=c;if(b>c){t=b;b=c;c=t;}elseb=b;c=c;printf("从小到大排列为:%d,%d,%d",a,b,c);/*********End**********/ return 0;}

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

任务描述

从键盘输入任意年份year,判别该年份是否闰年。

相关知识
  • 常见闰年规则:能被400整除,或能被4整除但不能被100整除;
  • 输入输出:读取整数年份,按题意输出对应提示。
编程要求

Begin-End之间完成输入与判断,输出指定提示字符串。

解题思路:

  1. 读取年份year
  2. 使用选择结构判断是否为闰年;
  3. 输出对应中文提示字符串。

实现步骤:

  • 使用scanf("%d", &year);读入;
  • 条件判断并printf输出。

输入 一个整数年份

输出 一行:"**** 是闰年!""**** 不是闰年!"

测试说明
  • 样例:20002000 是闰年!
  • 注意:输出包含空格与标点,需与题面严格一致。
#include<stdio.h>int main(void){  /*********Begin*********/int year;scanf("%d",&year);if(year%400==0){printf("%d 是闰年!",year);}else{printf("%d 不是闰年!",year);  }/*********End**********/ return 0;}

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

任务描述

根据输入的x,按分段函数定义计算y并输出(保留三位小数)。

相关知识
  • 浮点数输入输出:%lf 读取double%.3f按三位小数输出;
  • 选择结构:按区间与排除点分段计算不同表达式。
编程要求

Begin-End之间完成输入、分段计算与输出。

解题思路:

  1. 读取xdouble
  2. 根据x所在区间选择对应表达式计算y
  3. 使用printf("%.3f", y);输出三位小数。

实现步骤:

  • 明确每段的数学表达式;
  • 注意!=用于排除点;
  • 最后统一输出。

输入 一个浮点数x

输出 一行浮点数,保留三位小数

测试说明
  • 样例:输入14 → 输出181.000
  • 注意:区间端点与排除点的处理需和题面一致。
#include<stdio.h>int main(void){  /*********Begin*********/double x,y;scanf("%lf",&x);if(x<0 && x!=-3){y=x*x+x-6;}else if(x>=0 && x<10 && x!=2 && x!=3){y=x*x-5*x+6;}else{y=x*x-x-1;}printf("%.3f",y);/*********End**********/ return 0;}

第4关:学生成绩等级换算

任务描述

给出一百分制成绩,输出等级A/B/C/D/E;若不在0~100范围内,输出Score is error!

相关知识
  • 区间判断:n>=90 && n<=100 等;
  • 输入合法性校验:先判断是否在[0,100]范围内;
  • 按要求打印固定提示或等级字符。
编程要求

Begin-End之间完成读入、合法性判断与等级输出。

解题思路:

  1. 读取分数n
  2. 越界则输出错误提示并结束;
  3. 否则按区间输出等级字符。

实现步骤:

  • 先做范围校验;
  • 再按从高到低的区间判断并输出;
  • 每个分支尽早return可减少后续判断。

输入 一个整数分数

输出 一行:等级字符或错误提示

测试说明
  • 样例:90A;越界示例:-1120Score is error!
#include<stdio.h>int main(void){  /*********Begin*********/int n;scanf("%d",&n);if(n>100 || n<0){printf("Score is error!");return 0;}else if(n>=90 && n<=100){printf("A");return 0;}else if(n>=80 && n<=89){printf("B");return 0;}else if(n>=70 && n<=79){printf("C");return 0;}else if(n>=60 && n<=69){printf("D");return 0;}else if(n<60){printf("E");return 0;}/*********End*********/ return 0;}
http://www.dtcms.com/a/365803.html

相关文章:

  • Proteus8 + STM32CubeMX 实现 STM32F103R6 串口通信教程
  • JMeter下载安装及使用入门
  • 常用符号 Emoji 对照表——Unicode UTF-8
  • SQLSERVER临时表
  • 关于专业化与多元化该怎么选?
  • 解决MQ访问不了或者登录不成功问题
  • 卷积神经网络CNN-part2-简单的CNN
  • TypeScript与JavaScript:从动态少年到稳重青年的成长之路
  • RabbitMQ相关知识
  • HTML第七课:发展史
  • Unity:XML笔记(二)——Xml序列化、反序列化、IXmlSerializable接口
  • 裸机程序(1)
  • 【ARM嵌入式汇编基础】-数据处理指令(三)
  • 低成本低功耗认证芯片推荐——LCS4110R
  • 【Luogu】P2398 GCD SUM (容斥原理求gcd为k的数对个数)
  • 鸿蒙NEXT开发实战:图片显示、几何图形与自定义绘制详解
  • GPT4o 提示词 结合 NanoBanbana 会摩擦出什么火花呢?
  • FPGA笔试面试常考问题及答案汇总
  • 入行FPGA选择国企、私企还是外企?
  • 案例演示 切片器悬浮永驻 Power BI VS QuickBI ,不得不说,两个极端了
  • 华勤内推码
  • 智慧交通管理信号灯通信4G工业路由器应用
  • 【机器学习深度学习】LLM:在检索与重排序中的适用场景
  • PS更改图像尺寸
  • 心路历程-初识Linux用户
  • 于海斌、王耀南、张钹三位院士解读具身智能
  • 数据结构与算法-线性表
  • C++零基础第一天:从Hello World到变量常量
  • 【JAVA】windows本地跑zookeeper,然后使用代码连接服务获取znode数据
  • 什么是STDIO 模式,fastmcp 采用 STDIO