5. 分析以下程序, 下列说法正确的是 。 main() { int x=5,a=0,b=0; if(x=a+b) printf("* * * *n"); els

5. 分析以下程序, 下列说法正确的是 。 main() { int x=5,a=0,b=0; if(x=a+b) printf("* * * *n"); els,第1张

书写是否有错?

如果正确,由于两题都是 intx=5,。。。 intx 错。所以两题 都是 A. 有语法错,不能通过编译。

------------------

如果 书写 更正为: int x=5,a=0,b=0 // int x 有空白。

要确定一下 if(x=a+b) 书写是否有错?是 == 还是 =?

如果 书写 用 = 不用 == 没写错,则 条件语句 的 条件 永远成立,因为是 赋值语句,赋值一定成功,所以 条件 永远成立。 两题 都执行 printf("* * **\n") 两题 答案 都是 C. 输出* * * *

-----------------

如果 书写 又一更正,用 == 号:

if(x==a+b)

第一题:a+b=0+0=0, x=5, 条件不成立,执行 printf("# # # #\n") 答案 是 D. 输出# # # #

第2题:a+b=0+3=3, x=5, 条件不成立,执行 printf("# # # #\n") 答案 是 D. 输出# # # #

main() {int a=5,b=-1,c

c=adds(a,b)

printf(“%d”,c)

c=adds(a,b)

printf(“%d\n”,c)

}

int adds( int x,int y)

{static int m=0,n=3 //定义了静态变量

n*=++m //m自加1,然后n=n*m

m=n%x+y++ // n除以x取余数然后再加上y ,赋值给m后,y再自加1

return(m)

}

整个计算过程是这样的:

第一次调用adds(a,b)

n*=++m//m=1 n=n*1=3

m=n%x+y++ // n%x+y++=n%x+y=3%5-1=2

return(m) //m=2,所以c=2,第一次结果为2

第二次调用adds(a,b)

n*=++m//m=3 n=n*3=3*3=9

m=n%x+y++ // n%x+y++=n%x+y=9%5-1=3

return(m) //m=3,所以c=3,第二次结果为3

#include <stdio.h>

char str[]="SSSWILTECH1\1\11W\1WALLMP1"

void main( )

{

int k

char c

for(k=2(c=str[k])!='\0'k++) //从str[2]开始移动字符串指针,划过每一个字符做switch的判断

{

switch(c)

{

case 'A':putchar('a')continue //如果遇到A就往屏幕输出a,并继续循环

case '1':break //遇到字符1就不做 *** 作跳出switch输出*号

case 1 :while((c=str[++k])!='\1'&&c!='\0') //如果遇到ASCII码为1的一直移动字符指针到下一个ASCII为1的或者尾端\0结束

case 9:putchar('#') //如果遇到ASCII码为9的输出#

case 'E':

case 'L':continue //如果遇到字符E,L均不 *** 作,继续返回做循环

default:putchar(c)continue //如以条件均不符合输出该字符

}

putchar('*')

}

puts(" ")

}


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

原文地址: http://outofmemory.cn/yw/11958062.html

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

发表评论

登录后才能评论

评论列表(0条)

保存