一道c语言填空题程序没看懂求详细解释

2020-12-11 21:05:55 字数 6080 阅读 8469

1楼:

#include

main()

op1=res;//把结果保存到操作数1,方便继续运算opertor=getchar();//再次输入运算符号}printf("%d\n",res);//打印结果}注意:由于是没有区分运算符优先级的,完全是按照输入的先后顺序计算的,

所以上面这4个输入的式子要按从左到右计算,不能按照平常乘除优先于加减的习惯去计算。

一道c语言程序填充题,问题如下,我看不懂为什么这么填,请详细解释一下,谢谢!

2楼:寂静深阑斜

说下这段**思路。a、b两个数组,总有一个数组元素最先被使用完,那么之后存入c数组的元素只能是另一个数组的。i和j作为角标,就是用来表明a、b数组各用了多少元素。

如果a、b数组都没用完,那么就要判断a、b谁出的元素小,小的存入c中(根据要求知c中元素由小到大排列)。

c语言一道求程序运行结果题,一直看不懂,求大虾详细解释下!谢谢了! 5

3楼:匿名用户

把y转化为d进制,

dowhile(x);

4楼:匿名用户

converse(m,n) 将十进制数 m 转为 n进制数 并输出

思路是m =x1 * n^0 + x2 * n^1 +x3 * n^2 +````````+xk * n^k

