下面程序的输出是()

下面程序的输出是(),第1张

额……要是非要选的话当然是选D,意思是先将p2指向的字符拼接到p1指向的字符串的结尾,得到“abcABC”,然后将这个字符串再复制到str+2(str指向首地址“x”,str就指向了“z”,所以将"z"用"cdBCD"进行字符串拷贝) 但是,这个程序是错误的,strcpy(str+2,strcat(p1,p2));这句中,strcat(p1,p2)的p1指向的是一个常量字符串, 常量字符串是不能修改的。将程序修改如下:#include<stdioh>

#include<stringh>

main()

{ char p1[10]="abc",p2="ABC",str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

printf("%s\n", str);}//输出结果是xyabcABC

case 这里的用法是表示从哪个行标开始执行,如果在不加break的跳出switch的情况下后续的语句同样会执行,如果只想满足条件执行一种情况需要加break;

比如 case 'a': putchar(s+1); break;

// 1 s= 'a';

// 1 (s='a')从case ‘a’开始执行一直到default,分别打印了4个字符s+1~s+4即bcde

2 s= 'b';

// 2 (s='b')从case ‘b’开始执行一直到default,分别打印了3个字符s+2~s+4即def

3 s= 'c'

// 3 (s='c')从case ‘c’开始执行一直到default,分别打印了2个字符s+3~s+4即fg

#include<stdioh>

int main()

{

char s="abc";

while(s)

{

switch(s) // 1 s= 'a'; 2 s= 'b'; 3 s= 'c'

{

case 'a':putchar(s+1); // 1 (s='a')从这里开始执行一直到default,分别打印了4个字符s+1~s+4即bcde

case 'b':putchar(s+2); // 2 (s='b')从这里开始执行一直到default,分别打印了3个字符s+2~s+4即def

case 'c':putchar(s+3); // 3 (s='c')从这里开始执行一直到default,分别打印了2个字符s+3~s+4即fg

default: putchar(s+4);

}

s++;

}

}

第一次func(a,b)函数时,传递过来的两个值是4,1 即在func(a,b)函数中a=4,b=1 static int m=0,i=2,定义了两个静态变量,即一直战用内存,函数调用结束不释放,结果依然是上一次改变后的结果。

执行 i+=m+1 →即 i=2+0+1=3;

执行 m=i+a+b; → m=3+4+1=8;

执行 return(m) →返回 m=8;

printf("%d,",p); 输出 8

第二次执行func函数 依然传递 4,1

在func函数中,因为m 和i是静态变量,所以这时m=1,i=3

执行 i+=m+1; → i=3+8+1=12;

执行 m=i+a+b; → m=12+4+1=17;

执行 return(m) →返回 m=17;

printf("%d,",p); 输出 17

最后结果为 8 ,17

输出会是8,10,16

这是因为i=010; C语言默认以数字0开头的是一个八进制数,所以转为十进制后就是8。

k=0x10;这是明文写明了这是一个十六进制数,转为十进制就是16。

以上就是关于下面程序的输出是()全部的内容,包括:下面程序的输出是()、C语言问题求解:下列程序的输出是_____________、以下程序的输出结果是_______________。 #include <stdio.h> main() {int k=4,m=1,p; p=func(k,m); printf(等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9311225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存