麻烦看一下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("请输入...
章段八正: 程序设计的很重要一点就是要保证程序的稳定性,运行时崩溃就是稳定性不够,一般比较常见的就是数据类型不符、内存泄漏等错误造成的.还有,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 要是不行就最好重装一下系统了..