处有未经处理的异常: 0xC0000005: 写入位置 0xCCCCCCCC 时发生访问冲突。求大家帮忙。

liuth2017 2017-08-22 05:20:52
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
void f1(int x);
int a;
scanf("%d",&a);
f1(a);

system("pause");
return 0;

}

void f1(int x)
{
int i;
for(i=2;i<x/2;i++)
{
if(x%i==0)
printf("x is not prime");
}
printf("x is a prime");

}
0x51C4B49C (msvcr110d.dll) (ConsoleApplication1.exe 中)处的第一机会异常: 0xC0000005: 写入位置 0xCCCCCCCC 时发生访问冲突。
0x51C4B49C (msvcr110d.dll) (ConsoleApplication1.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0xCCCCCCCC 时发生访问冲突。
还有一个
#include<stdio.h>
#include<stdlib.h>


int t,k;
int main(void)
{
int f1(int x,int y);
int f2(int x,int y);
int m=15,n=39;
printf("1\n");
printf("%d\n",f1(m,n));
printf("2\n");
printf("%d\n",f2(m,n));
system("pause");
return 0;

}

int f1(int x,int y)
{
int i,z;
z=x<y?x:y;
for(i=2;i<=z;i++);
{
if((x%i==0)&&(y%i==0))
t=i;
}
return (t);

}
int f2(int x,int y)
{
int i,z;
z=x>y?x:y;
for(i=z;i<=x*y;i++)
{
if((i%x==0)&&(i%y==0))
k=i;
break;
}
return k;
}
这个结果是程序“[70592] ConsoleApplication1.exe”已退出,返回值为 -1073741510 (0xc000013a)。
这两个跟我想要的结果都不同,求解答。
...全文
1554 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-23
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
「已注销」 2017-08-23
  • 打赏
  • 举报
回复
这个代码是没有任何异常问题的,但就是逻辑处理上有点问题,不管是不是素数都会打印:x is a prime
#include<stdio.h>
#include<stdlib.h>

int main(void)
{   
    void f1(int x);
    int a;
    scanf("%d",&a);
    f1(a);

    system("pause");
    return 0;

}

void f1(int x)
{
    int i;
    for(i=2;i<x/2;i++)
    {
        if(x%i==0)
        {
            printf("x is not prime");
            return;
        }
    }
    printf("x is a prime");
}
liuth2017 2017-08-22
  • 打赏
  • 举报
回复
引用 1 楼 sspubodyboy 的回复:
1.编译环境和运行环境需要说明一下,最好可以将出错的详细内容提出来。 试了第一个程序,没有什么问题,编译环境:vs2013,运行环境:win10 2. 小建议:提问问题的时候,可以将代码用代码符框起来,这样别人读代码会比较方便,直接copy进行会给帮助你的人带来很大负担。形式如下:

#include<iostream>
using namespace std;
int main(){
    cout <<"HelloWord"<<endl;
}
谢谢提醒,我刚刚也学会添加代码块的方法了,以后我会注意。
自信男孩 2017-08-22
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

    int f1(int x,int y);
    int f2(int x,int y);

int t,k;
int main(void)
{
    int m=15,n=39;
    printf("1\n");
    printf("%d\n",f1(m,n));
    printf("2\n");
    printf("%d\n",f2(m,n));
    system("pause");
    return 0;

}

int f1(int x,int y)
{
    int i,z;
    z = x < y ? x : y;
    for(i=2;i<=z;i++)    /* delete ; */
    {
        if((x%i==0)&&(y%i==0))
            t = i;
    }
    return (t);

}
int f2(int x,int y)
{
    int i,z;
    z = x>y?x:y;
    for(i=z;i<=x*y;i++)
    {
        if((i%x==0)&&(i%y==0)) { /* add { }*/
            k = i;
            break;
        }
    }
    return k;
}
代码有两处问题:f1函数里,for循环后加了分号”;“,f2函数里,处理逻辑有问题; 修改之后的代码,详见上面的code
自信男孩 2017-08-22
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

void f1(int x);
int main(void)
{
    int a;
    scanf("%d",&a);
    f1(a);

    system("pause");
    return 0;
}

void f1(int x)
{
    int i;
    for(i=2;i<x/2;i++)
    {
        if(x%i==0) {
            printf("%d is not prime", x);
            break;
        }
    }

    if (i >= x/2)
        printf("%d is a prime\n", x);

}
这个程序不会出现你提出的error,但是程序本身有逻辑错误; 改过之后的逻辑,详见上面的代码;
大米粥哥哥 2017-08-22
  • 打赏
  • 举报
回复
编译了 没问题呀
KaiZeek 2017-08-22
  • 打赏
  • 举报
回复
1.编译环境和运行环境需要说明一下,最好可以将出错的详细内容提出来。 试了第一个程序,没有什么问题,编译环境:vs2013,运行环境:win10 2. 小建议:提问问题的时候,可以将代码用代码符框起来,这样别人读代码会比较方便,直接copy进行会给帮助你的人带来很大负担。形式如下:

#include<iostream>
using namespace std;
int main(){
    cout <<"HelloWord"<<endl;
}

33,311

社区成员

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

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