c语言运行中断如何看哪里错误

c语言运行中断如何看哪里错误,第1张

首先,编程错误有逻辑错误和语答族法错误,不同错误的顷郑查看方式不同。

语法错误在在程序编译时编译器会报错,编译不能通过,清乎弊此类错误如:变量使用时尚未定义,符号错误等等。可以根据编译器的提示查看错误。

而逻辑错误主要是程序在逻辑上出现问题,此类错误编译能通过,但是程序运行起来未必会得到所期望得到的结果。如:计算1到100所有数字的和,在写for循环时错写成for(i=1i<100i++)这样100就没有加进去了,这就是逻辑错误。逻辑错误的查找通常采用调试的方式。比如,在Visual Studio C++中,你可以在运行结果不正确的代码段中设置断点,调试运行(F5),单步执行程序,观察执行过程中变量的值,直至找到出错的地方。

这段c语言的程序实现传递结构变量给子函数,但是出错在于:结构变量初始化时出错:结构指针未指向一有效位置即赋值,需要在此之前给它一个可用的地唤猜址(在main函数的开昌顷头添加2句即可:struct student stug

stu=&stug;

修改后的代码如下,总共有30行:

#include<stdio.h>

struct object{

float Chinese float Math

float English}obj

struct student{

int numchar*name

struct object obj

} *stu

int main (void){

void print(struct student *p)

struct student stug

/*struct student stu={8, "JJ Lin", {98. 5, 90.0,95. 5}}*/

stu=&stug

/*结构的指针使用前要赋值*/

stu->num=8

stu->name="JJ Lin"

stu->obj.Chinese=90

stu->obj.English=90

stu->obj.Math=90

print(stu)/*函和迅型数调用结构体变量做形参*/

return 0

}

void print (struct student *p){

printf ("'num:%d'\n", (*p). num)

printf ("'name:%s'\n", (*p). name)

printf ("Chinese score :%.1lf'\n", (*p).obj. Chinese)

printf (" 'Math score:%.1f'\n", p->obj. Math)

printf ("English score :%.1f'\n" , p->obj. English)

}

我不会C++,我把你的代码修改了一下。

运行效果如下:

下面是C语言版的代码,我添加了一个遍历函数,可以把输入的内容打印喊氏出来。

可以把它和你原弊巧来的代码对比一下。

if(!m) cout<<"创建失郑卜散败"return ERROR

这一句导致你的程序直接退出,因为从语法上讲,if只对它后面的第一个语句或语句块起作用,

对第二个句return ERROR不起任何作用,导致程序直接return,退出。

其他语法上的问题,你多多参考其他资料吧,对我来说,C语言太不好用了。

#include<malloc.h>

#include<stdio.h>

#include<stdlib.h>

#include<stdio.h>

/*#include<string.h>*/

/*#include<iostream>*/

/*using namespace std*/

#define length    100

#define OK        1

#define ERROR     0

#define OVERFLOW  26547

extern char *strcpy(char* dest, const char *src)

int strcmp ( const char * str1, const char * str2 )

void clearKeyboardBuffer() {

    char ch

    while ((ch = getchar() != '\n') &&(ch != EOF))

}

typedef int status

typedef struct city

{

 char   cityname[10]

 int      x

 int      y

 struct   city *next

}city,*chengshi

status initcitylist(chengshi c)

{

   strcpy(c->cityname,"kong")

/*c->cityname="kong"  error*/

   c->x=0

   c->y=2

   c->next=NULL

   return OK

}

status scanfcitylist(chengshi c)

{

printf("city name:\n")

   scanf("%s",c->cityname)

    clearKeyboardBuffer()

/*   while(c->cityname!="over")*/

while (strcmp(c->cityname,"over") != 0)

   {

    printf("x:\n")

    scanf("%d",&c->x)

    clearKeyboardBuffer()

    printf("y:\n")

    scanf("%d",&c->y)

    clearKeyboardBuffer()

    city *m=(city*)malloc(sizeof(city))

    if(!m)

    {

    printf("创建失败")return ERROR  //you wrong here

    }

    strcpy(m->cityname,c->cityname)

    m->x=c->x

    m->y=c->y

    m->next=c->next

    c->next=m

    printf("city name:\n")

    scanf("%s",c->cityname)

    clearKeyboardBuffer()

   }

    return OK

}

int tranverse_list(chengshi c)

{

city *b

b=c

if (b->next != NULL)

    {

    b=b->next

    tranverse_list(b)

    printf ("city name is: %s\n",b->cityname)

    printf ("x is: %d\n",b->x)

    printf ("y is: %d\n",b->y)

}

return 0

}

int main()

{   chengshi c

c=(city *)malloc(sizeof(city))

initcitylist(c)

printf ("create linear table\n")

scanfcitylist(c)

tranverse_list(c)

 return OK

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12556368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存