程序改错

输出这个程序:

#include<stdio.h>
#include<stdlib.h>
int fun(int x, int y)
{
static int m = 0;
static int i = 2;
i += m + 1;
m = i + x + y;
return m;
}
void main()
{
int j = 4;
int m = 1;
int k;
k = fun(j, m);
printf("%d\n", k);
k = fun(j, m);
printf("%d\n", k);
system("pause");
return 0;
 
}

结果:

8

17

指出程序错误:

(1)

unsigned long FUNC_B(unsigned long ulCount)
{
unsigned long ulSum = 0;
while (0 <= ulCount)//无符号ulCount范围>=0,while一直为真,跳不出来,导致程序死循环
{
ulSum += ulCount;
ulCount--;
}
return ulSum;
}

(2)

char*GetStr(char*p)//p是str的一份拷贝
{
p = "hello world";//只把字符串的首地址h传给了函数(保存在了p里,并没有保存在str里)所以什么都没有输出
return p;
}
void main()
{
char*str = NULL;
if (NULL != GetStr(str))
{
printf("\r\n str=%s", str);
}
}
改之后:
char*GetStr(char**p)
{
*p = "hello world";
return *p;
}
void main()
{
char*str = NULL;
if (NULL != GetStr(&str))
{
printf("\r\n str=%s", str);
}
}

(3)

void VarInit(unsigned char*pucArg)改正:将char改为long
{
*pucArg = 1;
return;
}
void Test()
{
unsigned long ulGlobal;//4个字节
VarInit((unsigned char*)&ulGlobal);//ulGlobal传给pucArg,但是pucArg是char*类型,只访问了1个字节,后面3个字节不知,所以不能输出1
printf("%lu", ulGlobal);
return;
}

(4)

LONG A()
{
if (条件1)
{
return;//无返回值,错误
}
return VOS_OK;
}
VOID B()
{
if (A())
{
DoSomeThing1();
}
else
{
DoSomeThing2();
}
return;
}

(5)

#define ID_LEN 32
struct STR_A
{
char aucID[ID_LEN];
int iA;
};
struct STR_B
{
char*paucID;
int iB;
};
void funcA(struct STR_A stA, struct STR_B*pstB)
{
pstB->paucID = stA.aucID;
}
void main()
{
STR_A stA = { 0 };
STR_B stB;
strcpy(stA.aucID, "12345");
funcA(stA, &stB);
printf("%s\n", stB.paucID);
}

(6)

#define MAX_SIZE 255
void main()
{
unsigned char buff[MAX_SIZE + 1];
unsigned char i;
for (i = 0; i <=MAX_SIZE; i++)//i为无符号,范围0-255,i<=255恒成立,跳不出来,死循环
{
buff[i] = i;
}
}

(7)

...............
gui_push_clip();
#ifdef AAA//条件AAA定义,if参与,若AAA无定义则if不参与
if (show_status==MMI_TRUE)
#endif
#ifdef BBB
gui_show_image(x, y, image_id);
#endif
  
gui_pop_clip();
update_dt_display();
................
有隐患,AAA定义了则上面成立,若没定义则底下BBB(隐藏)成立,只需要一个,所以去掉BBB
时间: 2024-10-26 05:34:44

程序改错的相关文章

JAVA程序改错 (易错题)

