这道C语言题怎么做?哪位能国光帮帮忙20161103?能说出详细过程就更好了。 a=3,b=4,c=5,a+b

按时间排序
-- FUNCTION: hsggjyk_dev.getnewsinfo(numeric, character varying, numeric, numeric, refcursor)
-- DROP FU...
在实验报告里写出调试过程的模板,和具体步骤还有应该从哪方面着重写
Problem Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可...
我把菜单栏加入到了容器中,但是它显示和按钮都居中显示了,这是为什么,如果想到左上角显示,应该怎么办
select t.id,t.isValid,t.createTime,t.updateTime,t.store_id,sum(t.repairNum) as repairNum,
dom4j创建element时如果是空元素则会自动缩写关闭标签。如“&xx&&/xx&”用dom4j创建的时候会生成“&xx/&”。dom4j中有什么设置可以实现默认不缩写关闭标签吗?
![图片说明](http://img.ask.csdn.net/upload//_407150.png)
![图片说明](http://img.ask.csdn.net/upl...
如图,新建了项目遇到以下问题
![图片说明](http://img.ask.csdn.net/upload//_102789.png)
按照网上的解决办法更改了jdk路径,变成...
![图片说明](http://img.ask.csdn.net/upload//_516540.png)
在安装opendaylight的openflowplug组件时出错
JDK的环境变量 设置完了
官网下载的eclipse 解压以后发现不能启动 都是64位的 反复卸了好几次 求大神支招 蟹蟹
擅长信息安全, 网站开发, 开发编程, 数据库
精通数据库, Java, 网站开发, 前端, Android, 大数据
擅长前端开发
精通CSS3, JAVA, javascript, Jquery
擅长抖段子, 腹黑抖机灵选手, PY, 毒舌, 搬砖, Swift, Object-C, C++
精通抖段子, 抖机灵, Scrapy, ObjectC, C语言, JSON, Matlab, git, shell, github, XML, HTML, MySQL, C++, swift, SVN, Python, UE4, VR, WebGL, OpenGL, Django, Flask
擅长java, javaee, player新手C语言问题,a=(b=4)=3;为什么是错误的,而(a=3*5)=3*4;是对的
a=(b=4)=3,按照运算符优先级,先运行b=4,再运行b=3,最后运行a=3,所以结果得到a、b都等于3,并没有错.(a=3*5)=3*4;按照运算符优先级,先运行a=3*5,再运行a=3*4,最后的出a等于12.两个都没有错啊.你看有没有可能是中英文输入法导致的符号的问题.
若有定义语句 int a=3,b=2,c=1; 以下选项中错误的赋值表达式是( )
A)a=(b=4)=3;
B)a=b=c+1; C)a=(b=4)+c;D) a=1+(b=c=4);
要选哪一个呢
/question/.html
看看这个问题中的解答吧,说的挺好的。
这个题目产生矛盾的原因很多了。我用的是VS2008验证的没有问题,说不定你在别的编译软件上就会发生错误。随着编程软件的发展,编译器也可能存在改变。这种题目也不考虑编译器问题,只能说o(︶︿︶)o 唉了。
考试的话就按帖子里说的选择A吧。
为您推荐:
其他类似问题
扫描下载二维码非常经典的C语言趣味题目
字体:[ ] 类型:转载 时间:
在这个网站上发现一套很有趣的C语言测试题,如果你招聘C语言相关开发人员,或者正在学习C语言,很值得做一做
在这个网站上发现一套很有趣的C语言测试题,如果你招聘C语言相关开发人员,或者正在学习C语言,很值得做一做。
如果没有做,下面内容暂时不要看,最好自己先完成一遍。
OK,假设你做的答案没有完全正确,那你可以继续看下去了,否则,后面内容对你来说就是小菜一碟,不值得看。
#include &setjmp.h&static jmp_int main(void){volatile int b = 3;if (setjmp(buf) != 0){printf("%d\n", b);exit(0);}b = 5;longjmp(buf, 1);}
输出结果为A)3 B)5 C)0 D)都不是
答案为B,也就是输出5。
关键点在于理解setjmp以及longjmp,( )第一次运行到setjmp,会设置jmp_buf,然后返回0。当调用longjmp时,会把longjmp里面的非0值作为setjmp的返回值返回(如果longjmp的value参数为0,setjmp恢复后返回1,也就是当恢复到setjmp存储点的时候,setjmp一定不会返回0)。
setjmp-longjmp组合的用处类似于游戏中的存盘读盘功能,经常被用于类似C++的异常恢复操作。
struct node{};struct node s = { 3, 5, 6 };struct node *pt = &s;printf("%d\n", *(int*)pt);返回结果为3,这个算是比较简单,pt为指向结构s的指针,然后将pt转换为int指针,进行dereference,取出一个int值,那就是结构中第一个数。
我们将题目改动一下,如下代码
代码如下:struct node {
}; struct node s = { 3, 5, 6, 99 }; struct node *pt = &s; printf("%X\n", *(int*)pt);需要注意的是一般32位C编译器都认为char是8bit,short是16bit,int为32bit,所以node在内存中应该正好是对齐的,也就是abc这几个成员之间没有空隙。最终结果应该为60503,如果不是,欢迎你告诉我你具体的编译环境以及硬件配置。
代码如下:int foo(int x, int n){ int val = 1; if (n & 0) { if (n % 2 == 1) val *= val *= foo(x * x, n / 2); }
}这道题其实最简单的办法就是在纸上做一个推演计算,一步一步跑一下,就能得到答案了,这里面没有任何复杂的C语言概念。
代码如下:int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int*)(&a + 1); printf("%d %d\n", *(a + 1), *(ptr – 1));这道题考的其实是指向数组的指针,&a是一个隐式的指向int [5]数组的指针,它和int* ptr是不一样的,如果真要定义这个指针,应该是int (*ptoa)[5]。所以ptoa每一次加一操作都相当于跨越int a[5]的内存步长(也就是5个int长度),也就是说&a + 1其实就是指向了a[5]这个位置,实际上内存里面这个位置是非法的,但是对ptr的强制转换导致了后面ptr-1的内存步长改为了1个int长度,所以ptr-1实际指向了a[4]。至于*(a+1)没什么好说的,值就是2。
代码如下:void foo(int[][3]); int main(void) { int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; foo(a); printf("%d\n", a[2][1]); return 0; } void foo(int b[][3]) { ++b; b[1][1] = 9; }其实和前一题有异曲同工之妙,++b的步长实际上是3个int,也就是++b运算以后,b指向{4,5,6}这个数组的开始,而b[1]就是{7,8,9}, b[1][1]实际上就是8这个值也就是main函数中的a[2][1].
代码如下:int a, b, c, a = 3; b = 5; c = a, d = (a, b); printf("c=%d ", c); printf("d=%d\n", d);这个其实有两个C语言知识点,一个是等号操作符优先级高于逗号操作符,另一个是逗号操作符相当于运算逗号前半部后半部的表达式,然后返回后半部表达式的值。所以c等于a(先计算等号),而d等于b(逗号表达式返回b)。
代码如下:int a[][3] = {1, 2, 3, 4, 5, 6}; int (*ptr)[3] = printf("%d %d ", (*ptr)[1], (*ptr)[2]); ++ printf("%d %d\n", (*ptr)[1], (*ptr)[2]);依然是2维数组相关题目,ptr为指向int [3]数组的指针,首先指向a[0],所以(*ptr)[1], (*ptr)[2]就是a[0][1], a[0][2].然后++ptr,相当于ptr指向了a[1],这时得到的是a[1][1],a[1][2],所以结果就是2,3, 5, 6。
代码如下:int *f1(void) { int x = 10; return &x; } int *f2(void) { int * *ptr = 10; } int *f3(void) { int * ptr = malloc(sizeof *ptr); }这里考的是返回一个指针的问题,一般来说返回指针的函数,里面一定有malloc之类的内存申请操作,传入指针类型,则是对指针指向的内容做修改。如果想修改指针本身,那就要传入指针的指针。
代码如下:int i = 3; j = sizeof(++i + ++i); printf("i=%d j=%d\n", i, j);这道题考的内容其实就是sizeof,我在这篇文章里提到过 sizeof如果计算表达式,那么表达式是不会做计算的,也就是不管加加减减,sizeof就是针对i计算大小。在32位机器上,这个j应该为4。
我将代码扩展了一下,看看大家能不能想到结果:
代码如下: int j = sizeof ( m + n); int k = sizeof ( n + n); int l = sizeof ( m); int l2 = sizeof (m * m); int l3 = sizeof (m + dn); int l4 = sizeof (m + m);第十题:
代码如下:void f1(int*, int); void (*p[2])(int*, int); int main(void) { int a = 3; int b = 5; p[0] = f1; p[1] = f1; p[0](&a, b); printf("%d %d ", a, b); p[1](&a, b); printf("%d %d\n", a, b); return 0; } void f1(int *p, int q) { int tmp = *p; *p = q = }函数指针的数组p勉强算是一个知识点,另外一个知识点就是第八题提到的,对于int q这样的参数,是不会修改其内容的。而*p则可修改p指向的内容。
第十一题:
代码如下:void e(int); int main(void) { int a = 3; e(a); putchar(‘\n'); return 0; } void e(int n) { if (n & 0) { e(–n); printf("%d ", n); e(–n); } }这道题自己debug一下就完全明白了,主要知识点就是递归调用,另外前置后置自减操作的返回值问题。
第十二题:
代码如下:typedef int (*test)(float*, float*); 也是经常出现的一类题,对复杂的指针定义做解析,实际上K&R里面(5.12)也有介绍该如何解读。不熟悉的朋友可以试着练习练习标准库中的bsearch,qsort以及signal函数。
第十三题:
代码如下: char buf[10] = {1, 2, 3, 4, 5, 6, 9, 8}; p = (buf + 1)[5]; printf("%d\n", p);这道题我在 也提到过相关知识点,也就是p实际指向*(buf + 1 + 5),写的更诡异一些就是p=5[buf +1];也是同样结果。
第十四题:
类似十三题,也是把数组弄得有些诡异,(p += sizeof(int))[-1];相当于*(p + sizeof(int) + (-1))。
第十五题:
代码如下:int ripple(int n, …) { int i, j, va_ k = 0; j = 1; va_start(p, n); for (; j & ++j) { i = va_arg(p, int); for (; i &= i – 1) ++k; }
} int main(void) { printf("%d\n", ripple(3, 5, 7)); return 0; }这道题也是两个知识点,一个是可变参数函数定义以及如何实现,va_arg会把5,7依次取出来。另一个知识点是i &= i-1,实际上是计算了i二进制形式中1的个数,每次计算都会消减掉最低有效位上的1。比如7二进制表示为111。i &= i –1的计算结果依次为110,100, 000 (也就是0)。在hacker's Delights这本书里介绍了很多类似技巧。
第十六题:
代码如下:int counter(int i) { static int count = 0; count = count +
} int main(void) { int i, for (i = 0; i &= 5; i++) j = counter(i); printf("%d\n", j); return 0; }只要了解静态局部变量的真正内涵,这道题就是小菜一碟碟碟碟碟碟。。。。。。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具c语言填空题,那位大神帮帮忙,很急的, c语言填空题,那位大神帮帮忙,
c语言填空题,那位大神帮帮忙,很急的 n,c++);=200;count=0,c&for(a=10,a&lt#if(a%c==0)_____if(a%b==0){count++};{ _____for(c=1,b.hmin(){=a,c,a++) 爱笑的tzh c语言填空题,那位大神帮帮忙,很急的
for(a=10#include math,b,a++);if(a%c==0)___n++,a&_for(c=1,c&lt,c.hmin(){int a,c++);=200;__if(a%b==0){count++};{ _n=0__;=a,n;count=0
热心网友
题目的目的是要处理什么
题目上没说程序的目的是什么吗?C语言。第三题和第四题的详细过程是啥?!求解-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
C语言。第三题和第四题的详细过程是啥?!求解
来源:互联网 发表时间: 11:13:27 责任编辑:李志喜字体:
为了帮助网友解决“C语言。第三题和第四题的详细过程是啥?!求解”相关的问题,学网通过互联网对“C语言。第三题和第四题的详细过程是啥?!求解”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:C语言。第三题和第四题的详细过程是啥?!求解,具体解决方案如下:解决方案1:
0,n2=n1++,f=()与后面的括号组成一个逗号表达式,n1=4,所以f只与第一个括号的值有关为5,n2=4答案选c第5题,n1=5,n2=3n2++,n1=4,n2=4++n1,先用后加,所以值为最后一个5第3题,n1++后置加加运算符,第一个括号为逗号表达式
解决方案2:
3::5 4,选C
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
<a href="/cse/search?q=<inputclass="s-btn"type="submit"text="<inputclass="s-btn"type="submit"text="<buttonhidefocusclass="s-btnjs-ask-btn"text="我要提问
<a href="/cse/search?q=}

我要回帖

更多关于 国光帮帮忙 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信