第一点你要明白的是,如果你的编译的环境是没有问题的话,那么结果就只能是你的内容不能被被编译器正确的理解。 举个例子 如果你同时接收字符和数字 如scanf("%d%c%d",&a,&ch,&b); 假设你输入 7:54 如果你要输出b,那么后面的54一定是乱码 为什么呢?其实很简单,系统不知道你字符串到底在哪里停留,也不知道后面这个到底是不是字符串的一部分,那么它就会默认你输入的后面一堆都是字符串,然后你要输出b的时候,那么就乱码了。 你需要加一些东西,让他明白这个是字符串,这个是后面的数字 在我看来比较好的方法 就是把几个分开输入,或者把这一整个都存到一个数组里面。然后运用就可以了 如 char c[7]; scanf("%s",c); 如果说你强行要混合输入的话,那么系统不确定下一个输入是什么 那么只能先接收字符,存成字符串,然后,根据字符串内容,判断类型如果是数字,再调用函数转成整型 这里补充一点c = getchar(); char=getchar之类的在一些编译器是用不了的。他直接都不让你通过编译;
如果是字符串输出出现乱码的话,一般来说都是因为字符串结尾并没有结尾符’\0’。还是那就话,它不知道在那里结束,就把那些不必要的也加入进来了 如果是计算出现-839183912839之类奇怪的数字的可能是使用了 未初始化的局部变量 如 int a,b,num; printf(“请输入两个数a和b:%d,%d\n”,a,b) 你如果没有先初始化的话,是没办法输出的,系统也不知道要给你输出什么。干脆就直接输出系统给它的内存地址。
还有可能是这种 scanf("%d,%d",&a,&b); 这样你输入的数字其实是有问题的,应该要去掉逗号的; 这里补充一点;如果你发现输出出错的话,你可以试着在头和尾的地方再次输出,去判断 它在什么时候就已经出错了。然后再修改
一般来说字符串的输入要放在数字输入之前。(再没有\0的情况下) 如 scanf("%d",&a); scanf("%c",&c); 如果像这种情况的话,你的字符串是不能被接受的,简单一点的改变就是这样 scanf("%c",&c); scanf("%d",&a); 让字符串在前面先被接受,那么就ok了 或者说你可以这样做:scanf("%d “,&a);在d的后面加上几个空格。那么在输入字符串的时候就有明显的分界线,那么就清楚了 (你输入的时候要和空格一样多的。) 还有可能就是小数保留的问题了 正常来说的话保留一位小数的话是这样的 如 printf(”%.1f\n", b*1.8); .1f 两位的话就是.2f…以此类推。。
在看一个例子 printf(“ %f“,3/445);
猜猜看结果是多少?
结果是0.00,为什么呢?因为3/4是int 型的,她的值就是0 ;所以要前面加一个float型,
在看一个例子 int a,b=1; for(a=1;a<100;a++) { b=b*a; } print("%d",b); 猜猜结果是多少? 当然还是0,很简单的道理,这个答案已经超出了int 的范围,如果你以int的方式来输出,那么就只能当然只能是0了 所以你要清楚,每一种数据的范围在那里 如:
实际大部分错误很大可能都是代码的书写错误和不规范。多留心去多看看吧,不要出错了就放弃了 c语言常见错误 如下 1: Ambiguous operators need parentheses — 不明确的运算需要用括号括起 2: Ambiguous symbol xxx — 不明确的符号 3: Argument list syntax error — 参数表语法错误 4: Array bounds missing — 丢失数组界限符 5: Array size toolarge — 数组尺寸太大 6: Bad character in paramenters — 参数中有不适当的字符 7: Bad file name format in include directive — 包含命令中文件名格式不正确 8: Bad ifdef directive synatax — 编译预处理ifdef有语法错 9: Bad undef directive syntax — 编译预处理undef有语法错 10: Bit field too large — 位字段太长 11: Call of non-function — 调用未定义的函数 12: Call to function with no prototype — 调用函数时没有函数的说明 13: Cannot modify a const object — 不允许修改常量对象 14: Case outside of switch — 漏掉了case 语句 15: Case syntax error — Case 语法错误 16: Code has no effect — 代码不可能执行到 17: Compound statement missing{ — 分程序漏掉"{" 18: Conflicting type modifiers — 不明确的类型说明符 19: Constant expression required — 要求常量表达式 20: Constant out of range in comparison — 在比较中常量超出范围 21: Conversion may lose significant digits — 转换时会丢失意义的数字 22: Conversion of near pointer not allowed — 不允许转换近指针 23: Could not find file xxx — 找不到XXX文件 24: Declaration missing ; — 说明缺少";" 25: Declaration syntax error — 说明中出现语法错误 26: Default outside of switch — Default 出现在switch语句之外 27: Define directive needs an identifier — 定义编译预处理需要标识符 28: Division by zero — 用零作除数 29: Do statement must have while — Do-while语句中缺少while部分 30: Enum syntax error — 枚举类型语法错误