1 JAVA程序改错 2 1. 3 abstract class Name { 4 private String name; 5 public abstract boolean isStupidName(String name) { 6 } 7 } 8 答案: 错.abstract method必须以分号结尾,且不带花括号. 9 2. 10 public class Something { 11 void doSomething () { 12 private String s = ""

跟涛哥一起学嵌入式 第05集:一道程序改错题,测出你的嵌入式功底

大家好,欢迎阅读<跟涛哥一起学嵌入式>第05集,我们今天讨论一下中断的基本概念. 中断,是嵌入式开发中经常使用的一个功能,也是嵌入式工程师必须要掌握的一个概念:CPU和外设通信时,一般都采用中断的形式异步通信,可以大大提高CPU资源的利用率.而你对中断的理解,到底有多少呢?不要急,一道程序改错题,就可以测出你的嵌入式系统功底. 比如,我们在嵌入式ARM裸机平台上,要实现一个MP3播放器,要求实现如下功能:当按键按下时,可以播放.暂停.播放下一首.上一首.为此,我们设计一个按键中断服务程序,当有

合并两个排序的链表(剑指offer)

合并两个排序的链表 参与人数:1527时间限制:1秒空间限制:32768K 通过比例:27.96% 最佳记录:0 ms|8552K(来自  牛客708854号) 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目链接:http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?rp=1&ru=/ta/coding-interviews&qru=/ta/codin

《编程之美》3.6判断链表是否相交之扩展:链表找环方法证明

先看看原题:<编程之美>3.6编程判断两个链表是否相交,原题假设两个链表不带环. 为了防止剧透使得没看过原题目的读者丧失思考的乐趣,我把最好的解法隐藏起来.由于这个问题本身的解答并不是本文的重点,扩展问题也采用这种形式呈现. 注:位于(*)符号之间的文字出自于:http://blog.csdn.net/v_july_v/article/details/6447013,作者v_JULY_v. 用指针p1.p2分别指向两个链表头,不断后移:最后到达各自表尾时,若p1==p2,那么两个链表必相交 用

【编程之美】目录

第1章  游戏之乐——游戏中碰到的题目 1.1 让CPU占用率听你的指挥 1.2 中国象棋将帅问题 1.3 一摞烙饼的排序 1.4 买书问题 第2章  数字之魅——数字中的技巧 2.1 求二进制中1的个数 2.2 不要被阶乘吓倒 2.3 寻找发帖"水王" 2.4 1的数目 2.5 寻找最大的K个数 2.6 精确表达浮点数 2.7 最大公约数问题 2.8 找符合条件的整数 2.9 斐波那契(Fibonacci)数列 2.10 寻找数组中的最大值和最小值 2.11 寻找最近点对 2.12

二级C

2016年全国计算机等级考试二级C语言考试大纲+二级C复习指南   ◆ 基本要求        1.熟悉Visual C++ 6.0 集成开发环境.   2.掌握结构化程序设计的方法,具有良好的程序设计风格.   3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序. 4.在 Visual C++ 6.0 集成环境下,能够编写简单的C 程序,并具有基本的纠错和调试程序的能力 ◆ 考试内容   一.C    语言程序的结构  1.程序的构成,main函数和其他函数.   2.头文件,数据说明,

全面整理的C++面试题

C++面试题 1.是不是一个父类写了一个virtual 函数,假设子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的. private 也被集成,仅仅事派生类没有訪问权限而已 virtual可加可不加 子类的空间里有父类的全部变量(static除外) 同一个函数仅仅存在一个实体(inline除外) 子类覆盖它的函数不加virtual ,也能实现多态. 在子类的空间里,有父类的私有变量.私有变量不能直接訪问. -------------------------

指南】计算机二级C语言上机操作指南

1 上机考试介绍 全国计算机等级考试二级 C 语言的上机考试时间为90 分钟,考试时间从考生点击"开 始考试并倒计时"按钮考试,由考试系统自动倒计时.倒计时结束前5 分钟,考试系统会自 动报警题型考生考试即将结束并注意存盘.当倒计时结束,考试系统将自动锁定计算机,考 生将不能再进行任何操作.当考生点击"交卷"按钮后,考试系统也会自动锁定计算机. 注意:无论由于什么原因,考试系统在锁定计算机后,考生都要举手报告监考老师,由监考 老师输入密码后,方可离开考场. 上机考试

硕士生和博士生应该如何选导师?

作者:许铁-巡洋舰科技链接:https://www.zhihu.com/question/21782938/answer/120466864来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 斯坦福的一个教授在专业科研杂志Cell上讲如何挑博士生导师,完完全全的从学生的角度出发.想起我自己的一些经历,觉得如果很多年前看过这个文章就好了,把英文消化成自己的话,结合自己的经历给大家介绍一下. 或许对科研以外的行当也有帮助.Cell文章来源:How to Pick a gr