C语言里程序编译无误但运行会弹出程序已停止运行是为什么

甜品 浏览

一、C语言里程序编译无误但运行会弹出程序已停止运行是为什么

造成程序停止运行弹框出错的可能原因如下:

1. 内存溢出

内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件

造成内存溢出的原因可能有:

1>栈区溢出,例如在main函数内开辟的数组空间过大,一般机器的栈区限制在8MB左右,如果开辟的数组大小超过限制,程序就会崩溃。通常的解决方法是申请堆内存,即将较大的数组作为全局变量开在main函数之外。

2>错误地址访问,常见的非法访问包括指针漂移,数组越界等,初学者也经常出现类似scanf函数没加区地址符号&的情况导致在读取变量的时候因非法访问造成的溢出。

3>数据类型不符,问题和第二个类似,例如在声明变量时声明为int在输出变量时却用了%lld,就会造成因数据类型不符而导致的溢出。

2. 编译器错误

部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能导致程序出现不限于崩溃退出的异常错误,通常解决方法是到编译器官方网站下载最新版的IDE安装。

二、有关顺序栈的问题

#include <stdio.h>

int a[1111];

int p = 0;

#define push(n) (a[p++] = n)

#define pop() (a[--p])

#define empty() (p == 0)

int main(void)

{

    int i;

    for(i = 1; i <= 100; ++i) {

    printf(%3d , push(i));

    if(i % 10 == 0)

    putchar('\n');

    }

    i = 0;

    putchar('\n');

    while(!empty()) {

    printf(%3d , pop());

    if(++i % 10 == 0)

    putchar('\n');

    }

    return 0;

}

三、为什么吃甜食会酸心

引起胃酸分泌增加的原因主要有以下几个方面: (1)与遗传有关的体质因素。 (2)胃粘膜壁细胞长期遭受刺激、兴奋,如:①副交感神经长时间兴奋而持续产生乙酰胆碱。②胃泌素细胞(G细胞)分泌胃沁素过高,如G细胞对H+(氢离子)的抑制作用反应迟钝;胃窦部粘膜接触蛋白质分解产物,胃窦部膨胀等所致的胃沁素增多。 (3)壁细胞的反应性增高或总数增多。即使壁细胞总数正常,也可因高胃酸分泌损伤粘膜。 (4)十二指肠粘膜释放某些激素的功能减退时,也可导致胃酸及胃泌素的分泌增高。 由此可见,胃粘膜壁细胞总体的增多,神经内分泌功能紊乱是引起胃酸分泌增加的主要因素,也是十二指肠溃疡形成的基础。 养胃 1、从生活作息上做起,最起码一天三顿要定时定量,最好给自己设定一个时间表,然后严格遵守。这同时会对睡眠时间产生影响,因为一些晚睡晚起的人是早中餐一块吃的,这种习惯必须要改,并不是说晚上吃夜宵可以弥补过来的,因为人的生物钟虽然可以前后移动,但总是在一定范围内,不可能产生太大的差别。如果不相信的话,可以去查一下相关人体生物钟的资料。 2、一般,胃消化功能不好的人,症状是吃一点点就会饱,稍微多吃一点就会胃胀,特别在晚上多吃的话,还会因为胃部滞胀而影响入睡。硬的、纤维类的东西不好消化。因而建议少吃多餐,如果还没到正餐时间,可以补充一些食物,但不宜过多,一定要记住这不是正餐,正餐还是要按正常来吃。食物以软、松为主,一些比较韧性、爽口的东西不宜多吃,因为这些东西最难消化。汤最好饭前喝,饭后喝也会增加消化困难。入睡前两三个小时都最好不要吃东西,否则容易影响入睡,如果觉得肚子空可以多喝水。 3、胃病的人应该戒烟、酒、咖啡、浓茶、碳酸性饮品(汽水)、酸辣等刺激性食物,这些都是最伤胃的。胃的脾性喜燥恶寒,因而冷饮和雪糕也必须要戒,食物以热为好,这对于任何人都是一个考验,特别是酷暑时节。有两种饮料应该多喝,一是牛奶,二是热水。牛奶可以形成一层胃的保护膜,每天早上起床后先喝一杯牛奶,在吃东西,是再好不过的。多喝水,特别是热水,因为人在大部分情况下会把缺水误认为是饥饿。 4、豆奶虽好,但为寒性,不能取代牛奶。 5、馒头可以养胃,不妨试试作为主食。 6、其他蔬菜水果类的食物是人体不能缺乏的,所以应该足量。但最好煮得软一点再吃,这样胃会好受一点。菜和果皮的纤维比较多,可以适度食用,但不宜太多,不容易消化,因而瓜果可以相对多吃。 7、有胃病的人饭后不宜运动,最好休息一下等胃部的食物消化得差不多了再开始工作,或者慢步行走,也对消化比较好,总之,餐后不宜工作。 8、非急性情况下,不提倡吃药,因为长期吃药都有副作用,而胃病是一种慢性病,不可能在短期内治愈。如果需要,提倡去看中医,中医的良方对于养胃特别有效。 9、木瓜适合胃的脾性,可以当作养胃食物,不过对于胃酸较多的人,不要使用太多。而且,一定要记住,胃喜燥恶寒,除了冰的东西以外,其他寒凉的食物像绿豆沙等也都不宜多吃。 10、再提一次,胃病是一种慢性病,不可能在短期内治好。治病良方就是靠“养”,急不来,只能从生活习惯的改良中获得。我们都需要一个好的胃,这些习惯的改变都是必需的。 ■胃酸过多食疗方: 多吃碱性食物如苏打饼干,焦面包,多饮红茶。严重的胃酸过多症,可用生姜和普洱茶一起煮,喝汤。 ■胃酸过多治疗方: ◇l、吴萸3克、黄连3克、牡蚣9克、滑石9克、石决明9克,水煎服,早晚各一次分服,此方颇具疏肝和胃,温中化湿,散结止痛的良效。

转载请注明:甜品网 » C语言里程序编译无误但运行会弹出程序已停止运行是为什么