c语言蠢萌新。。。救救孩子呀

平海ovo 2018-11-07 08:11:04
#include <stdio.h>
int *p;
void P(int *x)
{
int m,n,t;
printf(" ");
scanf("%d%d",&m,&n);



t=*(x+m);
*(x+m)=*(x+n);
*(x+n)=t;

}





void R(int *x,int y)
{
for(int i=0;i<y/2;i++)
*(x+i)=*(x-y-i);

}






void D(int *x,int y)
{
int t;
printf(" ");
scanf("%d",&t);
for(int i=0;i<y;i++)
*(x+i)=*(x+i)/t;
}





void M(int *x,int y)
{
int t;
printf(" ");
scanf("%d",&t);
for(int i=0;i<y;i++)
*(x+i)=*(x+i)*t;
}




void S(int *x,int y)
{
int t;
printf(" ");
scanf("%d",&t);
for(int i=0;i<y;i++)
*(x+i)=*(x+i)+t;
}


void caozuo(int *x,int y)
{
char a;
scanf("%c",&a);
switch(a)
{
case 'S':S(x,y);break;
case 'M':M(x,y);break;
case 'D':D(x,y);break;
case 'R':R(x,y);break;
case 'P':P(x);break;
}

}


int main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("\n");

for(int i=0;i<n;i++)
scanf("%d",p+n);
printf("\n");
for(int j=0;j<m;j++)
caozuo(p,n);
for(int l=0;l<n;l++)
printf("%d ",p+l);
return 0;



}

日常oj崩溃。。。。 提示runtime error. 一定是指针用错了 怎么改呢??qaq
...全文
605 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
_ZGq 2019-01-22
  • 打赏
  • 举报
回复
全局变量默认初始值为0,所以p一开始其实就是0了,不存在野指针的问题。
xiaojia88882004 2019-01-22
  • 打赏
  • 举报
回复
再初试编程的时候要对命令,规则有初步的了解。
zhouqunhai 2019-01-09
  • 打赏
  • 举报
回复
1楼扯淡吧,怎么不行
lin5161678 2019-01-09
  • 打赏
  • 举报
回复
引用 1 楼 niiiloc 的回复:
我发现好多人学了很久就不肯先先学会调试
scanf %d%d 这种怎么输入?至少得加个空格吧
%d%d 正常输入 空格回车tab都能分割输入
甚至 你可以写123-123
%d%d都能正确的读取出 123 和 -123
是你自己不熟悉
冷风1023 2019-01-09
  • 打赏
  • 举报
回复
int main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("\n");

for(int i=0;i<n;i++)
scanf("%d",p+n);
printf("\n");
for(int j=0;j<m;j++)
caozuo(p,n);//这里的p是值传递,进去前什么样后面还是什么样,前面没有初始化
for(int l=0;l<n;l++)
printf("%d ",p+l);//这里的p是不确定的,出现问题正常。
return 0;

//里函数都不用看了

穿林打叶丶 2019-01-08
  • 打赏
  • 举报
回复
扫了一眼看到最后的printf 后面的指针地址没有*
zhouqunhai 2018-11-19
  • 打赏
  • 举报
回复
int *p=null;
微心 2018-11-19
  • 打赏
  • 举报
回复
水平不高,勿怪,*p没赋值无法调用,在自创函数中。新出现的函数中的指针没有定义,无法调用。从头到尾没有任何输出(除了空格),执行为空。没有任何依据判断
牛奶土豆 2018-11-18
  • 打赏
  • 举报
回复
目标是啥?调试很重要,学会使用gdb,至少学会VS IDE的断点调试吧
只此冒泡君 2018-11-10
  • 打赏
  • 举报
回复
卖萌可耻
hgreminem 2018-11-09
  • 打赏
  • 举报
回复
要学会单步调试,学会看崩溃时的堆栈信息
平海ovo 2018-11-08
  • 打赏
  • 举报
回复
最后那个pringf的确错了。改过来貌似还有错误
自信男孩 2018-11-08
  • 打赏
  • 举报
