Ⅰ C语言程序,编译连接时都没问题但运行时出错了
一眼就能看出的错误
你的
char
*name[100];
只是指针,没有分配内存,你把它做为二维数组用了
另外,字串数组不能只交换指针的
给你一个简单的参考(固定5个字串,非函数调用)
#include
<stdio.h>
#include
<string.h>
int
main()
{
int
i,j;
char
str[5][200],temp[200];
printf("Please
inout
five
strings:\n");
for(i=0;i<5;i++)
scanf("%s",str[i]);
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if
(strcmp(str[j],str[j+1])>0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
for(i=0;i<5;i++)
printf("%s\n",str[i]);
return
0;
}
Ⅱ 下面这个程序编译连接都没问题,运行时出现下面的错误
逻辑问题,在main函数里声明的tkm这个对象的内存不在堆里面,无法使用delete删除,想要实现你的功能,可以把main函数做如下修改:
int
main()
{
TestKillMyself*
tkm=new
TestKillMyself
();
tkm->KillMe();
return
0;
}
注意,这里的tkm就在堆里面分配的空间,可以使用delete操作了,并且,此时在main里面不能再使用delete
tkm这样的语句了
Ⅲ C语言程序在编译链接的时候都没有问题,在调试的时候出问题了
在
fscanf.c
的第54行出错。
表达式:stream!=NULL
关于如何您的程序可能会导致断言失败的信息,请参阅Visual
C
+
+文档
Ⅳ C语言编程: 为什么编译和链接都没有问题 但就是运行不出结果
最后的打印格式应该用 %f,%d是打印整数用的。
f2/f1是整数运算,只保留整数部分,比如3/2的结果是1,而不是1.5,改成这个样子
s=s+(double)f2/(double)f1;
f2=f,f1=f2,结果是f1和f2一样了,这个赋值顺序有问题。
Ⅳ c++程序运行时编译和连接没有错误 执行时会出现xx.exe已停止工作
大致浏览了一下,没有发现明显错误。
这种情况,就需要调试了。F5执行程序,遇到运行警告后中断,通过调用堆栈查看具体问题代码行。之后,通过变量观察、设置断点、单步执行等方式,查找具体问题。
编译链接无误,只是没有语法错误,运行时错误一般都是代码中对内存、指针、句柄的非法操作造成的。
另外,如果没有特殊指定要求,用一个char[100]代替链表指针是个不错的选择,因为在没有类管理的前提下,链表不仅增加了很多程序复杂度,而且还没有达到节省空间和方便灵活的目的。
Ⅵ 一个C语言程序,编译、链接都没问题,但一运行就出错,高手知道下~~
改好了:
#include <stdio.h>
#include <stdlib.h>
typedef struct dxs
{
int exp,coef;
struct dxs *next;
}oxs,*o_xs;
/*****输入函数*****/
void build(int i,o_xs pa)
{
int j,sum_oxs,exps=0,coefs=0;
oxs *p;
pa->coef=coefs;
pa->exp=exps;
pa->next=NULL;
p=pa;
printf("输入第%d个多项式的个数\n",i);
scanf("%d",&sum_oxs);
for(j=sum_oxs;j>0;j--)
{
printf("输入系数和指数");
scanf("%d%d",&coefs,&exps);
p->coef=coefs;
p->exp=exps;
p->next=pa;
pa=p;
p=(oxs*)malloc(sizeof(oxs));
}
free(p);
}
/*****输出函数*****/
void show(o_xs pa)
{
while(pa!=NULL)
{
printf("%d\t%d\t",pa->coef,pa->exp);
pa=pa->next;
}
printf("\n");
}
/*****排序函数(升序)*****/
void list_oxs(o_xs pa)
{
oxs tt,tt0;
oxs *p=pa,*q=pa;
tt.coef=p->coef;
tt.exp=p->exp;
while(p!=NULL)
{
while(q!=NULL)
{
if(q->exp<tt.exp)
{
tt0.exp=tt.exp;tt0.coef=tt.coef;
tt.exp=q->exp;tt.coef=q->coef;
q->exp=tt0.exp;q->coef=tt0.coef;
}
q=q->next;
}
tt0.exp=tt.exp;tt0.coef=tt.coef;
tt.exp=p->exp;tt.coef=p->coef;
p->exp=tt0.exp;p->coef=tt0.coef;
p=p->next;
q=p;
}
}
/*****多项式相加函数*****/
void add(o_xs pa,o_xs pb)
{
int sum_coef;
oxs *p,*q,*u,*pre;
pre=pa;
u=pb;
p=pa->next;
q=pb->next;
while((p!=NULL)&&(q!=NULL))
{
oxs *p,*q,*u,*pre;
if(p->exp>q->exp)
{
u=q;
pre->next=u;
u->next=p;
pre=u;
q=q->next;
}
else if(p->exp<q->exp)
{
pre=p;
p=p->next;
}
else
{
sum_coef=p->coef+q->coef;
if(sum_coef==0)
{
u=p;
p=p->next;
free(u);
u=q;
q=q->next;
free(u);
}
else
{
p->coef=sum_coef;
pre=p;
p=p->next;
u=q;
q=q->next;
free(u);
}
}
if(q!=NULL)
{
pre->next=q;
}
}
}
/*****main函数*****/
void main()
{
oxs a,b;
build(1,&a);
list_oxs(&a);
show(&a);
build(2,&b);
list_oxs(&b);
show(&a);
add(&a,&b);
show(&a);
}
Ⅶ C语言程序编译链接没错误但结果不对…
scanf("%d,%d",&a,&b);你把这句分开写就好了,scanf("%d",&a);scanf("%d",&b);因为你在输入a以后,会按下回车,如果你写在一行就会把这个回车符赋给了b,所以b就是错误的!
Ⅷ C++程序编译连接都没有问题,但是运行时却什么东西都出不来,也没有报错,怎么回事啊
应该是逻辑错误吧。逻辑错误不同于语法错误,编译器是不会告诉你的。
记得我做数据结构课设的时候就是指针指向不对,结果虽然能运行,但是就是不出结果。。好好检查一下吧。书上的例子最好看懂了以后自己默敲在电脑里,而不要做typewriter,明白么?望楼主收获更多。
Ⅸ c语言中编译和链接没问题,执行出错是什么原因
说明代码中的逻辑有问题
可能出现了越界一类的
或者代码设计的本身就有问题。
这个要看具体代码才清楚的。