C语言第十一次博客作业---函数嵌套调用
一、实验作业
1.1 PTA题目
题目:递归实现顺序输出整数
1. 本题PTA提交列表

2. 设计思路
printdigits函数
定义整型变量result存放结果
if n是10的倍数
result=n
else
取n的个位数赋值给result
递归调用printdigits(n/10)
输出result
3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明
①递归出口错误。零的情况考虑错误。

②修改递归出口后正确。

1.2 学生成绩管理系统(目前的代码只能基本完成内容)
1.2.1 画函数模块图,简要介绍函数功能

1.2.2 截图展示你的工程文件

1.2.3 函数代码部分截图
- 本系统代码总行数:313
- 头文件

- 插入学生信息

- 删除学生信息

- 总分排序

1.2.4 调试结果展示
基础功能展示
新增学生信息


修改学生成绩信息

删除学生成绩信息

插入新的学生信息


排序



查询学生信息

退出系统

非法输入结果展示
- 在没有学生信息的情况下无法进行修改、删除、排序等功能

其它非法输入代码还未添加
1.2.5 调试碰到问题及解决办法。
- 系统如果记住了先前的运行结果导致修改后运行结果无法显示,可以先执行运行->清除后再编译运行。
- 新增学生信息中,输入信息应该存放在第count个位置,不是第i个位置,否则新增信息会把原本的学生信息覆盖掉。
二、截图本周题目集的PTA最后排名。
PTA排名

