#include<stdioh>
main()
{
char c='A';
int k=0;
do {
printf("do swich c = %c\n", c);
switch(c++)
{
case'A':
k++;
printf("run case 'A' k = %d\n", k);
break;
case'B':k--;
printf("run case 'B' k = %d\n", k);
case'C':
k+=2;
printf("run case 'C' k = %d\n", k);
break;
case'D':k%=2;
printf("run case 'D' k = %d\n", k);
continue;
case'E':
k=10;
printf("run case 'E' k = %d\n", k);
break;
default:k/=3;
printf("run default k = %d\n", k);
}
k++;
printf("run k++ out of switch %d\n", k);
}
while (c<'G');
printf("k=%d",k);
}
运行
do swich c = A
run case 'A' k = 1
run k++ out of switch 2
do swich c = B
run case 'B' k = 1
run case 'C' k = 3
run k++ out of switch 4
do swich c = C
run case 'C' k = 6
run k++ out of switch 7
do swich c = D
run case 'D' k = 1
do swich c = E
run case 'E' k = 10
run k++ out of switch 11
do swich c = F
run default k = 3
run k++ out of switch 4
k=4
可以看到 当c依次从A增加到G
c=A 运行 case A和k++ 得到k=2
c=B 运行case B和case C, 以及k++, 得到k=4 注意case B没有break,所以会继续case C
c=C 运行case C和k++ 得到k=7
c = D 运行case D 得到k=1 注意有continue 所以不会执行下面的k++
c=E 运行case E和k++ 得到k=11
c=F 运行default 和k++ 得到k=4
c=G时,退出循环
打印k=4
你把程序写成这样,就很容易理解了。
#include "stdioh"
main() {
int s, p; s=p=5;这里是5
printf("%d\n",p);
p=++s; printf("%d\n",p);++s,就是先给s加1,变成6,然后赋值给p,p值也是6
p++; printf("%d\n",p);p++,还是加1,变成7
++p; printf("%d\n",p);再加1,变成8
}
所以,选D
这里的关键在于++p和p++一个是先加1 ,一个是后加1但是在这里,没有其他的语句,所以,先加后后加的效果是一样的。但是如果是p=s++这样的语句,就是先赋值,然后s再加1和p=++s就不同了。
你好!!!
你的代码有点问题:strcat(p1,p2));表示把p2所指向的内容放在p1所指向内容的后面,但是其中p1,p2都是指针变量,它们指向的是静态存储区的数据,根本不能在p1所指向的字符串的后面再放字符!!!
修改方法1:把指针改成数组,别且数组1的长度应该大于数组1和数组2的长度!!
方法2:用new 开辟空间!!
下面是有数组方法:
#include <stdioh>
#include<stringh>
void main()
{
char p1[10]="abc", p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);
}
结果是:
xyabcABC
Press any key to continue
以上就是关于下面程序的输出结果是全部的内容,包括:下面程序的输出结果是、下面程序段的输出结果是( ) main() { int s, p; s=p=5; p=++s; p++; ++p;、下面程序的输出是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)