虎奔等级考试真题解读Word文件下载.docx

上传人:b****5 文档编号:18129248 上传时间:2022-12-13 格式:DOCX 页数:33 大小:27.74KB
下载 相关 举报
虎奔等级考试真题解读Word文件下载.docx_第1页
第1页 / 共33页
虎奔等级考试真题解读Word文件下载.docx_第2页
第2页 / 共33页
虎奔等级考试真题解读Word文件下载.docx_第3页
第3页 / 共33页
虎奔等级考试真题解读Word文件下载.docx_第4页
第4页 / 共33页
虎奔等级考试真题解读Word文件下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

虎奔等级考试真题解读Word文件下载.docx

《虎奔等级考试真题解读Word文件下载.docx》由会员分享,可在线阅读,更多相关《虎奔等级考试真题解读Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。

虎奔等级考试真题解读Word文件下载.docx

999||x<

0)

  { printf("

Pleaseinput(0<

x<

=999):

"

);

scanf("

%d"

&

x);

}

  printf("

\nTheresultis:

%d\n"

fun(x));

}。

【微答案】

(1)0  

(2)x  (3)t++

【微分析】

填空1:

变量n用于存放符合条件的整数的个数,应赋初值为0。

填空2:

根据题目要求,确定循环变量t的取值范围t<

=x。

填空3:

循环变量t自增1操作。

二、程序改错题

给定程序MODI1.C中函数fun的功能是:

先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。

例如:

当s所指的字符串为:

"

ABCDE"

时,则t所指的字符串应为:

EDCBAABCDE"

请改正程序中的错误,使它能得出正确的结果。

不要改动main函数,不得增行或删行,也不得更改程序的结构!

string.h>

voidfun(char*s,char*t)

