我觉得你的程序是错的,我运行时发现它果然是错的,你的程序在运行到strcat(p1,p2)就有问题了,拼接字符串时要保证第一个串有足够的空间保存拼接后的串。把 char p1; p1="abc";改成char p1[7]="abc";就可以运行了,结果输出为aabcabc,str指向“abc”中的a,str+1就指a后面的b,strcpy(str+1,strcat(p1,p2)); 把p1,p2拼接后拷到str+1位置,也就是a后面所以str就变成“aabcabc”
这个应该好理解啊,
首先注意x++和++x的区别,x++是本次先用其原值,用完后马上自加1。++x是先自加1,再用它自加后的值。
另外要明白,编译器肯定执行了"if(x++>5)"这一句,此时x=5,但判断后为假,所以if后面printf语句是不执行的,判断后为假后,还干了一件事,那就是x++(因为本身if语句是执行了的),此时x=6
刚才if判断是假,肯定会执行else语句,++x指的是先要对变量x进行自加1,然后才会printf。
因此,最终结果是x=7
悉知!
结果如下:
3579
解释:开头声明了一个函数fun2,在主程序中声明了变量i,用for循环语句,初始化i=0,然后执行一次函数fun2,然后i+1,并判断i是否依然小于4,第一次循环i=0,第二次i=1,第三次i=2,第四次i=3,第五次i=4,因为不小于4,所以跳出语句,程序运行完成。共循环四次。
函数fun2中,声明了一个静态变量a并赋值1。每次运行该函数a都会加2,并打印a。故会得出以上的运行结果。
另外因为此段代码中有字符为中文符号,将无法编译;且因为运行完会自动关闭,故修改为:
#include <stdioh>void fun2()
{
static int a=1;
a=a+2;
printf("%d\n",a);
}
int main()
{
int i;
for(i=0;i<4;i++) fun2();
getchar();
}
截图:
回车后程序运行结束并关闭。注:为了更直观的显示因此添加了换行符。
望采纳!
char ch[7]={"12ab56"}; 意思是把12ab56七个字符分别赋值到数组ch[0],ch[1]ch[6]中。
for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2) 意思是从i=0开始,如果ch[i]大于等于字符‘0’且小于字符‘9’(可以由ASCII码将字符转换为十进制数来计算)那么i=i+2,否者终止循环。字符‘0’ASCII码为48,字符‘9’ASCII码为57;
ch[0]=字符'1'ASCII码为49,所以ch[0]满足大于等于字符‘0’且小于字符‘9’,执行s=10s+ch[0]-'0'=100+49-48=1(全部转化为十进制运算);
i=i+2=2;
ch[2]=字符‘a’ASCII码为97不满足条件,循环结束执行printf("%d\n",s); ,%d表示输出的为十进制整形数字,s=1,所以运行结果为1
以上就是关于下面程序的运行结果是()全部的内容,包括:下面程序的运行结果是()、5. 下面程序运行结果是 。、C语言,下面程序的运行结果是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)