如果正确,由于两题都是 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,cc=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(" ")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)