{

/************found************/

  inti;

  i=0;

  sl=strlen(s);

  for(;

i<

sl;

i++)

    t[i]=s[sl-i];

  for(i=0;

    t[sl+i]=s[i];

  t[2*sl]='

\0'

;

{ chars[100],t[100];

\nPleaseenterstrings:

%s"

s);

  fun(s,t);

Theresultis:

%s\n"

t);

(1)inti,sl;

(2)t[i]=s[sl-i-1];

(1)变量s1没有定义。

(2)该循环实现将s串中的字符逆序存入t串中,t[i]对应s串中的s[sl-i-1]。

三、程序设计题

函数fun的功能是:

将a、b中的两个两位正整数合并形成一个新的整数放在c中。

合并的方式是:

将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。

例如,当a=45,b=12。

调用该函数后,c=1425。

部分源程序存在文件PROG1.C中。

数据文件IN.DAT中的数据不得修改。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

voidfun(inta,intb,long*c)

 

main()/*主函数*/

{ inta,b;

longc;

Inputab:

  scanf("

%d%d"

&

a,&

b);

  fun(a,b,&

c);

%ld\n"

c);

  *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;

本题的主要问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。

由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。

得到后对应乘以1000、100、10、1就可得到c的千位数、百位数、十位数和个位数。

使用c时要进行指针运算。

找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;

例如,当x值为5时,100~999之间各位上数字之和为5的整数有:

104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。

共有15个。

当x值为27时,各位数字之和为27的整数是:

999。

只有1个。

  n=0;

=__1__){

    s1=t%10;

s2=(__2__)%10;

    if(s1+s2+s3==__3__)

    t++;

  while(x<

Pleaseinput(x>

0):

(1)999  

(2)t/10  (3)x

题目要求找出100~999之间符合要求的数,所以while语句的循环条件是t<

=999。

变量s2存放三位数的十位,取出三位数十位数值的方法为s2=(t/10)%10。

题目需要判断各位上数字之和是否为x,所以if语句条件表达式是s1+s2+s3==x。

从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。

高位仍在高位,低位仍在低位。

例如,当s中的数为:

7654321时,t中的数为:

642。

voidfun(longs,longt)

{ longsl=10;

  s/=10;

  *t=s%10;

  while(s<

0)

  { s=s/100;

    *t=s%10*sl+*t;

    sl=sl*10;

{ longs,t;

\nPleaseenters:

%ld"

s);

  fun(s,&

t);

(1)voidfun(longs,long*t)

(2)while(s>

函数的形参类型应与实参类型相同,主函数中函数fun()的调用方式说明其参数应为指针类型,所以形参t应定义为long*t。

while循环的功能是,每循环一次就从s中的数上取出一位进行运算,直到取完为止,所以循环条件为s>

0。

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

按分数的高低排列学生的记录,高分在前。

部分源程序在文件PROG1.C文件中。

#defineN16

typedefstruct

{ charnum[10];

  ints;

}STREC;

voidfun(STRECa[])

  STRECtmp;

  inti,j;

  for(i=0;

i<

N;

    for(j=i+1;

j<

j++)

    { /*请按题目要求完成以下代码*/

{ STRECs[N]={{"

GA005"

85},{"

GA003"

76},{"

GA002"

69},{"

GA004"

85},

        {"

GA001"

91},{"

GA007"

72},{"

GA008"

64},{"

GA006"

87},

GA015"

GA013"

GA012"

GA014"

91},

GA011"

66},{"

GA017"

GA018"

GA016"

72}};

FILE*out;

  fun(s);

Thedataaftersorted:

\n"

  for(i=0;

i<

N;

  { if((i)%4==0)printf("

    printf("

%s%4d"

s[i].num,s[i].s);

  out=fopen("

c:

\\test\\out.dat"

"

w"

);

  { if((i)%4==0&

&

i)fprintf(out,"

    fprintf(out,"

%4d"

s[i].s);

  fprintf(out,"

  fclose(out);

  STRECt;

  for(i=1;

i++)/*用冒泡法进行排序,进行N-1次比较*/

    for(j=0;

j<

N-1;

j++)/*在每一次比较中要进行N-1次两两比较*/

      if(a[j].s<

a[j+1].s)

      {t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}/*按分数的高低排列学生的记录,高分在前*/

对N个数进行排序的算法很多,其中最简单的排序算法是冒泡算法。

利用双层for循环嵌套和一个if判断语句来实现,外层循环用来控制需比较的轮数,内层循环用来控制两两比较。

将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。

例如,从主函数输入一个整数:

27638496,函数返回值为:

26846。

unsignedlongfun(unsignedlongn)

{ unsignedlongx=0,s,i;

intt;

  s=n;

  i=__1__;

  while(__2__)

  { t=s%10;

    if(t%2==0){

      x=x+t*i;

i=__3__;

    s=s/10;

  returnx;

{ unsignedlongn=-1;

  while(n>

99999999||n<

n<

100000000):

n);

fun(n));

(1)1  

(2)s>

0  (3)i*10

变量i用来控制被取出的偶数在新数中的位置,应赋初值1。

while语句的循环条件是s>0。

变量i用来标识个位、百位和千位等。

输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。

#defineM5

intfun(intn,intxx[][])

{ inti,j,sum=0;

  printf("

\nThe%dx%dmatrix:

M,M);

  for(i=0;

M;

i++)

  { for(j=0;

j++)

      printf("

%f"

xx[i][j]);

  for(i=0;

n;

    sum+=xx[i][i]+xx[i][n-i-1];

  return(sum);

main()

{ intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},

         {6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

  printf("

\nThesumofallelementson2diagnalsis%d."

fun(M,aa));

(1)intfun(intn,intxx[][M])

(2)printf("

xx[i][j]);

(1)当用数组作为函数的形参时,可以不定义数组的行数,但一定要定义数组的列数。

(2)该处错误比较隐蔽,一般C语言上机考试很少涉及printf函数中的错误,此处只要明白"

d"

和"

f"

的区别就可以了。

格式字符d表示以带符号的十进制形式输出整数(正整数不输出符号);

格式字符f表示以小数形式输出单精度、双精度数据,隐含输出6位小数。

将a、b中的两个两位正整数合并形成一个新的整数放在c中。

合并的方式是:

将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。

调用该函数后,c=4251。

{ 

*c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;

本题中主要的问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。

得到后对应乘以1000、100、10、1,就可得到c的千位数、百位数、十位数和个位数。

注意使用c时要进行指针运算。

将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。

例如,输入一个整数:

64862。

{ unsignedlongx=0;

  while(n)

  { t=n%10;

    if(t%2==__1__)

      x=__2__+t;

    n=__3__;

(1)0  

(2)10*x(3)n/10

定义变量t用来存放某数的各个位数值,此处判断t是否为偶数,即对2求余结果是否为0。

将t作为x的个位数,原来x的各个位上升1位,即x=10*x+1。

每循环一次,通过除法运算,去掉数值最后一位。

将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。

高位仍在高位,低位仍在低位。

87653142时,t中的数为:

7531。

voidfun(longs,long*t)

{ intd;

  longsl=1;

  t=0;

  while(s>

  { d=s%10;

    if(d%2==0)

    { *t=d*sl+*t;

      sl*=10;

    s/=10;

【微答案】

(1)*t=0;

(2)if(d%2!

=0)或if(d%2==1)

(1)由函数定义可知,变量t是指针变量,所以对t进行赋初值0是不对的。

因为t指向的是存放新数的变量,所以此处应给新数赋初值0,即*t=0。

(2)变量d表示数s各个位上的数,此处的if条件应为判断d是否为奇数。

编写一个函数fun,它的功能是:

实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

例如,分别输入下面两个字符串:

FirstString--

SecondString

程序输出:

FirstString--SecondString

voidfun(charp1[],charp2[])

{ chars1[80],s2[40];

Enters1ands2:

%s%s"

s1,s2);

s1=%s\n"

s1);

s2=%s\n"

s2);

Invokefun(s1,s2):

  fun(s1,s2);

Afterinvoking:

  prin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1