第一点你要明白的是,如果你的编译的环境是没有问题的话,那么结果就只能是你的内容不能被被编译器正确的理解。
举个例子
如果你同时接收字符和数字
如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 — 枚举类型语法错误

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