当前位置: 首页 > 自学考试 > 自学考试模拟试题 > 2013自考“高级语言程序设计”习题答案详解(17)

2013自考“高级语言程序设计”习题答案详解(17)

更新时间:2012-11-28 09:22:51 来源:|0 浏览0收藏0

自学考试报名、考试、查分时间 免费短信提醒

地区

获取验证 立即预约

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

看不清楚,换张图片

免费获取短信验证码

  5.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

  # include

  main()

  {int i, j,_____________;

  char str[]={“1234567”};

  for(i=0,j=strlen(str); i<J;I++,J++)

  { k=str; str=str[j]; str[j]=k; }

  printf(“%s\n”, str);

  }

  「解」颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j, j是前端元素的下标, j是后端元素的下标, 交换以这两个变量值为下标的元素str和 str[j].开始时,i的值为 0,j的值为字符率未元素的不标(字符串长度减1)。每次交换后,i增 1,j减1.继续交换的条件是str还位于str[j]的前面,即i<J.字符串末元素的不标是它的长度减1,所以在第二个空框处应填入-1.程序为了交换STR[I]和STR[J],使用了变量K,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入K.

  6.以下程序可把输入的十进制数以十六进制数的形式输出,请填空。

  main( )

  { char b[17]={“0123456789ABCDEF”}

  ;

  int c[64],d,i=0,base=16;

  long n;

  printf(“Enter a number:\n”);。

  scanf(“%ld”, &n):

  do { c=________;i++;n=n/base;}

  while(n!=0);

  printf(“Transmite new base:\n”);

  for(――i; i>= 0;――i)

  {d=c; printf(“%c”,b);}

  printf(“\n”);

  「解」程序中,字符数组b存储十六进制的 16个数字符,整型数组C存储泽出的十六进制数的各位数值。从整数n译出它的各位十六进制数值,需采用除16取余的方法,即求n除16 的余。得到它的十六进制的个位数,接着将n除以16.在n不等于0的情况下循环,能顺序求出n的十六进制的个位数、十位数、百位数等等。程序中变量base已预置16,所以在第一个空框处可填代码nose或n.当n的十六进制数的个位、十位、百位等数字依次存放于数组C中后,就从最高位至最低位,参照数组c的内容d(以其内容为下标),取十六进制数字符表中的字符b[d]输出。所以在第二个空框处可填入代码[d].

  4.3 程序分析题

  1.阅读程序,写出程序运行结果。,

  main()

  { static int a[][3]={9,7,5,3,l,2,4,6,8};

  int i,j,sl=0,s2=0;

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

  for(j=0;j<3;j++)

  { if(i==j) s1=s1+a[j];

  if(i+j== 2) s2=s2+a[j];

  }

  printf(“%d\n%d\n”, sl,s2);

  }

  「解」已知数组。共有3行3列席一行依次是9,7,5;每二行是3,1,2;第三行是4,6,8.程序引用数组元素的游标变量是i和j,外循环控制变量i是数组的行下桥,内循环控制变量j是数组的列下标。循环体的工作是将数组的某些元素累计到sl,某些元素累计到S2.将行下标i和列下标j相同的元素累计到sl,sl=a[0][0]+a[l][1]+a[2][2].将行下标i与列下标j的和为 2的元素累计到 s2,s2=a[0][2]+a[l][l]+a[2][0].所以sl是18,s2是10.程序输出:

  18

  10

?2013年高教自考网络辅导课程招生简章

?2013年1月自考报名 

更多信息请访问:自学考试频道    自学考试论坛

分享到: 编辑:环球网校

资料下载 精选课程 老师直播 真题练习

自学考试资格查询

自学考试历年真题下载 更多

自学考试每日一练 打卡日历

0
累计打卡
0
打卡人数
去打卡

预计用时3分钟

自学考试各地入口
环球网校移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载

返回顶部