一段C语言代码不知道错哪儿了,请高手指教

如题所述

程序中的错误,按照其产生的原因和引起的后果,通常可以分为三种类型:即语法错误、编译运行错误和逻辑错误。


一、语法错误


所谓“语法错误”是指由于违反了语言有关语句形式或使用规则而产生的错误。


比如错误地使用了关键字、遗漏了某些必需的标点符号、分支语句或循环语句不完整或不匹配等都会导致语法错误。


对于语法错误,在 VB ä¸­å¯ä»¥é€šè¿‡è®¾ç½®â€œè‡ªåŠ¨è¯­æ³•æ£€æµ‹â€åŠŸèƒ½æ¥å‘现。设置“自动语法检测”功能的方法是执行菜单命令:工具︱选项, â€œç¼–辑器”选项卡,然后再选中“自动语法检测”选项即可。


二、编译运行错误


程序运行时,当试图执行一个不能执行的操作时,会产生编译运行错误(也称运行时错误或实时错误),比如引用一个不存在的对象、进行除数为零的除法运算等都会产生运行时错误。


编译错误,一般是语法有问题,程序在编译是就产生错误不能编译成目标文件,比如包名或内部类名写错误等等。


运行错误,就是程序通过编译,却在运行时出错,一般是逻辑上的问题,比如数组越界,空指针等等。


比较常见的运行时错误是在做除法运算时所产生的“除数为零”错误。如下列 VB ä»£ç ï¼š


Dim a As Double, b As Double, Result As Double
a = 100
b = 0
Result = a / b


该程序在语法上并没有错误,但是由于除数为 0 (b = 0),程序运行中,当执行到语句“Result = a / b”时, å°±ä¼šäº§ç”Ÿä¸€ä¸ªâ€œå®žæ—¶é”™è¯¯â€ï¼Œç³»ç»Ÿä¸­æ­¢ç¨‹åºè¿è¡Œçš„同时将弹出错误信息提示框。


三、逻辑错误


所谓“逻辑错误”是指程序运行得到的实际结果和预期结果(正确结果)不一致。“逻辑错误”通常是由于错误的算法设计而引起的。


对于“逻辑错误”,系统通常无法自动检测,只能通过验证结果的正确性来判断是否存在逻辑错误。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-11-07
代码在哪?

...但是有错误,我不知错哪了,请高手指教,谢谢。
while(str1[i]==str2[i]){ i++;} if(20==i)return 0;else if(str1[i]>str2[i])return -1;else return 1;} 随手写的,没有运行你看一下 呵呵,虽然运行没有问题了,但是你的判断却有根本问题,假如现在str1与str2的第一个字符相等,你的判断就是str1与str2相等,<,>情况相同,...

C语言程序找错!高手都进来看下!
错了,应该是:fseek(fp,offset,SEEK_SET);要区分大小写 void delet()里面也一样 fseek(fp,offset1,seek_set);要写成大写才对 上面这些改完之后就可以编译通过了……楼主编程基础还不扎实哦 C语言是区分大小写的 另外,文件读写记得要fscanf fprintf 不要和标准输入输出搞混了 ...

C语言编程,请高手指教哪有问题。为什么输出的只有第一个字母的对应字母...
这个写法肯定 不对 if (65<a&&a<90)这样才可以 include <stdio.h> main(){ char a[6];int i;printf("input data:");for(i=0;i<5;i++)scanf("%c",&a[i]);printf("%s\\n",a);for(i=0;i<5;i++){ if(a[i]>='a'&&a[i]<='z')a[i]='z'-a[i]+'a';if(a[i...

一段C语言代码不知道错哪儿了,请高手指教
编译错误,一般是语法有问题,程序在编译是就产生错误不能编译成目标文件,比如包名或内部类名写错误等等。运行错误,就是程序通过编译,却在运行时出错,一般是逻辑上的问题,比如数组越界,空指针等等。比较常见的运行时错误是在做除法运算时所产生的“除数为零”错误。如下列 VB 代码:Dim a As Doubl...

请高手帮忙修改下C语言代码的错误 有截图!!! 感激不敬
include <stdlib.h> typedef struct BiTNode\/\/定义结构体 { char data;struct BiTNode *lchild,*rchild;}BiTree;void CreateBiTree(BiTree *T) \/\/前序创建树 { char ch;scanf("%c",&ch);if(ch==' ') T=NULL;else { T=(struct BiTNode *)malloc(sizeof(struct BiTNode));T->data=...

C语言的一道题 不知道哪里错了 请高手指教一下
puts()函数接受一个const char*类型的参数,如果成功就返回一个非负数,否则就返回EOF 并且,这两个函数都不做边界检查。自己写这两个函数时应该实现这几点,所以原程序修改如下:\/\/--- include <stdio.h> char *mygets(char *buf){ int i;char ch;if (feof(stdin)) return NULL;for (i =...

C语言高手求指教,题目是不用POW函数求X的N次方,下面是我的程序,错哪...
c99标准规定:所有的变量定义或者函数声明必须放在其他的语句之前,所以int y;int s=1;都要放在第一个printf语句之前;另外,x=x*s要改为s=s*x;printf("The calculation is %d"\\n,x);应改为:printf("The calculation is %d"\\n,s);...

请问代码哪里错了,为什么运行后达不到预期结果?请高手指教.
你程序中 printf("你想继续么,(Y\/N)!\\n");scanf(" %c ", &ch);的%c和"之间有空格。

C语言编程问题救教,多谢指点
一共有两个错误的地方:(1)area应该改成Area,C严格区分大小写;(2)print应该改成printf,C语言中输出函数应该是printf.

C语言问题。程序有问题。请高手指教。想如果不是7777 就一直可以 从 E...
float a=0.0;初始化下变量a,另外大括号位置不对,这样就可以了。for(;a!=7777;){ printf("Enter a number: ");scanf("%f",&a);if(a>=0){ printf("Square= %f\\n",a*a);printf("Square root= %f\\n",sqrt(a));i++;}

相似回答