软件水平考试答案
选课中心 APP下载
当前位置:首页 > 技能类 > 软件水平 > 考试答案 > 2019年计算机软考程序员模拟题及答案

2019年计算机软考程序员模拟题及答案

更新时间:2017-11-14 11:05:49 来源: 阅读量:

软件水平报名、考试、查分时间 免费短信提醒

广东

获取验证 立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【摘要】 软考网权威发布2019年计算机软考程序员模拟题及答案,更多2019年计算机软考程序员模拟题及答案相关信息请访问计算机软件水平考试网。6 ma

2019年计算机软考程序员模拟题及答案软考网权威发布2019年计算机软考程序员模拟题及答案,更多2019年计算机软考程序员模拟题及答案相关信息请访问计算机软件水平考试网。

6. main()

  { int i,a[5];

  for(i=0;i<<5;i++)

  a[i]=9*(i-2+4*(i>2))%5;

  for(i=4;i>=0;i--)

  printf("=",a[i]);

  }

  【分析】我们可以按照程序中语句执行的顺序,记录各个变量及数组元素值的方法来解决这种阅读程序写运行结果的问题。首先执行第1个for循环。

  i=0, i<5的条件成立,执行循环体。

  a[0]=9*(0-2+4*(0>2))%5=9*(-2)%5=-18%5=-3

  i=1,1<5的条件成立,执行循环体。

  a[1]=9*(1-2十4*(1>2))%5=9*(-1)%5=-9%5=-4

  1=2,i<5的条件成立,执行循环体。

  a[2]=9*(2-2十4*(2>2))%5=9*(0)%5=0%5=0

  i=3,i<5的条件成立,执行循环体。

  a[3]=9*(3-2+4*(3>2))%5=9*(5)%5=45%5=0

  1=4,1<5的条件成立,执行循环体。

  a[4]=9*(4-2+4*(4>2))%5=9*(6)%5=54%5=4

  i=5,1<5的条件不成立,退出第1个for循环。

  注意,计算中的“i>2”是关系运算,结果只能为1或0;“x%5”是模运算,结果是x除5的余数,且余数的符号和x符号相同。

  再执行第2个for循环。

  i=4,i>=0的条件成立,执行循环体。输出数组元素a[4]的值,等于4

  i=3,i>=0的条件成立,执行循环体。输出数组元素a[3」的值,等于0

  i=2,1>=0的条件成立,执行循环体。输出数组元素a[2」的位,等于0

  i=1,i>=0的条件成立,执行循环体。输出数组元素a[1]的值,等于-4

  i=0,1>=0的条件成立,执行循环体。输出数组元素a[0]的值,等于-3

  i=-1,i>=0的条件不成立,退出第2个for循环。

  【参考答案】 4 0 0 -4 -3

  7.main()

  { char s[][6]={”1234”,”56789”},*p[2];

  int i,sum=0;

  p[0]=s[0],p[1]=s[1];

  for(i=0;p[0][i」!=’\0’;i++,i++)

  sum=10*sum+p[0][i]-’0’;

  for(i=1;p[1]「i」!=’\0’;i++,i++)

  sum=10*sum+p[1][i]-’0’;

  printf("%d",sum);

  }

  【解析】本程序的第1条语句是定义2行5列的二维字符型数组s,并且赋了初值如下:

  s[0][0]='1's[0][1]='2's[0][2]='3's[0][3]='4's[0][4]='\0'

  s[1][0]='5's[1][1]='6's[1][2]='7's[1][3]='8's[1][4]='9'S[1][5]='\0'

  此外还定义了字符型指针数组p,利用第3条语句赋了值,结果如下:

  p[0]指向以“s[0][i]”为数组名的一维数组首地址,即p[0][i]就相当于s[0][i]

  p[1]指向以“s[1][i]”为数组名的一维数组首地址,即p[1][i]就相当于s[1][i]

  第2条语句定义了整型变量i(用于单重循环的控制变量)和sum,并对sum清0。

  第4条语句是for循环,控制变量i初值为0,每次加2,控制循环的条件是“p[0」[i]!='\

  0',注意其中的“p[0][i]”就是“s[0][i]”,这个控制循环的条件可以理解为“二维字符型数组元素s[0][i]不是字符串的结束标记则继续循环”。从控制变量i的取位来看,二维字符型数组元素只能取s[0][0]、s[0][2],因为下一个数组元素是s[0][4],该元素值是'\0'。再分析循环体中的语句,其中“ p[0][i]-'0'”是将数组元素s[0][i]中存放的数组字符减去'0',结果将是该数字字符对应的一位整数,整个语句是将sum变量中的原值乘以10以后再加上当前的数字。循环结束后的sum值就是s[0」[0」和s[0][2]中的两个数字组成的2位十进制数,结果为13。

  按照同样的道理,可以分析出第2个for循环作用是完全相同的,它是把s[1」[1」、s[1][3]中的两个数字(前者为6,后者为8)拼接到sum的原值中,结果sum中值为十进制整数1368。程序的最后一个语句就是输出变量sum中的整数值。

  【参考答案】 1368

  8.int p(m,n)

  int m,n;

  { int i,pp;

  for(i=pp=1;i

  PP*= m;

  return(pp);

  }

  main()

  { printf("%d"、 p(3,4));

  }

  【解析】主函数中只有一条输出语句,输出结果是函数调用“p(3,4)”的返回值。所以本题的关键是函数p的功能。

  分析函数p(),有两个参数m、n。函数体中关键的是for循环语句。分析这个循环语句可以看出,控制变量是i,初值为1;,终值为n,每次循环i加1。所以是标准的次数型循环,共计循环n次。循环体中是将参数m的值乘到变量pp中,变量pp在开始循环时已经设置初值为1,所以整个循环是将n个m乘到pp中。显然循环语句的功能是计算m”。而函数的返回值正是这个变量pp中的值。

  由此分析可知,函数调用“p(3,4)”的返回值就是34。结果为 81,也就是本程序的输

  出结果。

  【参考答案】81

分享到: 编辑:admin