c程序编译成功后运行闪退
Ⅰ C程序编译没问题,但是运行要崩溃
我大概看了下你的源码,最主要的问题是你没有对front进行初始化就对其进行了操作,front指向不确定,对其进行操作当然会破坏程序本身。
另外我要说的是,队列无论是用栈、链表、数组等等实现,都有现成的算法,你参考下就好了。
你的源码里面有很多不规范的地方,例如:
1、判断队列为空的方法一般都是用front=rear;
2、按你的思路rear->next永远都应该等于NULL,即队尾为空,用它判断队列是否为空是不对的。
3、
linkshow()函数,判断队列到队尾用q!=NULL也不规范,q是个结构体。
4、linkshow()函数,输出的应该为q->data。
5、你定义了p,
front,
rear为全局指针变量,函数就不需要带参数了。
另外,还有不少逻辑错误,所以最好参考其他已有算法(教科书),重新编写你的程序。如果你想用自己的算法,就要解决好以下几个问题:
1、新加队列元素,需要开辟内存空间
2、注意判断队列为空的算法,不要遗漏当只有一个队列元素时候的输出显示问题(按你的思路,队列只有一个元素时,其next也为空)
Ⅱ c语言编写程序后,为什么执行时自动关闭
出现这种情况与溢出造成的有关 ,可以设置断点观察下,在哪里自动关闭。常见的容易溢出的原因是第一个是数组下标越界,第二个是除数为0当然还有其他的。
常见的原因因为程序没有设置暂停,运行完了之后,就自动关闭。可以在程序最后加上getchar();或者 system(pause)。实现程序暂停的效果。
pause是cmd中的一个命令,通过system函数调用执行。这样程序会在执行这个之后结束,换句话说就是按任意键退出,而不会直接退出。
(2)c程序编译成功后运行闪退扩展阅读
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单;
初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。
关键字又称为保留字,就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等标识符。
数据类型关键字:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的初始且唯一的方式。(C99标准新增)
复杂类型关键字:
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)
Ⅲ 新手学C问题:为什么我的C语言程序老是闪退
在return 0; 前加一条语句 getchar();
Ⅳ c语言程序执行一闪而过怎么办
可以在程序结尾使用system("pause");语句阻止窗口消失。
system("pause");的头文件为#include<stdlib.h>
#include<stdio.h>
#include<stdlib.h>
void to_upper_str( char *str ) //子函数
{
while( *str )
{
if( *str >='a' && *str<='z' )
*str -= 32;
str++;
}
}
int main(){
char str[11] ;
printf("请输入10个英文字符: ");
scanf("%s",str);
str[10]='