回复
引用 1 楼 colinfang2006 的回复:
我发现好多人学了很久就不肯先先学会调试
scanf %d%d 这种怎么输入?至少得加个空格吧

不加也没问题的
赵4老师 2018-11-08
  • 打赏
  • 举报
回复
引用 1 楼 colinfang2006 的回复:
我发现好多人学了很久就不肯先先学会调试
scanf %d%d 这种怎么输入?至少得加个空格吧

super_admi 2018-11-08
  • 打赏
  • 举报
回复
你对自己描述的三个字,我只看到第一个。
636f6c696e 2018-11-08
  • 打赏
  • 举报
回复
我发现好多人学了很久就不肯先先学会调试 scanf %d%d 这种怎么输入?至少得加个空格吧
自信男孩 2018-11-08
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int *p;
void P(int *x)
{
int m,n,t;
printf(" ");
scanf("%d%d",&m,&n);

t=*(x+m);
*(x+m)=*(x+n);
*(x+n)=t;

}
void R(int *x,int y)
{
for(int i=0;i<y/2;i++)
*(x+i)=*(x-y-i);

}

void D(int *x,int y)
{
int t;
printf(" ");
scanf("%d",&t);
for(int i=0;i<y;i++)
*(x+i)=*(x+i)/t;
}

void M(int *x,int y)
{
int t;
printf(" ");
scanf("%d",&t);
for(int i=0;i<y;i++)
*(x+i)=*(x+i)*t;
}

void S(int *x,int y)
{
int t;
printf(" ");
scanf("%d",&t);
for(int i=0;i<y;i++)
*(x+i)=*(x+i)+t;
}

void caozuo(int *x,int y)
{
char a;
scanf("%c",&a);
switch(a)
{
case 'S':S(x,y);break;
case 'M':M(x,y);break;
case 'D':D(x,y);break;
case 'R':R(x,y);break;
case 'P':P(x);break;
}

}


int main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("\n");

p = (int *)malloc(sizeof(int) * n);
if (!p)
return -1;
for(int i=0;i<n;i++)
scanf("%d",p+n);
getchar();
printf("\n");
for(int j=0;j<m;j++)
caozuo(p,n);
for(int l=0;l<n;l++)
printf("%d ", *(p+l));


free(p);

return 0;
}

参考一下吧

使用NULL指针导致的段错误
notepad--v3.4 windows Notepad--v3.4.0-plugin-Installer.exe 是win10下面的插件版安装包,会关联右键菜单等。 Notepad--v3.4.0-win10-portable.zip 是绿色免安装版本,解压即用,不会关联右键菜单注册表。 Ndd-quick-v3.3.0-win10-single-portable.zip 是单文件绿色免安装版,只包含皮肤和vc依赖库,不含插件、不含文件对比,主推轻量级、快速反应。适合只需要纯粹、轻快级,文本编辑器的用户。不定期发布。 MacOS 版本 Notepad--v3.4.0-mac_x64_12.3.dmg 是macos 12.x 及以后的版本。 Notepad--v3.4.0-mac_arm64_12.3.dmg 是macos 12.x 及以后 arm64 m1/m2芯片 的版本。第一次安装时,需要在设置偏好里面,放开苹果的安装限制,才能正常识别,请自行放开设置一下。 如果还是有问题,参考帖子:#I8JTJN:macOS Sonoma 14.1.1安装提示已损坏:macOS Sonoma 14.1.1安装提示已损坏 uos com.hmja.notepad_3.4.0.0_amd64.deb 是x64 cpu架构的uos系统对应的ndd版本。 其余系统版本后续会发布。 3.4 修改如下: 1 支持文件标签拖入拖出到新窗口的效果。 2 windows下修改快捷键放开。 3 按行号切分大文件。 4 大文件打开时,在文件夹查找所在目录,macos下可能会崩溃问题。 5 目录右键增加删除文件、文件夹功能。 6 补充深色主题下rust语法高亮; lisp 语法失效问题。 7 linux下信号打开文件,不拿锁,打开文件在消息队列中去做。

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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