C语言这个程序的输出结果为什么是1而不是11?

作者&投稿:金垂 (若有异议请与网页底部的电邮联系)
C语言:请问最终输出为什么不是1?~

i最后还是认为是无符号的类型啊
下面这样写就可以
{
unsigned char i=255;
char j;
unsigned long b;
printf("%d
",i);
j=(char)i;
b=j*j;
printf("%d
",b);
}

估计是编译器问题,我这里运行是正确的

#include
void main()
{
int a,i=3;
scanf("%d",&a);
while(a!=100&&i>0)
{
if (a>100)
{
printf("gao");
}
else
{
printf("di");
}
scanf("%d",&a);
i--;
}
if(a==100)
{
printf("ok");
}
else
{
printf("tt");
}
}

因为在fun函数的修改的s指针所指向的变量为fun中局部变量,而并不修改main函数中s指针指向的变量,这个关键在于fun函数的参数s和main函数中的s不要混淆。修改如下容易理解:
void fun(int *p1,int *p2,int *s)
{
s=(int*)malloc(sizeof(int));

*s=*p1+(*p2++);
printf("*s = %d, in fun\n", *s);
}

main()
{
int a[2]={1,2},b[2]={10,20},*s=a;
printf("*s = %d\n", *s);

fun(a,b,s);
//printf("*s = %d\n", *s);

printf("%d\n",*s);
return 0;
}

在fun函数最后*s是11,但是fun函数中的s和main函数中的s不是同一个指针。

fun中的s指向了新malloc的内存,而main中的s还是指向了a,所以是1.


编写C语言程序输出以下图案 ### *** ### ** #,要有详细过程,悬赏秒结...
这个程序非常简单。它包括一个main函数,该函数使用printf函数来输出指定的图案。printf函数是C语言中用于输出文本的函数。在上面的程序中,我们调用printf函数并将所需的文本作为参数传递。要输出多个字符串,只需在每个字符串之间添加适当的空格或其他分隔符即可。在本例中,我们将所有字符串组合成一个大字...

C语言如何编写程序,输出从小到大的数?
C语言程序如下:include <stdio.h> int main(){ int a,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a > b){ t = a;a = b;b = t;} if(a > c){ t = a;a = c;c = t;} if(b > c){ t = b;b = c;c = t;} printf("从小到大的顺序...

这个程序输出的结果是?C语言
i1=%d ,i2=%d 用%%表示输出一个 d", 123会输出:%123 printf会一个个来处理格式串“%%%d"中的格式符,它从第一个%开始看,发现%%是连续的两个,输出一个%,剩下的是%d, 表示输出一个十进制表示的整数

c语言的程序是怎样在屏幕上输出的?
int main(){ printf("Hello World!\\n");}

C语言函数问题:请问这个程序的输出答案是什么,需要解释为什么答案是这 ...
1.静态局部变量在程序编译时被首次初始化,即以后的函数调用不再进行初始化,而是使用上次调用结束时的值。静态量数据有单独的存储区。2.全局变量在整个函数有效,但是当某个局部变量与全局变量同名时,在该局部变量所在域内,只有该局部变量有效,与其同名的全局变量无效。在所述程序中,全局变量i在for的...

C语言中如何编写这个程序:输出四个整数中第二大的数?
int main(){ int a[5];int max1=0;int max2=0;for(int i=0;i<4;i++){ scanf("%d",&a[i]);max1=max(max1,a[i]); \/\/记录最大值 } for(int i=0;i<4;i++){ if(a[i]!=max1)\/\/记录除最大值以外的 最大值(第二大数)max2=max(max2,a[i]);} printf("%d",...

求这个c语言程序的输出结果
60-69 <60 因为如果没碰到break就会从case C这一步一直做下去

c语言 利用数组输出自己的名字
以下是一个简单的 C 语言程序,它使用一个字符型数组,输出自己的名字:Copy code include <stdio.h> int main() { char name[] = "ChatGPT"; \/\/ 声明字符型数组并初始化为自己的名字 printf("My name is: %s", name); \/\/ 输出名字 return 0;} 在这个程序中,我们首先声明一个字...

c语言 读下列程序,写出程序的输出结果 希望有详细解析
本题输出结果是:1#3#2 for循环共循环3次,i的值分别是9,10,11 当i=9,9\/10等于0,所以执行case 0中的语句,这时m=1,n=1,k=0 当i=10,10\/10等于1,没有case 1,就执行default下面的语句,执行完后,m=1,n=2,k=1 当i=11,11\/10等于1,还是执行default里的语句,完成后m=1,n...

C语言问题:请选出以下程序的输出结果
1、c语言指针使用的过程中,除非改变指针的指向或直接改变指针所指向的内容,否则指针指向内容是不会变化的。2、c语言中,如果需要回传参数,请使用return()函数。3、c语言中,static 关键字可以是的参数不会因为第二次进入而回归0值。c语言程序设计 参考书籍\/文献:1、《c primer plus》2、...

遂川县13831838424: C语言基础中的运行问题,问一下其运行结果为什么是1 -
塔喻复方: printf("%d\n",a<=100); //程序执行的是这行.a<=100成立,结果为真,以%d输出就是1.

遂川县13831838424: c语言为什么输出的是1 -
塔喻复方: 原因很简单,printf("%d\n",i)中i调用的是全局变量i=1,故输出的就是1.如果void funct(void){printf("%d\n",i);int i=5;}改程序段在main函数内那么答案就是2

遂川县13831838424: c语言我想问为什么输出的结果都是1啊... -
塔喻复方: 你的 func 函数写错了,应该是int fun(int n) { if(n==0) return 0; else if(n==1) return 1; else return(fun(n-1)+fun(n-2)); }

遂川县13831838424: 我用c写程序 数据类型是double 为什么计算后输出的结果是1.#J 这是什么意思 -
塔喻复方: 一般出现这种情况是发生了除零错误. 昨天我在回答一个网友提问时又发现了另一种可能,即一个函数的返回值是double或者float类型,但函数由于设计上的问题,某个条件分支下没写return 语句,导致函数在没有return的情况下结束了,这时候返回值就是1.#J这种情况.

遂川县13831838424: c语言吧.为什么输出会是1,而不是0. -
塔喻复方: 一直以来,++ --语法浪费了太多人的时间.说句实在话,++ -- 在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处了. 由于中国的C语言教程长期以来被谭浩强主宰,而谭又错误的把++ --作为一个C语言重点来教,...

遂川县13831838424: 看一下这个c语言程序的运行结果,为什么编译器result的结果一直是1,我觉得好像是1, - 1,1, - 1…… -
塔喻复方: 你的程序我用tcc编译没有出错,应该错在: numDft[i] = rand () % 10; //printf ("%i %i %i %i\n", numDft[0], numDft[1], numDft[2], numDft[3]); 你的C编译器不支持//注释,改用/**/可能可以,顺便请告诉我们你的编译器是什么.

遂川县13831838424: 一下C语言程序结果为什么是:sum=1 -
塔喻复方: 宏替换以后的语句是这样的: sum=a+b/c; 即sum=1+2/4=1+0=1 (两个整数的商仍是一个整数) 所以输出sum=1

遂川县13831838424: 如下C程序,输出结果 A)不确定的值 B)3 C) 2 D)1 为什么是A???? -
塔喻复方: 就是不确定的值,因为n数组的上限是2. 而k = 2 所以n[k]这是越界的,也就是这已经不是n的数组了,而是其他乱七八糟的值.

遂川县13831838424: 以下程序运行结果为什么会是1
塔喻复方: if (c = a) ,“=”是赋值运算符,这个if条件是为c赋值、然后判断c(也就是a)的值是否为非0.C语言里没有布尔型,约定非0为真、0为假.C语言里这种if的写法还算常见. if (c == a),“==”是逻辑运算符,比较c和a是否相等,相等为真、不等为假. 再看这段代码,应该就可以理解了. 看上面的答案,还真有人不知道C语言怎么处理布尔值的.

遂川县13831838424: 一个简单的C语言题.关于递归的.程序运行结果为什么是1 -
塔喻复方: 根据递归来推导:fun(3)==1.0/3+1.0/fun(2) ==1.0/3+1.0/(1.0/2+1.0/fun(1)) //fun(1)是已经知道的,是1 ==1.0/3+1.0/(1.0/2+1.0/1.0) ==1.0/3+1.0/(3.0/2) ==1.0/3+2.0/3 ==1.0 所以他就是等于1,当然就是输出1.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网