c语言程序设计 i++与++i的问题?为什么下面两种结果一样?

等 级:侠之大者
帖 子:160
专家分:471
&&得分:14&
#include&stdio.h&
#include&stdlib.h&
&&&&&&int i=3,j;
&&&&&j=i++;
&&&&&printf(&%d &,j);
&&&&&j=++i;
&&&&&&printf(&%d &,j);
&&&&&&system(&pause&);
}你的第(3)是怎么出来的?上面这个的结果是3 5
j=i++==j=i;i=i+1;
j=++i==i=i+1;j=i;
来 自:扬州
等 级:职业侠客
帖 子:150
专家分:359
&&得分:14&
感觉楼主犯了不是一般低级的错误
是你输出的问题
能够猜出楼主都是&&&最后&&进行输出的&&
当然都用最后一个此变量
(3)输出2个j当然都是5
++i是i先加一在进行运算
i++是它所在语句执行结束后,i=i+1
ping&&&nbtstat&&&netstat&&&tracert&&& nat&&&at&&& ftp&&&telnet..................
来 自:陕西西安
等 级:小飞侠
帖 子:705
专家分:2271
&&得分:14&
回复 楼主 szw982
LZ还是基础不扎实啊,这样的问题直接找谭爷爷的教材来翻翻就好!!!
Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
等 级:版主
威 望:14
帖 子:1178
专家分:3032
&&得分:14&
高手们都已经解决了,不过再次提醒楼主:
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a =
而 a = i++,相当于 a = i=i+1;
如果实在搞不明白++ --怎么回事,那也不是什么事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。
欢迎来到我的博客:.cn/noisunyuhong
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
&&得分:14&
楼主记住一点就是:++i是先自加后使用自加后的i 值&&而i++是先用i的初始值在把i的值增加1
楼主这个知识点肯定知道吧!关键是理解
等 级:论坛游侠
帖 子:78
专家分:188
&&得分:14&
以下是引用sunyh1999在 19:07:16的发言:
高手们都已经解决了,不过再次提醒楼主:
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a =
而 a = i++,相当于 a = i=i+1;
如果实在搞不明白++ --怎么回事,那也不是什么事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。 很详细的讲解。
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
&&得分:14&
(1) i=3&&&&&//i3&&j&&&s&&&&&&(2) i=3&&&//i3&&j&&&s&&& (3) i=3&&&// i3 j&&& (4) i=3&&// i3&&j&&&&&&&&&
&&& j=i++&&&//j3&&i4&&s&&&&&&&&& j=++i // i4&&j4&&s&&&&&& j=i++&&//j3 i4&&&&&& j=++i//i4&&j4
&&& s=++i&&&// s5&&j3&&i5&&&&&&&&s=i++ // s4&&i5&&j4&&&&&&j=++i // i5 j5&&&&&& j=i++//j4 i5
结果:&&&&&&&&&&&&&&&&&&&&&&&&&&& 结果:&&&&&&&&&&&&&&&&&& 结果:&&&&&&&&&&&&&&&&&结果:
&&& j=3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&j=4&&&&&&&&&&&&&&&&&&&&&j=5&&&&&&&&&&&&&&&&&&&&j=4
&&& s=5&&&&&&&&&&&&&&&&&&&&&&&&&&&&&s=4&&&&&&&&&&&&&&&&&&&&&j=5&&&&&&&&&&&&&&&&&&&&j=4
到底是“出来混迟早要还”还是“杀人放火金腰带”?
来 自:和谐社会
等 级:论坛游民
帖 子:80
专家分:34
谭爷爷的看了,三版的第57页
最后还是看你们的看懂的.
请给我结果 我要改变任人摆布的人生!
等 级:新手上路
热心的人多,没有来错
版权所有,并保留所有权利。
Powered by , Processed in 0.026923 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved计算机2级C语言,i++和++i的运算问题——————————_诛仙网游吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:137,537贴子:
计算机2级C语言,i++和++i的运算问题——————————
求教,如果i是5,那么i++和++i怎么搞的,今天学习入门,还是没搞懂,为什么i=i+1了?为什么有时候是5
有时候是6了》?
让我想想老师今天讲的题,好像是这样#include
int m =12,n =34
printf(m++,++n)
(PS,题好像是这样,至少相差不大,我才第一次,能记住这么多也不错了、)
尼玛,高中就高中,怎么变狗了! 高中的东西忘差不多了
内&&容:使用签名档&&
保存至快速回贴
为兴趣而生,贴吧更懂你。&或&& 查看话题
关于c语言i指针问题
#include&stdio.h&
#include&string.h&
int main()
{void sort(char *name,int n);
void print(char *name,int n);
char *name={&Follow&,&Bie&,&Grewds&,&FOR&,&Cfefe&};
sort(name, n);
print(name, n);
return 0;}
void sort(char *name,int n)
int i,j,k;
for(i=0;i&n-1;i++)
for(j=i+1;j&n;j++)
if(strcmp(name,name)&0)
{temp=name;name=name=}}}
void print(char *name,int n)
for(i=0;i&n;i++)
printf(&%s\n&,name);}
if(strcmp(name,name)&0) 为什么不换成if(strcmp(*name,*name)&0)?name和name不是只表示地址吗?怎么会表示字符串呢?
将{temp=name;name=name=}换成{*temp=*name;*name=**name=*}为什么不行呢?谢谢各位大侠了
name声明的时候是字符指针的数组,也就是一个数组里面存的都是字符指针,所以name里面就是char* : Originally posted by gongweixue at
name声明的时候是字符指针的数组,也就是一个数组里面存的都是字符指针,所以name里面就是char* 而如果你去看标准库的话,strcmp应该是接受字符指针类型的参数。
在c里面,是不存在字符串类型的,仅仅是用一个字符指针去指向一个存储于常量区域的一串字符序列,这和字符数组也有区别。但是在c语言中,在函数的参数传递的时候,可以把字符指针和字符数组首地址和字符数组名当成一回事,如何实现是编译器的职责,我们不用担心。 : Originally posted by gongweixue at
而如果你去看标准库的话,strcmp应该是接受字符指针类型的参数。
在c里面,是不存在字符串类型的,仅仅是用一个字符指针去指向一个存储于常量区域的一串字符序列,这和字符数组也有区别。但是在c语言中,在函数的 ... 另外,*是解引用操作符,语义上来说是对右侧数据类型指针的一个操作,也就是对char*进行取内容,结果是char,temp是指针类型,所以不兼容。即使temp是char类型的,最后也只是对第一个字符进行交换而已。 : Originally posted by gongweixue at
另外,*是解引用操作符,语义上来说是对右侧数据类型指针的一个操作,也就是对char*进行取内容,结果是char,temp是指针类型,所以不兼容。即使temp是char类型的,最后也只是对第一个字符进行交换而已。
... char *name={&Follow&,&Bie&,&Grewds&,&FOR&,&Cfefe&}中指针名name单独表示什么意思?是表示第一个字符串首地址的地址吗?name里面就是char*?? 问题一:if(strcmp(name,name)&0) 为什么不换成if(strcmp(*name,*name)&0)?name和name不是只表示地址吗?怎么会表示字符串呢?
参考解答:因为strcmp函数的两个形式参数都是指针(地址),调用时实参类型应与其一致,所以strcmp(name,name)不能改成strcmp(*name,*name)。
问题二:将{temp=name=name=}换成{*temp=**name=**name=*}为什么不行呢?
这个复合语句本身就有问题——name表示name的地址&ame;它与name的level是不同的,所以{temp=name=name=}应该为{temp=**name=name=};但不能改为{*temp=**name=**name=*}(因*temp和*name类型不同)。
完整程序如下:
#include&stdio.h&
#include&string.h&
int main()
& & & &&&void sort(char *name,int n);
& & void print(char *name,int n);
& & char *name={&Follow&,&Bie&,&Grewds&,&FOR&,&Cfefe&};
& & int n=5;
& & sort(name, n);
& & print(name, n);
& & return 0;
void sort(char *name,int n)
& & char *
& & int i,j,k;
& & for(i=0;i&n-1;i++)
& && & k=i;
& && & for(j=i+1;j&n;j++)
& && & if(strcmp(name,name)&0)
& && & k=j;
& && & if(k!=i)
& & & && && &&&temp=**name=name=
& & & && && &}
& & & && &}
& & & && &}
void print(char *name,int n)
& & for(i=0;i&n;i++)
& & printf(&%s\n&,name);
} 完整代码如下:
#include&stdio.h&
#include&string.h&
int main()
& & & &&&void sort(char *name,int n);
& & void print(char *name,int n);
& & char *name={&Follow&,&Bie&,&Grewds&,&FOR&,&Cfefe&};
& & int n=5;
& & sort(name, n);
& & print(name, n);
& & return 0;
void sort(char *name,int n)
& & char *
& & int i,j,k;
& & for(i=0;i&n-1;i++)
& && & k=i;
& && & for(j=i+1;j&n;j++)
& && & if(strcmp(name,name)&0)
& && & k=j;
& && & if(k!=i)
& & & && && &&&temp=**name=name=
& & & && && &}
& & & && &}
& & & && &}
void print(char *name,int n)
& & for(i=0;i&n;i++)
& & printf(&%s\n&,name);
} 字符串可以用指针数组的数组元素表示.*是间接指向.
char *name={&Follow&,&Bie&,&Grewds&,&FOR&,&Cfefe&};
所以,name表示的就是字符串.
具体的可以参考 钱能主编的《C++程序设计》第一版.用C语言怎么写类似s=2+22+222+?希望能给个详尽的解题过程,主要是算法问题,谢谢了。-中国学网-中国IT综合门户网站
> 用C语言怎么写类似s=2+22+222+?希望能给个详尽的解题过程,主要是算法问题,谢谢了。
用C语言怎么写类似s=2+22+222+?希望能给个详尽的解题过程,主要是算法问题,谢谢了。
转载 编辑:李强
为了帮助网友解决“用C语言怎么写类似s=2+22+222+”相关的问题,中国学网通过互联网对“用C语言怎么写类似s=2+22+222+”相关的解决方案进行了整理,用户详细问题包括:如题!万分感激。,具体解决方案如下:解决方案1:#include &lt,sum);#define n 5 / for (i=1有疑问联系我;n&=n;/sum=%d&#92,sum=0;i++) { temp=temp*10+2; } printf(&加数中后一项为前一项的10倍再加2 sum+=/i&;加数共有5项void main(){&#47.h&gt。。,temp=0解决方案2:temp=temp*10+2;//加数中后一项为前一项的10倍再加2程序上面的这句错了,我用的是WIN-Tc编译器。不知道为什么错了?解决方案3:貌似win-tc不支持用//表示注释你试试这个#include &stdio.h&#include &conio.h&#define n 5 /*加数共有5项*/void main(){ int i,sum=0,temp=0; for (i=1;i&=n;i++) { temp=temp*10+2;/*加数中后一项为前一项的10倍再加2*/ sum+= } printf(&sum=%d\n&,sum); getch(); /*暂停屏幕,方便查看结果*/}解决方案4:for (i=1;i&=n;i++) { temp=temp*10+2;//加数中后一项为前一项的10倍再加2 sum+= }上面的看不懂,FOR语句关于的是i变量,为什么下面又是TEMP变量啊?这两个变量不一样,怎么循环啊?解决方案5:i变量是用来统计已经加到第几项了。。。。而temp则是用来表示第i项的加数的值例如i=2则此时应该是加到第2项temp=(前一项)2*10+2=22解决方案6:还是不太懂那个FOR循环,为什么里面的两个变量不一样,不过你回答得挺好的,谢谢了!通过对数据库的索引,我们还为您准备了:问:如题!万分感激。答:有疑问联系我。。。 #include #define n 5 //加数共有5项 void main() { int i,sum=0,temp=0; for (i=1;i===========================================问:如题!万分感激。答://#include "stdafx.h"//vc++6.0加上这一行. #include "stdio.h" void main(void){ int n,i; printf("How many items?\nn="); scanf("%ld",&n); for(sum=0,n++,i=1;i===========================================问:如题!万分感激。答://S=2+22+222+……+2222…2int getFactor(int base, int width){ int baseFactor = 0; while( width -- ){ baseFactor = baseFactor * 10 + 1; } return base*baseF}int main(int argc, char const *argv[]){ int i = 0; int sum = 0; for (i...===========================================问:如题,一定是递归哈,我也知道递归麻烦,老师提到还要用双向指针和全局...答:#include int add = 0; int num = 0; void func(int n) { if(n & 0) { num = num*10+2; add += n--; func(n); } } void main() { printf("enter n:"); scanf("%d",&n); func(n); printf("%d",add); } 这是int型的数据,n的值不能太...===========================================问:如题,一定是递归哈,我也知道递归麻烦,老师提到还要用双向指针和全局...答:多看c书 程序要靠自己编写才有意思===========================================问:如题,一定是递归哈,我也知道递归麻烦,老师提到还要用双向指针和全局...答:#include #include int main (void) { unsigned int a,b, for(a=2,b=1,sum=0;b===========================================问:C语言。S=a+aa+aaa+aaaa+aaaaa 例如s=2+22+222+ a=2 i=0 i&=5...答:#include void main() {int i,sum=0,a=2; for(i=0;i===========================================问:#include &stdio.h& main() { int i,n,a;long s=0,t; printf("enter two...答:画图麻烦,给你注解可以吧 #include main() { int i,n,a;long s=0,t;//定义变量 printf("enter two number:"); scanf("%d,%d",&a,&n);//a=2还是其他的,他是决定是2+22+222+ 还是1+11+111+,n决定你这有几个最后一个数有几...===========================================system()是stdlib.h中的一个函数,用来执行系统CMD命令。 shutdown就是一个系统命令,用来关闭计算机。此例中-s参数指定执行的是关机操作,-t参数指定关机前延时为222秒。===========================================C#,C 自己翻译一下就行了,算法是一样的(===========================================aaa=999 *9分之a=(分之a同理aaa……n个=(10^n-1)*9分之a那么原式Sn=(10^1-1)*9分之a+(10^2-1)*9分之a+……=9分之a(10^1+10^2+……10^n -n)=9分之a(10^n+1-...===========================================0xde的意思: 0x在C语言中表示后面紧跟的是一个16进制的数。 所以你的问题就是 十六进制数de换成十进制是多少:13*16+14=222 十六进制:1 2 3 4 5 6 7 8 9 a b c d e 十进制:...===========================================咦?怎么也是3种。(hia hia,无巧不成书嘛,好戏还在后面)我们用0来表示天平平衡,用1天... 111,222。000和自身为对偶码,111和222互为对偶码。为什么要去掉他们3个?我想还是...===========================================不知道你用的汉化版还是英文版,我用的是英文版的。打开VC,选择左上角文件(FILE)命... 再选择下部源程序命令(C++ Source File),在文件那儿填文件名,你说的"文件名乱打222"...===========================================因为这个片子RAM就368*8bit,你在数组前加const ,这样的话就是静态存储,比如说const unsigned char num[]={128,145,163,179,192,209,222,233,242,249,253,255} 这样的话编...======================================================================================2 3 4 5 6 7 8 9 a b c d e f 16进制转换成10进制 和2进制转换成10进制一样 都是乘以它每位的权数 16进制的 0xde 转换成10进制 就是 d*16^1+e*16^0 d=13 e=14 所以等于22...===========================================你的输入2是说a=2吗如果是a=2,要求输出s的值,那就很简单了s=2+22+222+ = 24690===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助}

我要回帖

更多关于 c语言编程软件 的文章

更多推荐

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

点击添加站长微信