㈠ c语言编的程序异常停止 怎么看是运行到代码的哪一步出错了 另外我用的是codeblocks
调试了一下,修改代码和注释如下:#include#includeint main(){ char name[20],name1[10],name2[10],name3[10]; int a[3],i,j; float t,b1[3],b2[3],b3[3],sum[3]={0,0,0}; scanf("%d",&a[0]); fflush(stdin); //clear keyboard buffer after read character or string gets(name1); fflush(stdin); //clear keyboard buffer after read character or string for(i=0;ia[1])||( (a[0]==a[1]) &&( (strcmp(name1,name2) )>0))) { j=a[0]; a[0]=a[1]; a[1]=j; strcpy(name,name1); strcpy(name1,name2); strcpy(name2,name); t=sum[0]; sum[0]=sum[1]; sum[1]=t; } if((a[0]>a[2])||((a[0]==a[2])&&((strcmp(name1,name3)>0)))) { j=a[0]; a[0]=a[2]; a[2]=j; strcpy(name,name1); strcpy(name1,name3); strcpy(name3,name); t=sum[0]; sum[0]=sum[2]; sum[2]=t; } if((a[1]>a[2])||((a[1]==a[2])&&((strcmp(name2,name3)>0)))) { j=a[1];a[1]=a[2];a[2]=j; strcpy(name,name2); strcpy(name2,name3); strcpy(name3,name); t=sum[1]; sum[1]=sum[2]; sum[2]=t; } printf("%d,%s,%4.0f\n",a[0],name1,sum[0]); printf("%d,%s,%4.0f\n",a[1],name2,sum[1]); printf("%d,%s,%4.0f\n",a[2],name3,sum[2]); return 0;}主要问题是读入字符(串)输入后没有清键盘缓存。在VC6调试通过,运行结果如下图:供参考。
㈡ C语言中的abort()函数是不是只能终止异常程序
abort 是“流产”的意思。
abort()函数 终止程序运行,并发送出 SIGABRT 消息。它不释放分配的内存单元,也不返回到调用语句 -- 即不做正常结束时的 该做的常规结束工作,不打扫垃圾。
你当然也可以用它终止本程序在正常情况下结束。
abort()函数 无参。不是用来结束 任意其它程序。
㈢ c语言程序异常终止
#include<stdio.h>
voidmain(){
printf("——黄英来到由唐明明编译的学生成绩系统—— ");
intrs,km;
printf("请定义学生人数:");
scanf("%d",&rs);
printf("请定义科目数:");
scanf("%d",&km);
charsubject[10][10];
for(inti=0;i<km;i++){
printf("请输入第%d课科目名称:",i+1);
scanf("%s",subject[i]);
}
charname[100][20];
doublescore[100][10];
for(intm=0;m<rs;m++){
printf("请输入第%d为学生姓名:",m+1);
scanf("%s",name[m]);//运行到这儿程序就异常终止
for(intn=0;n<km;n++){
printf("请输入%s的%成绩",name[m],subject[n]);
scanf("%lf",&score[m][n]);
}
}
}
㈣ C语言函数调用然后就程序停止运行
float temp,*q; q没有分配地址,就使用,当然会导致程序异常!
你没有说清楚,你这两个函数计算出的结果要存到哪里,所以,不方便给你改
另:你明明是二维数组,为什么要用一维指针来操作数组呢?
㈤ C语言指针函数的问题,编译通过,但是执行程序却被终止。
fun中的指针datas连指向都没有,却用datas->a = a;和datas->b = b;给这指针的目标成员a、b赋值!datas这时还是野指针,它哪儿有a和b?肯定会运行终止的……你这个代码很好改:把函数名前的*删除,让函数返回结构体变量;再把datas前的*删除,让它成为一个Data型变量;主函数中把myData前的*删除,让它也成为一个结构体变量,把主函数中的printf中的两个->改成两个.就可以了。希望对你有帮助。
㈥ C语言运行时出现程序终止时怎么回事
char*
modify(char
*p)
{
char
newp[9];
printf("请输入新密码:\n");
p=newp;
scanf("%s",newp);
//newp[8]
=
'\0';
return
p;
}
返回值错误,当这个函数运行结束时,newp所指的内容被系统回收了,而这之前将它赋给了p,也就是函数结束后,p所指的内容不确定。
㈦ c语言运行时出现应用程序发生异常,是什么请况
有几种情况:
①变量读了不能读或写的内存空间。
②内存溢出(就是写进了不能写的内存空间)
③C函数内部自己调用的异常函数。
㈧ C语言里程序编译无误但运行会弹出程序已停止运行是为什么
造成程序停止运行弹框出错的可能原因如下:
内存溢出
内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件
造成内存溢出的原因可能有:
1>栈区溢出,例如在main函数内开辟的数组空间过大,一般机器的栈区限制在8MB左右,如果开辟的数组大小超过限制,程序就会崩溃。通常的解决方法是申请堆内存,即将较大的数组作为全局变量开在main函数之外。
2>错误地址访问,常见的非法访问包括指针漂移,数组越界等,初学者也经常出现类似scanf函数没加区地址符号&的情况导致在读取变量的时候因非法访问造成的溢出。
3>数据类型不符,问题和第二个类似,例如在声明变量时声明为int在输出变量时却用了%lld,就会造成因数据类型不符而导致的溢出。
编译器错误
部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能导致程序出现不限于崩溃退出的异常错误,通常解决方法是到编译器官方网站下载最新版的IDE安装。
㈨ c语言这个字符函数为什么会产生异常
puts是输出字符串,字符串是字符数组,不是二维字符数组。
你这样a[10][12]={{'a','b'}};只对第一行前两个元素赋初值,其余默认0。
那么相当于此时a[0]是字符串“ab”,a[1]~a[9]都是空字符串。
所以你用二维数组的a[0]来拼接字符串,那打印输出也应该用a[0]而不是a。
㈩ C语言运行到清屏函数程序就终止了怎么回事
不会是清屏函数的问题,你检查下代码,看看代码中定义数组没,这种情况极有可能是类似数组越界的内存问题造成的。