把一下程序中的print()函数改写成
源代码:
#include <iostream>
using namespace std;
void print( int w )
{
for( int i = ; i <= w ; i++ )
{ for( int j = ; j <= i ; j++ )
cout << i << " " ;
cout << endl ;
}
}
int main()
{
print( ) ;
}
错误代码:
//错误代码
#include<iostream>
using namespace std;
int print(int w)
{
if (w == )
{
for (int i = ; i <= w; i++)
{
cout <<w << " ";
}
cout << endl;
return ;
}
for (int i = ; i <= print(w - ); i++) //这里有错
//因为print(w-1)在for循环的条件表达式里,所以每走一次循环都会执行一次
{
cout << w << " ";
}
cout << endl;
return w + ;
}
int main()
{
int a;
cin >> a;
print(a);
system("pause");
}

然后输出了一堆莫名奇妙的东西。
经过一番调试后,找出了问题所在,改写了代码,把递归的代码部分放到循环外面,问题解决。
正确代码:
#include<iostream>
using namespace std;
int print(int w)
{
if (w == )
{
for (int i = ; i <= w; i++)
{
cout <<w << " ";
}
cout << endl;
return w+;
}
int a = print(w - );
//把print(w-1)放到循环外面,并用变量a来传递返回值
for (int i = ; i <= a; i++)
{
cout << w << " ";
}
cout << endl;
return w + ;
}
int main()
{
int a;
cin >> a;
print(a);
system("pause");
}
正确输出:
附上答案里面的代码(比较简洁)
#include<iostream>
using namespace std;
void print(int w)
{
int i;
if( w )
{
print( w- );
for( i=; i<=w; i++ )
cout << w << " ";
cout << endl;
}
}
void main()
{
print( );
}
把一下程序中的print()函数改写成的更多相关文章
- MEX程序中的mexFunction函数【转】
与C中的main函数一样,MEX程序中的开始函数为mexFunction.默认变量参数是: void mexFunction(int nlhs, mxArray *plhs[], int nrhs, ...
- 《从零开始学Swift》学习笔记(Day 7)——Swift 2.0中的print函数几种重载形式
原创文章,欢迎转载.转载请注明:关东升的博客 Swift 2.0中的print函数有4种重载形式: l print(_:).输出变量或常量到控制台,并且换行. l print(_:_:).输出 ...
- 在一个C程序中,main()函数可以放在哪?
C语言规定,在一个C程序中,main()函数的位置(). A.必须在系统调用的库函数之后 B.必须在程序的开始 C.必须在程序的最后 D.可以在任意位置 答案:D [解析] 每个C程序有且只有一个主函 ...
- Linux上从Java程序中调用C函数
原则上来说,"100%纯Java"的解决方法是最好的,但有些情况下必须使用本地方法.特别是在以下三种情况: 需要访问Java平台无法访问的系统特性和设备: 通过基准测试,发现Jav ...
- CentOS 6中MATLAB print函数“所见非所得”bug的解决方案
0 系统配置+软件版本 主机:Dell optiplex 390 MT (i5) 系统+软件:CentOS 6.5 x64, Matlab R2012, R2013 系统+软件:CentOS 6.7 ...
- MFC程序中消息以及函数的处理顺序简介[转]
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该 ...
- 从Win32程序中的主函数中获取命令行参数
在标准C或者Win32控制台程序的main函数中,它们都有两个参数:"argc" 和 "argv",如下所示: int main(int argc, char ...
- python 中的 print 函数与 list函数
print() 函数: 传入单个参数时默认回车换行,关键词 end 可以用来避免输出后的回车(换行), 或者以一个不同的字符串结束输出. >>> a, b = 0, 1 >& ...
- python中,print函数的sep和end参数
print函数是我们经常使用的,但是它的sep和end参数或许对很多python使用者相对陌生,他们可以让我们的打印更具有个性化. 先来看下官方解释, sep:分割值与值,默认是一个空格 end:附件 ...
随机推荐
- Nginx下配置虚拟主机的三种方法
Nginx下,一个server标签就是一个虚拟主机. 1.基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2.基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的 ...
- XAMARIN 安卓程序闪退问题
参考:https://forums.xamarin.com/discussion/25780/unfortunately-app-name-has-stopped 在VS 2017中使用Xamarin ...
- linux中gcc和g++的区别
1.两者都是编译器 2.gcc编译c语言:g++既可以编译c语言,也可以编译c++语言 3.gcc不能自动链接库文件,一般用g++来链接库文件,非要用gcc的话,一般使用gcc -lstdc++命令 ...
- .NET Core----七牛云图片上传
在引用官方的qiniu.core的nuget是总是发生错误,错误如下,所以就在网上找到了一种解决方案,并稍微改进了一番, 以下是引用图: 方法一: 第一步:引用nuge 第二步:新建项目新建控制器视图 ...
- oracle,mysql,sql server三大数据库的事务隔离级别查看方法
1:mysql的事务隔离级别查看方法 mysql 最简单,执行这条语句就行:select @@tx_isolation 详情: 1.查看当前会话隔离级别 select @@tx_isolation; ...
- 基于Https协议返回Jason字符串
一:代码结构 二:框架结果: spring+springMvc+springJdbc 三:源代码 1:Ctrl 层 package com.todaytech.yth.gdsd.base.DataIn ...
- SQL语句:子查询
一,子查询定义: 子查询就是嵌套在主查询中的查询. 子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 但并不是每个位置嵌套子 ...
- 《剑指offer》数字在排序数组中出现的次数
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- servlet九大内置对象和监听器
对象名称 类型 描述 作用域 request javax.servlet.ServletRequest 表示一次用户请求 Request response javax.servlet.SrvletRe ...
- kafka单机搭建,并测试api
所用环境: kafka_2.-.gz centos 6.9 nat动态ip 准备工作: ().将防火墙关闭 service iptables stop 临时关闭 chkconfig iptables ...