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 这两句赋的值一样,...