三、阅读代码
题目:整数拆分
给定一个整数n,输出这个整数拆分的可能总数
例如:n==6有
6
5+1
4+2 4+1+1
3+3 3+2+1 3+1+1+1
2+2+2 2+2+1+1 2+1+1+1+1
1+1+1+1+1+1
共11种分解方法,所以输出应该为11。
#include <stdio.h>
int q(int n,int m) //n为要拆分的数字,m为所拆部分中最大值
{
if(n == 1|| m == 1)
return 1;
else if(n < m)
return q(n,n);
else if(n == m)
return 1 + q(n,n - 1);
else if(n > m)
return q(n,m-1)+q(n - m,m);
}
int main ()
{
printf("请输入要拆分的数字\n");
int n;
scanf("%d",&n);
int ret = 0;
ret = q(n,n);
printf("该数字一共有的拆分方法数\n");
printf("%d",ret);
return 0;
}
分析:
① 当n=1时,只有一种划分{1};
②当m=1时,只有一种划分{1,1,....1,1,1};
③当n=m时,根据划分中是否包含n,可以分为两种情况: (1)划分中包含n的情况,只有一个{n}; (2)划分中不包含n的情况,使用不大于n-1的整数进行拆分;所以此时 q(n,n) = 1 + q(n, n - 1)。
④当n<m时,使用比n大的数进行拆分没有意义,所以此时相当于q(n,n)
⑤当n>m时,这时候有两种情况:
(1)使用m对n进行拆分,拆分出来的情况最大的数是m,剩下的所有数加起来为n-m,问题变成使用不大于m的整数对n-m进行拆分,所以此时为q(n-m,m)
(2)使用小于m的数对n进行拆分,使用小于m的数对n进行拆分,表示为q(n,m-1)
所以此时q(n,m) = q(n - m,m) + q(n, m - 1)。
综上,①②属于回归条件,③④属于特殊情况,⑤为通用情况,属于递归的方法,其本质主要是通过减少n或m以达到回归条件,从而解决问题。
递归表达式:
四、本周学习总结
1.介绍本周学习内容
1.1.宏(宏替换)
- 宏定义的格式:
#define 宏名标识符 宏定义字符串
注:
1.不是真正的C语句,行尾不用加分号
2.常采用大写字母串作宏名,宏名与宏定义字符串间用空格分隔,所以宏名中间不能用空格
3.宏定义字符串是任意字符串,中间可以有空格,以回车符做结束
4.如果宏定义字符串后面跟分号,编译预处理时把分号也作为宏替换内容
5.宏定义可以嵌套使用
#define PI 3.1415926
#define S PI*r*r
- 宏的用途
1.符号常量,如PI、数组大小的定义
2.简单的函数功能实现
3.当程序中需要多次书写一些相同内容时,不妨把它写成宏
例:
#define LONG_STRING "it represent a long string that \
is used as an example."
使用方式:printf(LONG_STRING )
注:
1.#define最后面跟的“\”表示该行未结束,与下一行合起来成为完整一行
2.LONG_STRING 代表带引号的字符串,因此printf()中不必再加引号
- 带参数的宏定义
#define 宏名(参数表) 宏定义字符串
注:
1.参数表中只有参数名称,没有类型说明
2..宏名和小括号必须紧挨着;小括号不能省略
3.如果替换文本中有括号,则进行宏替换时必须有括号;反之,如果替换文件中本身没有括号,则宏替换时不能随便加括号。
4.宏替换不作计算。
例:求y=(x+y)²
错误:#define SQR(x) x*x 宏替换后 -> y=x+y*x+y≠(x+y)²
正确:#define SQR(x) (x)*(x)宏替换后 -> y=(x+y)*(x+y)=(x+y)²
1.2.文件包含
- 文件包含的格式:
#include<需包含的文件名>或#include"需包含的文件名"
1.双引号,是指系统先在源程序所在的目录查找指定的包含文件,如果找不到,再按照系统指定的标准方式到有关目录中去找。
2.尖括号,系统将直接按照系统指定的标准方式到有关目录中去寻找。
2.学习体会
- 这周的内容学起来有点乱,特别是指针进阶这一部分内容,还需要总结学习。
- 这周的作业学生成绩管理系统,代码量增多,也是新的作业方式,多文件工程,对我有难度。
- 一学期快结束了,前面的一些知识点也要着手复习总结,接下来应该是更忙碌的一个月了。
C语言第十一次博客作业---函数嵌套调用的更多相关文章
- C语言博客作业--函数嵌套调用
一.实验作业(6分) 本周作业要求: 选一题PTA题目介绍. 学习工程文件应用,设计实现学生成绩管理系统. 学生成绩管理系统要求 设计一个菜单驱动的学生成绩管理程序,管理n个学生m门考试科目成绩,实现 ...
- C语言博客作业—函数嵌套调用
一.实验作业 1.1 PTA题目:递归法对任意10个数据按降序排序 1.1.1设计思路 void sort(int a[],int n) { 定义整型循环变量i,中间变量temp,最小值min: 令m ...
- C语言第五次博客作业--函数
一.PTA实验作业 题目1:使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 3.本题调试过程碰到问题及PTA提交列表情况说明. 部分正确 :将else的情况放入for循环内,导致循环 ...
- 第十一周博客作业 <西北师范大学| 周安伟>
第十一周助教作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/107615 ...
- C语言第七次博客作业--一二维数组
一.PTA实验作业 题目1:找鞍点 1. 本题PTA提交列表 2. 设计思路 定义n,i,j,ii,jj,a[7][7],flag,max 输入n for i=0 to i=n for j=0 to ...
- C语言最后一次博客作业
1.当初你是如何做出选择计算机专业的决定的? 一开始选专业的时候,说实话我很纠结也很迷茫,对我来说,中学时代,似乎就只要考好试,做好题就可以了,对于未来想要做啥并没有那么多的规划和想法,偶尔跟基友畅聊 ...
- C语言博客作业——函数
一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1.本题PTA提交列表 2. 设计思路 int narcissistic( int number ) //函数定义 1.定义整数型变量a.i分 ...
- C语言第四次博客作业--嵌套循环
一.PTA实验作业 题目1:编程打印空心字符菱形 1. 本题PTA提交列表 2. 设计思路(流程图) 3.本题调试过程碰到问题及解决办法 思考过程:将问题拆解为菱形问题和字母变化问题两部分 1> ...
- C语言博客作业—函数
一.PTA实验作业 题目1:使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1)首先定义函数narcissistic(number)判断number是否为水仙花数: (2)narc用 ...
随机推荐
- SDP(10):文本式大数据运算环境-MongoDB-Engine功能设计
为了让前面规划的互联网+数据平台能有效对电子商务数据进行管理及实现大数据统计功能,必须在平台上再增加一个MongDB-Engine:数据平台用户通过传入一种Context来指示MongoDB-Engi ...
- 事件绑定与解除js
//Ys为元素,Sj为事件,Hs为函数,bol选择是true绑定事件,还是false解除事件 //需要提前定义a,b,c,bol function thing(Ys,Sj,Hs,bol){ var i ...
- Python Cookbook(第3版)中文版:15.18 传递已打开的文件给C扩展
15.18 传递已打开的文件给C扩展¶ 问题¶ 你在Python中有一个打开的文件对象,但是需要将它传给要使用这个文件的C扩展. 解决方案¶ 要将一个文件转换为一个整型的文件描述符,使用 PyFile ...
- CF908D Arbitrary Arrangement
题目大意: 给定三个数\(k\) , \(p_a\) , \(p_b\) 每次有\(\frac{p_a}{p_a+p_b}\)的概率往后面添加一个'a' 每次有\(\frac{p_b}{p_a+p_b ...
- linux 下oracle 11g静默安装(完整版)
1.操作系统及Oracle版本Linux版本:CentOS release 6.5Oracle版本:Oracle Database 11g Release 2 (11.2.0.1.0) for Lin ...
- angular路由详解三(路由参数传递)
我们经常用路由传递参数,路由主要有三种方式: 第一种:在查询参数中传递数据 {path:"address/:id"} => address/1 => Activa ...
- Xamarin改变移动开发的五个理由
企业开发者不能简单的抛弃现有的桌面和Web应用,然而又不得不忙着创建各种各样的应用,没有太多的预算来开发移动版本,尤其是原生版本. 采用Xamarin,C#开发人员可以使用一份基础代码创建桌面版和移动 ...
- STM32F10x的启动汇编分析
;******************** (C) COPYRIGHT 2009 STMicroelectronics ********************;* File Name ...
- 关于Eclipse无法识别手机或者模拟器的解决方案
Android开发的时候经常会出现eclipse devices中不显示手机或模拟器的情况 网上有很多方法,但是都不实用.这里我提供一种方法: 如果手机连接上了不显示的话首先我们要确定我们手机的驱动是 ...
- Unity3D相机震动效果
在一些格斗.射击以及动作类游戏中 相机震动效果是十分重要的 一个平凡的镜头 在关键时刻加入相机震动后 便可以展现出碰撞.危险.打斗以及激动人心的效果 相机震动的实现方式有很多 但都会涉及摄像机位置的变 ...
