首页 > 编程语言 >断点&输出大法快速定位编程错误

断点&输出大法快速定位编程错误

时间:2025-01-03 12:33:07浏览次数:1  
标签:输出 大法 cout int 编程 str mystring 断点

断点&输出大法快速定位编程错误

1、断点法

点红框位置就可以加每行代码的断点

再按F5进行debug操作,在下面的窗口看各函数的值

这种方法经常用在循环出现问题时进行处理

举个栗子

比方说现在输出的结果非常烫,但是由于代码复杂程度较高,不好分析

#include<iostream>
using namespace std;
class mystring
{private:
	char str[555];
public:
	mystring();mystring(const char s[]);mystring operator+(mystring m);void dayin();};
mystring::mystring(){str[0] = 0;}
mystring::mystring(const char s[])
{int i = 0;
	for (i = 0; s[i] != 0; i++)str[i] = s[i];
	str[i] = 0;}
mystring mystring::operator+(mystring m)
{mystring y;int i = 0;int n = 0;
	for (i = 0; str[i] != 0; i++)
		y.str[i] = str[i];
	for (n = 0; m.str[n] != 0; n++)
		y.str[i + n] = m.str[n];
	return y;}
void mystring::dayin(){cout<<str;}
int main()
{
	mystring s1("Hello");
	mystring s2("World");
	mystring s3;
	s3 = s1 + s2;
	s3.dayin();
	system("pause");
	return 0;
}

对重载部分进行分析:

因为有两个循环,所以我们需要分开判断是前面还是后面出了问题

用断点法给第一个for里面的语句上断点

点击运行,程序运行后自动停在这一行,此时下面的自动窗口会显示各个变量的值,我们可以用这个进行分析

此时按继续就可以一步一步地执行(可以用来判断是否是循环中间哪一步错了)

走到下一步就开始烫了

因此第一个循环就出现了问题

结合值可以分析是因为输出时直接使用cout<<str;导致的

因此对输出函数进行修改

特别提醒:如果大家出现了烫烫烫,别慌张,一般都是输出部分错了,平常我们用str[i]!=0,但由于str空位置指向-52的ascii码,所以这里可以用str[i]>0,相信聪明的大家都知道这是正确的hhh

改成这样即可

for(int i=0;str[i]>0;i++)cout << str[i];

去掉断点再输出,成功

2、输出法

跟上面断点差不多,只是这样更省时间,容易看出程序运行时变量的变化过程

很好理解,就是直接在循环中多加一句cout,把变量的值写出来

举个栗子

对于这种要输出很多数字的题目,经常会碰到输出不正确的情况,比如这种


(我不干活了)!

(输出的少了)

遇到这些情况我们可以用cout快速筛出错误数据进行处理

(第一种可能是变量不符合输出if语句要求,第二种就是变量计算问题)

比如这个代码(正确的,主要是我不知道错误怎么编了QAQ):

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
	int cishu;
	cin>>s;
	for(int i=0;i<=9;i++)
	{
		cishu=0;
		for(int j=0;j<=s.length()-1;j++)
		{
			if(s[j]==i+48)cishu++;
		}
		if(cishu!=0){cout<<i<<":"<<cishu<<endl;}
	}
}

判断是否正确可以在内层for中加上一个cout语句

for(int j=0;j<=s.length()-1;j++)
		{
			if(s[j]==i+48)cishu++;
			cout<<i<<":"<<cishu<<endl;
		}

运行的时候每一次计算结果都会输出

这样能够快速排除变量问题

本文由mdnice多平台发布

标签:输出,大法,cout,int,编程,str,mystring,断点
From: https://www.cnblogs.com/ljnljn/p/18649913

相关文章

  • 面向对象编程(OOP)
    在计算机编程的广阔领域中,面向对象编程(Object-OrientedProgramming,简称OOP)占据着举足轻重的地位,它为软件开发提供了一种高效、灵活且易于维护的编程范式,深刻地影响着现代软件的设计与开发方式。从桌面应用程序到大型企业级系统,从移动应用到网页开发,OOP的理念和技术随处可见,......
  • AI 自动化编程对编程教育的影响
    AI自动化编程的未来引言你是否曾想过,未来的程序员需要掌握哪些技能呢?随着人工智能的迅猛发展,特别是生成式AI工具的普及,编程的世界正在发生翻天覆地的变化。编程教育也在这种环境下进行着深刻的转型。那么,AI自动化编程究竟会如何影响编程教育呢?在这篇文章中,我们将一起探......
  • 在Lazarus下的Free Pascal编程教程——以数据需求拉动程序运行的模块化程序设计方法
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”和“2.已......
  • 在Lazarus下的Free Pascal编程教程——按数据流程规划程序结构
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”和“2.已经......
  • 一文带你入门仓颉编程语言(上)
    目录一、引言:仓颉编程的崛起二、编程环境搭建全攻略三、基础语法精析(一)变量与数据类型(二)表达式与流程控制四、函数:代码复用的利器(一)普通函数(二)Lambda表达式  一、引言:仓颉编程的崛起2024年6月21日下午,华为终端BG软件部总裁龚体先生在华为开发者大会主题演讲《......
  • 仓颉编程语言:编程世界的 “文化瑰宝”
    我的个人主页在当今编程领域百花齐放的时代,各种编程语言争奇斗艳,服务于不同的应用场景和开发者群体。然而,有这样一种编程语言,它承载着独特的文化内涵,宛如编程世界里一颗熠熠生辉的“文化瑰宝”,那就是仓颉编程语言。一、仓颉编程语言的渊源仓颉,本是传说中创造汉字的......
  • 会打字,就会编程!
    大家好!我是羊仔,专注AI工具、编程、智能体。最近羊仔发现一个超级好用的AI工具——Cursor。这是一个能让编程小白也能做出专业级别网站的神器,它颠覆了现有的编程方式,只需要和AI聊天就可以了!也就是说,人人都会编程!用上Cursor后,你不需要再学Python了!一、8岁“小程序员”的故事......
  • C# 编程系列:网络通信之TCP通信(第五篇:在线五子棋)
      欢迎阅读本系列教程——《C#编程系列:网络通信之TCP通信》。作为.NET开发者,掌握TCP/IP协议和其在C#中的应用,对于构建稳定、高效的网络应用程序至关重要。  本系列教程面向有一定C#基础,希望深入了解网络通信,特别是TCP通信的开发者。本系列都将为您提供全面指导。本系......
  • plantuml---可编程实现的画图工具(让图看上去很专业)
     经常看到有的ppt中有非常专业的图,非常整齐、简洁、清晰,于是经过一番查找和交流得知,有一款开源工具plantuml,能够实现此类效果。特记录之。个人感觉这个软件的2大优势是:可代码编程,可版本管理(因为是代码实现的)1、plantuml的官网:https://plantuml.com2、通过在VSCode......
  • AI 自动化编程会让程序员失业吗?
    AI自动化编程是否会导致程序员失业,是一个复杂而多方面的问题。虽然AI的发展确实在某些领域提高了效率,但并不意味着程序员会完全失业。相反,AI更可能改变程序员的工作方式,而非取而代之。以下是从多个角度的分析,配合代码解释。JetbrainsAiAssistant插件获取地址:https:/......