这一段代码究竟有什么问题啊

yang147896523 2013-03-09 11:21:57
#include <stdio.h>
void main(){
char c[4];
int a[4],temp;
int i,j;
printf("请输入一个五位数:");
scanf("%s",&c);
for(i=0;i<4;i++)
a[i]=c[i]-'0';
for(j=0;j<5-1;j++)
{
for (i=0;i<5-1-j;i++)
if (a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
printf("该数字整理后:");
for(i=0;i<5;i++)
printf("%d",a[i]);
}
这段代码运行后,系统出错,说什么遇到什么问题关闭。
...全文
331 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
DaiwjDev 2013-03-11
  • 打赏
  • 举报
回复
引用 16 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。 判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断,可将数组多声明一个元素,并设置数据读写断点在该多出元素对应的地址上。
赵老师的话......初学者好难实践
赵4老师 2013-03-11
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。 判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断,可将数组多声明一个元素,并设置数据读写断点在该多出元素对应的地址上。
Gu_Tamud 2013-03-10
  • 打赏
  • 举报
回复
scanf("%s",&c);
c本来就是地址,不用加&
Gu_Tamud 2013-03-10
  • 打赏
  • 举报
回复
scanf("%s",&c);
c本来就是地址,不用加&
HUANGFEIDIAN 2013-03-10
  • 打赏
  • 举报
回复
引用 7 楼 zhang20072844 的回复:
另外内存够用不要那么吝啬,多开点防止出问题。你要5位数,却开5个字节空间,\0就没地方放了,很容易出问题。
他只开了四个。。。。
ForestDB 2013-03-10
  • 打赏
  • 举报
回复
刚学就正经看书,0结尾的字符串,书上肯定有讲。
AndyZhang 2013-03-10
  • 打赏
  • 举报
回复
另外内存够用不要那么吝啬,多开点防止出问题。你要5位数,却开5个字节空间,\0就没地方放了,很容易出问题。
mwang08 2013-03-10
  • 打赏
  • 举报
回复
嗯,开辟的空间不够,字符串末尾的'\0'没考虑
AndyZhang 2013-03-10
  • 打赏
  • 举报
回复
%s 还&c,直接c就行啦
admistrator 2013-03-10
  • 打赏
  • 举报
回复
亲,楼上的都正解
HUANGFEIDIAN 2013-03-10
  • 打赏
  • 举报
回复
引用 2 楼 yang147896523 的回复:
引用 1 楼 Soiol 的回复:char c[4]; int a[4],temp; int i,j; printf("请输入一个五位数:"); scanf("%s",&amp;c); for(i=0;i<4;i++) a[i]=c[i]-'0'; 两段红色部分看出楼主不适合做程序员 我才刚学,能不能说一下是怎么错误
这个五位数以字符存的话需要六个字节,所以你刚开始申请的四个字节是不够的。 后面我就懒得管你写的是什么了
DaiwjDev 2013-03-10
  • 打赏
  • 举报
回复
话说楼主有没有解决问题? 楼主还是先好好看书吧,然后照书上敲代码,在努力自己独自桥一边,好好理解没一行的用意
FridayRU 2013-03-10
  • 打赏
  • 举报
回复
还有,以后有花括号{}的时候还是做一下缩进吧。。不然括号嵌套很难看的。。 for(j=0;j<5-1;j++) { for (i=0;i<5-1-j;i++) if (a[i]<a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } }
yang147896523 2013-03-09
  • 打赏
  • 举报
回复

这个问题怎么解决
yang147896523 2013-03-09
  • 打赏
  • 举报
回复

每次运行都是这样的问题,怎么解决?
yang147896523 2013-03-09
  • 打赏
  • 举报
回复
引用 1 楼 Soiol 的回复:
char c[4]; int a[4],temp; int i,j; printf("请输入一个五位数:"); scanf("%s",&c); for(i=0;i<4;i++) a[i]=c[i]-'0'; 两段红色部分看出楼主不适合做程序员
我才刚学,能不能说一下是怎么错误
DaiwjDev 2013-03-09
  • 打赏
  • 举报
回复
char c[4]; int a[4],temp; int i,j; printf("请输入一个五位数:"); scanf("%s",&c); for(i=0;i<4;i++) a[i]=c[i]-'0'; 两段红色部分看出楼主不适合做程序员

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