我觉得你的程序是错的,我运行时发现它果然是错的,你的程序在运行到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”
结果如下:
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();
}
截图:
回车后程序运行结束并关闭。注:为了更直观的显示因此添加了换行符。
望采纳!
改下程序 #include <stdioh>
int main()
{
int k=0;
char c='A';
do
{
switch(c++)
{
case 'A': k++; printf("k={%d}\n", k); break;
case 'B': k--; printf("k=[%d]\n", k);
case 'C': k+=2; printf("k={%d}\n", k); break;
case 'D': k=k%2; printf("k=[%d]\n", k);continue;
case 'E': k=k10; printf("k={%d}\n", k); break;
default: k=k/3; printf("k=[%d]\n", k);
}
k++; printf("k=(%d)\t", k);
}while(c<'G');
printf("k=%d\n", k);
}
编译下 看输出
先执行 switch 语句 k++; k=1;
在执行 下面的k++ ; k=2;
然后回到switch k-- ; k=1;
由于没有 break; 忽略了 case 标号 继续 k=3;
执行下面的语句 k++ ; k=4;
在执行 语句 k+=2; k=6;
执行下面的语句 k++; k=7;
执行语句 k%=2; k=1;
由于是 continue; 语句 中断后继续执行
k=10; k=10;
执行下面的语句k++ ; k=11;
执行语句 k/=3; 隐式类型转换 先提升为double k=3666 后又转为int k=3;
执行 k++; k=4;
所以答案为4;
以上就是关于下面程序的运行结果是()全部的内容,包括:下面程序的运行结果是()、C语言,下面程序的运行结果是、下面程序的运行结果是什么为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)