输出的 xk xk-1 xk-2`````x2 x1 这一串 便是 十进制数 m 转为 n进制数得到的结果了

5楼:匿名用户

converse(int y, int d)实现将变量y中的数据,按 d 中进制,进行字符化输出。

如题:converse(20,2), 就是将十进制数 20 的以二进制形式进行输入。

c语言的一道程序题!!!看不懂为什么!!求解释详细,谢谢!! 5

6楼:召走刀文

这个主要涉及到变量作用域的问题,两个原则

局部变量与全局变量重名时,屏蔽全局变量

{}里声明的局部变量的作用域就是{}的范围。本质上跟函数的{}是一个道理

**中,会屏蔽掉外面的全局变量a,此时函数f的参数是5,所以计算后s 为5。

之后的s+=f(&a);中,a是全局变量a(因为int a=5的作用范围是那个{}),所以s为7

在printf中的a是全局变量的a,因为经过上面f函数的计算,所以a为3

7楼:周洁伦之谜

注意3点:全局变量和局部变量(局部变量优先级高),传地址和传参数,++操作

int f(int *a) //传地址,会改变传入的参数比如 int c = 2; int d = f(&c); 结果d=2,c=3

所以:int s=0;

s+=f(&a); s=7,a=3;这里是全局aprintf("%d %d\n",a,s);

8楼:w休息的风

首先你定义了一个全局变量int a=2;

然后函数f(int *a)目的是把你传递过来的实参数加1.注意:return (*a)++;这句是先执行返回,先把指针a指向的值返回,然后再把该指向的对象进行加1操作。

主函数里面是这样运行的,

定义了一个s,后面有个括号,里面又定义了个局部变量a,初始化为5;然后你调用函数f,运行完以后,s的值变成5,而临时变量a的值变成了6,继续运行,临时变量的a被释放了。后面又调用了函数f,但是这个变量a是你定义的全局变量,值为2,调用完以后,s的值就变成了7,而a的值加1变成了3.所以最后输出值为:

3 7.

明白了吗?

注意两点:1是函数f返回值那,是先返回后,再把指向的对象加1,2、就是主函数里面的局部变量a,和全局变量a的区别和使用。

9楼:匿名用户

#include

#include

inta=2;

intf(int*a)

voidmain()

中起作用

内起作用。建议写程序不要写成与全局变量同名。

s+=f(&a);//在这个{}内,s=s+f(&a)=0+5=5

//然后(*a)内值再加1,此时在这个{}内a变成了6}s=s+f(&a); //此时s=5,整个文件内全局变量inta=2,在上一个{}内局部变量不起作用了。

//s=s+f(&a)=5+2=7//此时(*a)内值加1,a=2+1=**rintf("a=%d,s=%d\n",a,s);//所以输出结果a=3,s=7

}以下是codeblock内运行结果

a=3 s=7

10楼:匿名用户

这部分里面重新声明了变量a,使用的就是局部的这个变量;

出了}之后,这个a的生命期结束,再使用变量a时用的就是外面声明的全局变量。

return(*a)++;

++在后,返回值是自加之前的值,然后自身加1,所以第一次返回5,然后局部变量a变成6,第二句函数f返回2,加上5就是7,全局变量a变成3。

11楼:吴龙

主要还是定义的变量作用域的问题。

还有一个容易忽略的问题,return (*a)++;这句话的意思是 先返回*a,然后*a++,即最后*a增一。不是直接返回(*a)++。

进入main函数,定义变量s=0;

下面这里有个,相当于一个作用域,也就是里定义的变量只在这里面有效,出了,针对的就是外一个作用域。由于在定义变量a=5,是局部变量,所以s+=f(&a),s=0+5=5,同时内的a加以1,a=6;然后出了,作用域消失,内定义的a,销毁。

然后s+=f(&a),此时的a就是全局变量的a=2,所以s+=f(&a),s=5+2=7,同时a+1=3;

最后输出,a=3,s=7.

12楼:匿名用户

这里有2个a变量 一个是全局

变量 一个是函数内的变量。

第一行全局变量a=0 (下面我们用a1表示他)在main函数中

int a=5;

s+=f(&a);

这个a = 5 是局部变量 (我们用a2表示)经过上面计算后 s=5 ;a2=6, ; 下面s+=f(&a);

printf("%d %d\n",a,s);

都是a1 ;所以s = 7 ,a1 = 3了结果就是c答案

13楼:周生

这涉及到两个问题

1 return之后是不会再执行++操作的

2 局部优先原则,但是局部变量只在声明他的局部有效,出了这个局部就失效了

14楼:匿名用户

在main函数中{}中的int a的作用域仅限于这个{}内,所以出了这{}后s=5,而a仍然等于2,然后s+=f(&a); 就使得s=7,a=3了。这题主要考察的是变量的定义域,第一个a=2是全局的,第二个是局部的,只限于那个{}内。起始说白了就是

int a;

}这种情况,局部定义有效,但是出了{}就是外层的定义有效了。

15楼:使者

输出的a是全局的a,第一个s+ 计算的s= 0 + 5;第二个s = 5 +2

16楼:匿名用户

这是一道函数调用题,void main()为主函数。程序先执行主函数,所以到第一个 s+=f(&a);又因为它是调用的,要看到这里 int f(int *a)

实参把a=5;赋给形参,由于是return(*a)++;所以s=5;

到第二个 s+=f(&a);

而第一个 int a=2; 是全局变量

所以s=7;

第一个 int a=2; 经过 return(*a)++;后也变成3了

17楼:小拇指亦有爱

int a=2; 全局变量

int f(int *a)

void main()

//局部失去作用,

s+=f(&a); //相当于s=5+2 ,然后a+1=2+1=3

printf("%d %d\n",a,s);

}a:2 7

b:2 10

c:3 7

d:3 11

18楼:匿名用户

我认为是3,9,求大神解答

19楼:张禄

在看看指针和引用那里

20楼:匿名用户

局部变量全局变量 呵呵 上面解释的很清楚

21楼:pprain_水杯

第二个s+=f(&a);使a+1

一道c语言程序填空题求高手来

22楼:匿名用户

小妹要加油了,

这道题很简单呀

for(k=1; k<6; k++)

它是用来建立一个链表的,p=(struct line *) malloc (len) ; 这是建立一个节点,if(head==null) head=p;

else tail->next=p; 第一个条件是看是不是建立的第一个节点,如果是第一个就让head指针指向它,后一个是让tail指向它

void f(struct line *p) }它是用于将上面循环语句建立的链表中的每个节点中的内容输出来,即p->num

//先学习书本的理论,再多上机练习,必有进步!

c语言的一些题目:不太理解**,求详细解释,手写部分看不懂 10

23楼:匿名用户

题目是什么呀

要看懂要知道这程序是用来干什么用的

c语言读程序题,求详细解释步骤

24楼:匿名用户

1.一个链表,分别是p、q、r,它们的num分别是12、8、28。

2.p指向q,q指向r。

3.p的num是12,q->next就是r,而r的num是28。

4.所以结果是40。

一道c语言的题目,求详细解释*pa与pa的区别

25楼:匿名用户

这里涉及的主要是对指针的理解;

首先声明四个变量,两个int类型的变量,两个int *类型的变量;int类型的变量存储的是int类型的值,int *类型的变量存储的是一个地址,这个变量可以存储一个int类型的地址,而这个int类型的地址里面毫无疑问存储的是一个int类型的值。

int *pa=&a,可分解成:

int *pa;

pa = &a;//把a的地址赋给pa

这样pa这个指针就指向了变量a的地址;

* 是一个解引用符,在这里,*pa就是指针pa所指向的内存当中存储的变量;也就是说这时*pa与a是等价的。

pb与b的关系也是一样的;

现在就很清楚了:

*pa=3;//往a这个变量里存3

*pb=4;//往b里存4

a=5;//往a里存5

b=6;//往b里存6

pb=pa;//pb这个指针指向变量a的地址*pa + *pb;//就是a + a,并且此时a = 5答案自然是 a

26楼:匿名用户

答案为a、10

你迷惑的可能是这里:

int *pa=&a,*pb=&b;

其实这个相当于:

int *pa,*pb;

pa = &a;

pb = &b;

这个是初始化的地址赋值模式,和指针正常赋值语句*pa=a是不一样的。

27楼:匿名用户

#include

void main()

/*a、10 b、11 c、12 d、7*//*其实我没看懂,试过只后才知道结果是什么*/a=5,b=6

pa=0012ff7c,pb=0012ff78*pa=5,*pb=6

a=5,b=6

pa=0012ff7c,pb=0012ff7c*pa=5,*pb=5

10press any key to continue

一道c语言题,求高手解释下这题,一道C语言题

1楼 樣小樣 我把行分好点,直观点 总的目的就是找出50 60中的质数 素数 include stdio h main 输出j k 用来控制转行 如还有其他不明,可继续提问。 2楼 百度用户 include stdio h main 3楼 匿名用户 找素数的程序 ,只是其中的好几句语句没有用 4楼 ...

一道c语言编程题,求解答,一道C语言程序题目,求解答~~

1楼 冯小气气 s没有初始化,没有指向一块内存。 while str 当遇到空格的时候就直接退出while循环了,并不会去掉空格。 并且即使你进了while循环,你最后赋值的时候指针s已经到了最后了,也不会正确。 void fun char str str memset tmps 0 strlen ...

求解释、一道简单的C语言题目,一道简单的c语言题目,求代码

1楼 流云的歌 我总共做了三个测试。 只有x 0 0 或 null 时,没有给后面的x 1 x 2 赋值时结果是7 0,说明这个字符串是空串。所以是0 当只有x 1 0 时,显示7 1 第三个测试是测试strlen 这个我不用说了。 2楼 小囚love腊肉 x 0 0 x 1 0 这两句赋的值一样,...