学历改变命运
24小时客服:4008135555/010-82335555
当前位置:首页 > 笔记串讲 > 自考“高级语言程序设计”习题答案详解(28

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

2007年09月04日    来源:   字体:   打印

  7.设有以下定义和语句,则*(*(p+2)+l)的值为__________.

  int a[3][2]={10,20,30,40,50,60},(*p)[2];

  p= a;

  「解」上述代码定义3行2列的二维数组a ,定义指向两个元素的一维数组指针p,并让p指向二维数组a的首行。则代码*(*(p+2)+l)中的p+2指向二维数组a的第2行a[2],*(p+2)指向a[2][o],*(p+2)+l指向a[2][l],*(*(p+2)+l)是引用a[2][l],其值是60.

  8.以下程序的功能是从键盘上输入若干个字符(以回车符作为结束)组成一个字符串存入一个字符数组,然后输出该字符数组中的字符串。请填空。

  # include

  # include

  main()

  { char str[81],*sptr;

  int i;

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

  { str=getchar();if(str==‘\n’) break;}

  str=____________;

  sptr=str;

  while(* sptr) putchar(* sptr______________);

  }

  「解」从键盘输入字符行,通过循环逐一输入字符,当发现输入字符是换行符时,结束循环。为了使输入的字符列变成字符串,必须在输入字符列之后,原存储换行符的元素改为存储字符串的结束标记符,需用代码 str=‘\0’ ,所以在第一框填入代码‘\0’。当要将存于字符数组str中的字符串通过循环逐一输出字符串的字符时,可以用字符指针sptr,让sptr遍历整个字符串,每次循环时,输出sptr所指字符,并让sptr增1,即可用代码*sptr++实现,所以在第二框填入代码++.

  5.3 程序分析题

  1.阅读下列程序,写出程序的输出结果。

  main()

  {char *a[6]={“AB”,“CD”,“EF”,“GH”,U“,”KL“};

  int i;

  for(i=0;i<4;i++) printf(“%s”, a);

  printf(“\n”);

  }

  「解」程序定义了有六个元素的字符指针数组a ,数组a 的各元素指向字符率常量。

  程序的for循环遍历了a的前四个元素,用字符率输出格式,输出指针数组a前四个元素所指的字符串。所以程序输出: ABCDEFGH.

  2.阅读下列程序,写出程序的主要功能。

  main()

  { int i,a[l0],*p=&a[9] ;

  for(i=0;i<10;i++) scanf(“%d”,&d);

  for(; p>=a; p——) printf(“%d\n”,*p) ;

  }

  「解」程序定义了有10个元素的整型数组a,另定义指针变量p,并让它指向a的更后一个元素a[9].执行代码的第一个循环是顺序输人数组a的10个元素。第二个循环利用指针p逆序遍历数组a,将数组a的各元素逆序输出。所以程序的功能是输入10个整数,并逆序输出这10个整数。

关闭