麻烦看一下C语言程序输入时崩溃的问题

作者&投稿:巫莎 (若有异议请与网页底部的电邮联系)
c语言,输入过后没有反应,麻烦帮忙看一下~

函数x里面的第二个for没有判断语句,会一直循环,所以程序没有反应

这段程序没有错误啊,输入一个数字,输出这个数的整数部分

测试结果:

请输入顶点数和边数
4 4
abcd
请输入邻接矩阵的关系,即哪个点和哪个点右边0 1
请输入邻接矩阵的关系,即哪个点和哪个点右边0 2
请输入邻接矩阵的关系,即哪个点和哪个点右边1 2
请输入邻接矩阵的关系,即哪个点和哪个点右边1 3
0 1 1 0
1 0 1 1
1 1 0 0
0 1 0 0


#include "stdio.h"
#include "stdlib.h"
#define Max_len 100

typedef struct MGraph
{
    char vArray[Max_len];         //存顶点编号
    int eArray[Max_len][Max_len]; //存点和边的关系
    int n;   //顶点数
    int e;   //边数
}MGraph;

void CreatGraph(MGraph *g)
{
    int i,j,k; //所有变量都放在这里定义

    printf("请输入顶点数和边数
");
    scanf("%d%d",&g->n,&g->e);

    getchar(); //增加这一句,用于吸收回车符

    //原代码for(int i=0;i<g->n;i++)
    for(i=0 ; i< g->n ; i++)
    {
        g->vArray[i]=getchar();
    }
    for(i=0;i<g->n;i++)
    {
        //原代码for(int j=0;j<g->n;j++)//数组初始化为0
        for(j=0;j<g->n;j++)//数组初始化为0
            g->eArray[i][j]=0;//邻接矩阵
    }
    for(i=0;i<g->e;i++)
    {
        printf("请输入邻接矩阵的关系,即哪个点和哪个点右边");
        scanf("%d%d",&j,&k);
        g->eArray[j][k]=1;
        g->eArray[k][j]=1;//无向图
    }
}

int main()  //原代码void main()
{
    int i,j;

    //用MGraph g,而不用指针MGraph *g,因为指针没有分配内存,
    //而MGraph g就能正常分配内存.
    MGraph g;
    CreatGraph(&g);
    for(i=0; i<g.n ;i++)
    {
        for(j=0; j<g.n ;j++)
        {
            printf("%d ",g.eArray[i][j]);
            if(j == (g.n-1))
            {
                printf("
");
            }
        }
    }

    //原代码
    /*
    MGraph *g=NULL;
    CreatGraph(g);
    for(i=0;i<g->n;i++)
        for(j=0;j<g->n;j++)
        {
            printf("%d ",g->eArray[i][j]);
            if(j==g->n-1)
                printf("
");
        }
    */

    return 0; //int main()需要返回值
}


MGraph *g=NULL;
这一句问题。你想去写入内存的是
NULL + 偏移地址
你的scanf相当于执行了这么一条指令:
*10100 = (你的输入)
。。。
或许在内核态不会崩溃(不用scanf),而是会直接蓝屏。。。


求一个C语言程序,急等……
1.#include"stdio.h"int main(){ int i,sum=0;for(i=1;i<=100;i++)sum+=i;printf("sum=%d",sum);return 0;} 2.#include<stdio.h> int main(){ int c,s;scanf("%d",&c);if(c==100)printf("A\\n");s=c\/10;switch(s){ case 0:case 1:case 2:case 3:case 4:case...

一个很简单的c语言程序题,帮忙看一下
1、错的很荒唐。把结尾的“)”改为“}”!应该明白什么意思吧?main(){char str[][10]={"China","Beijing"},*p=str;printf("%s\\n",p+10);}\/*就是这里,main()函数的结束符*\/ 2、你这个程序思路是正确的。p指向str第一个字符串的首地址,如果读取p的值,它会顺着p指向的地址向下读,...

c语言这个程序是怎么实现的,麻烦用文字解释一下。谢谢
大体思路就是占位,因为数字都是从0-9,所以给定一个数组bool digit_seen[10] = {false};初始值为0-9都没有占位 while(n>0){ digit = n % 10;\/\/获取个位数 if(digit_seen[digit])\/\/如果个位数已经被占位,则退出循环 break; digit_seen[digit] = true; n = n \/ 10...

可以帮忙运行一下c语言程序 吗?
scanf("%c",&temp2);if('Y'==temp2) \/\/删除链表 { delete_whole(head);printf("\\n成功删除整个链表\\n");} } \/\/创建一个空链表 LNode *creat_head(){ LNode *p;p=(Llist)malloc(sizeof(LNode));if(NULL==p)printf("内存申请失败!");else { p->next=NULL;} return(p);} ...

c语言的,帮忙看一下,很短,很简单,谢谢。
include <stdio.h> int main (){ char character; int a, b;printf("Enter a character:");scanf("%c",&character);printf("enter 2 integers separated by a space:");scanf("%d%d",&a,&b);printf("The letter entered was %c\\n", character);printf("Integers entered were %d and...

C语言:麻烦大家看下这个程序那有错,我跳了很久还是调不出来(在c++情况...
把你的这程序的题目发来看,因我不知道题目,其中有些错误改不了,只能表面改下,改动地方如下:include<stdio.h> define N 30 struct stu { int xh; \/\/少了分号 char xm[10];\/\/少了分号 float yy,sx,jsj,sum,avg; \/\/ 单精度是float,你写错了 };void pjf(stu b[],int n);\/\/ ...

C语言程序求助
判断规则:60分以下不及格输出“补考”,60-79分输出“合格”,80-100分输出“优秀”,负分数和100分以上显示“错误”。5.求学生成绩的最高分;6.并计算该班级学生的总分和平均成绩并显示,规则:负分数和100分以上显示“错误”的分数不计数总分及平均成绩计算中;程序结束界面输出。*\/#include "...

c语言看程序写结果?
答案是:7。被调函数sub是一个递归函数,有两处注意点:一、参数1这里传递的是实参x的地址,因此sub函数中a地址里的值改变,x的值也变。二、注意sub中if没有大括号,作用域仅限下一句代码,也就说*a+=k;这句代码是在if作用域之外的。无论if判读成不成立,*a+=k;都会执行。所以按照递归顺序...

c语言程序分析,麻烦会的亲解释一下,谢谢
所以incx都是输出x=1;incy输出为y=1 ,2,3,这个考静态变量和局部变量,静态变量static声明后变量在静态区在整合程序运行期间其值都存在,每次加一都是在原来基础上调用,二局部变量调运结束就释放,所以每次都会调运x=0,然后输出++x时其值为1 ...

我设计的这个C语言程序有点诡异,那位大神帮忙看一下?
必须按###才退出的问题是你的scanf函数要求把所有元素列表输入完了才能退出,但因为第三个元素是%d型,当你输入到第三个#时不匹配了,属于出错退出。改起来麻烦点,改如下,你对照看。struct guest *create(){ struct guest *head,*p;head=NULL;p=(struct guest *)malloc(LEN);printf("请输入...

清河县19765288541: C语言 程序能运行,但是有时运行中间会崩溃,一般因为什么?怎么解决? -
章段八正: 程序设计的很重要一点就是要保证程序的稳定性,运行时崩溃就是稳定性不够,一般比较常见的就是数据类型不符、内存泄漏等错误造成的.还有,C语言的稳定性上一般也是比较差的

清河县19765288541: c语言中 为什么有时候输入.就陷入死循环了??? -
章段八正: 那要看你输入的是什么,还有具体问题具体分析. 比如说有的时候让你输入除数,你输入了0.0是不能做除数的,而你的程序中又没有列出当用户输入0时,程序应该干什么,是应该报错呢,还是当做1处理呢.计算机不知道该怎么做,他只知...

清河县19765288541: 为什么c语言编程时会崩溃
章段八正: 那是你写的代码有问题,虽然能编译连接,但是运行时有错.举个很简单的例子如: int *p; *p = 5; 这两句代码没有语法错误,能编译连接通过,但是程序会崩溃.如果还有那种问题的话,仔细检查一下你的代码,不行就贴出来看看

清河县19765288541: 请大神看一下我写的c语言 怎么输入成绩时程序就崩溃 -
章段八正: 代码不完整,看不到输入语句, 推测应该是在 inputstudent() 这个函数中

清河县19765288541: 您好!我是c语言新手. 这是第一次输入hello.c的程序,输入结果为什么都是闪一下就没了?望高手指点,谢 -
章段八正: #include <stdio.h>int main() {printf("hello world\n");getchar() ; //等待输入一个回车再结束}你用的是windows开发工具,窗口在程序运行完就会自动关闭.

清河县19765288541: 用c语言写的一个小的查询系统,运行正常,就是输入时,闪一下就没了,没有显示,达不到我想要的效果,大家给我看一下问题出在了哪?
章段八正: 把你定义的 a b c前的0 去掉 然后运行遍 不推荐你这样写 建议用 switch case 如果你用的是VS系列的 头文件加上#include<stdlib.h>在最后加句system"pause" 或者其它输入语句便于观察结果

清河县19765288541: 为什么这个c语言会崩溃? -
章段八正: 你好,我用VS试过了,没有任何问题 所以应该是你编译器的问题,换一个编译器或重新下载试试~

清河县19765288541: 写了一个求和的C语言程序 运行时崩溃了?why? -
章段八正: scanf里的引号位置不对.

清河县19765288541: 为什么我的C语言程序会出现 程序已经停止工作呢?程序如下 -
章段八正: a的空间不足(它只能确保有1个字符的有效空间).

清河县19765288541: 我在多特网上下的C语言编程软件,在编译时总会出现“应用程序发生异常”的错误.哪位大虾帮我解决下!!! -
章段八正: 可能是系统问题.试试注册所有的DLL文件..运行 输入cmd 回车在命令提示符下输入 for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 要是不行就最好重装一下系统了..

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网