c的计算和输出的数字和字符串为什么经常出错(附录c语言常见错误)

您所在的位置:网站首页 在c语言中输出结果中有正方形是什么意思 c的计算和输出的数字和字符串为什么经常出错(附录c语言常见错误)

c的计算和输出的数字和字符串为什么经常出错(附录c语言常见错误)

2024-07-07 15:01| 来源: 网络整理| 查看: 265

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



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3