c语言代码运行结果不正确,为什么结果老是是零

供稿:hz-xin.com     日期:2025-01-14
下面是一段C语言的代码,逻辑,代码没问题,为什么运行的结果却不正确?

这个代码是存在问题的。
char
*p;
这个只定义了一个指针,并且没有进行初始化,此时不知道p指向内存中的何处,可能是任何地方!!
scanf("%c",
&p)
这样的话,指针p的值就被修改成了你输入的字符的值了。
for(;*p!='\0';)
这句话,进行
*p
操作的话,那么就会将指针p的值作为地址,取出该地址处的一个字节,
然后与
'\0'
进行比较
后面的程序就与前面的一样了。
这样的程序或许可能运行的起来,但是,你输入的字符的值最大是不会超过255的,
也就是说你
*p
的值就是你内存中存储在
0x00
~
0xff
之间的某个值,这个是不确定的。
你要想输入字符串的话,必须首先分配内存空间才行!!!
char
str[256]
=
{
0
};
scanf("%s",
&str[0]);
然后再判断str的长度
或者
char
*p
=
(char*)
malloc(256);
//
分配
scanf("%s",
p);

free(p);

//
释放

因为原因有二,其一:你的代码跟别人的代码不一样也会有很大差别,比如你的是a++,别人的是++a。
其二:编译器的不同也会出现这种情况,比如你用的编译器是VS2019,而别人用的则是DV C++

注意看下我标注的3点吧:

#include <stdio.h>
int main(void)
{
int fahr , lower, upper; /* fahr表示华氏度 */
float celsius; //1.需要和后面输出格式对应,%f对应的是float型

printf("enter lower:");
scanf("%d",&lower);
printf("enter upper");
scanf("%d",&upper);
printf("fahr celsius\n"); /* 显示表头 */
celsius=0;
/* 温度转换 */
for (fahr = lower ; fahr <= upper; fahr++){

celsius = (5.0/9.0) * (fahr - 32); //2. 5/9结果是0,因为是int型的计算
printf("%d %.2f\n", fahr, celsius); }
//3. 第一个应该是%d类型,第二个变量取下小数点后位数好看点。

return 0;
}

#include <stdio.h>
int main(void)
{
int fahr , lower, upper; /* fahr表示华氏度 */
double celsius; /* celsius表示摄氏度 */

printf("enter lower:");
scanf("%d",&lower);
printf("enter upper");
scanf("%d",&upper);
printf("fahr celsius\n"); /* 显示表头 */
celsius=0;
/* 温度转换 */
for (fahr = lower ; fahr <= upper; fahr++){

celsius = 5.0/9.0 * ((double)fahr - 32.0);
printf("%d %f\n", fahr, celsius); }

return 0;
}

你要干嘛,温度转换吗,那你为什么要读入两个,读一个转换成另一个不行吗,还有,你没事用循环干吗,转换个温度不用吧

数据类型有点问题,全都改为double,还有最后少一个“ } “

为什么这段C语言代码运行错误?
想要正常运行就把int main()改成void main()你用了int main,却没有返回一个int的变量,所以写void表示没有返回值 \/\/代码 include <stdio.h>void main(){ int i=0,j; char s1[20],t; while(scanf("%c",&t) && t!='\\n') { s1[i]=t; i++;} for(j=i-1;...

为什么有时候C语言编程调试得不出正确结果,退出后再进调试就可以得出正...
一个程序同样输入,同样处理流程,输出不同于预期的多种结果。除非程序运算涉及随机数。否则就说明这个程序不可控,是存在错误的。程序有错,不一定是代码写错了,也有可能是逻辑错误,条件判断有漏洞,地址访问越界。像你这种情况,很大可能有以下错误:1、变量没有给初值,就直接参与循环运算,变量初值为...

红色字是我编的代码,为什么我运行不出正确结果呀?结果出来没有从高...
这个忘记啦,c语言中不是有冒泡法。。。共三种方法来排序的么!兄弟你在看下书吧。没程序语言错误的话,估计是算法不对。你就把自己的算法一步步自己做下,不难的,也是提高自己得出结果,检验对错的好方法

该程序哪里出现错误第二个运行结果不对。
8 * 9 * 10;2,对其中后一个数值强制转换long类型,再运算 b = (long) 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10;3,对b赋值后,让b参与运算 b=1;b = b * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10;修改代码后,先编译(alt+c+c);再运行(alt+r+r)...

汇编语言编程时运行结果都是乱码而且死循环是怎么回事
肯定程序中有问题,跳转到了不该跳的地方了。编汇编程序,基本功要好。多练习。

VS2010中运行c语言,为什么输出结果不对
scanf()不要用逗号分割数字,用空格试试看。你这个C语言代码有问题,上面还有C++代码和win函数。建议把源代码文件后缀改为.c再打开,把上面无关的代码清掉,这样才是纯C语言代码。

初学C语言,请大家帮我看看这个问题,输出结果不对啊
结果是正确的,有几个要点:1 、像类似 a=b=c 的赋值语句是从右侧往左进行的,即先c赋值给b,b再赋值给a 2 、== 表示判断时候相等,不是赋值 3 、printf函数格式化参数的判别顺序是从右向左 结合上面几点,打印结果说明如下:(1) 最右边的d 是因为你的printf的最后一个格式化串写错了(你...

c语言问题为啥没错误却运行结果与预计不相符
printf("\\t"); \/\/你确定你这里要的不是\\t而是 \\b?printf("%d",c[i]);\/\/ 最后这里看你的题目应该是%d输出,而不是%c } 以下是完整代码:include "stdio.h"include <math.h> int main(){ int k=0;int x, r,b[99],d[99],p,q;int m,n,j;int c[99],i,s;printf("...

C语言编程,输出结果有误?
因为else if(num>99999 && num<0)的()中的num>99999 && num<0是永远不可能为“真”的表达式,所以无论输入什么数据都不会执行。根据疑问1的表述,这一句应该写成else if(num>99999 || num<0)可能才对。疑问2要对输入和这个if分支重新构架,改如下——或 后者较好。

c语言运行程序结果出现类似中文的乱码
我的运行没有问题啊,由此可见不是程序问题,解决方法1: 这个问题是因为语言设置不正确。如果想在AppWizard生成的工程文件中使用中文,在在MFC AppWizard的第1步中选择中文资源,选择Chinese(P.R.C),如果你在语言列表中没有找到有关中文的选项,说明你的VC++的中文支持模块没有安装。此时,应退出VC++...