二级C语言填空题练习题及答案解析4.docx

上传人:b****8 文档编号:10958651 上传时间:2023-02-24 格式:DOCX 页数:13 大小:18.37KB
下载 相关 举报
二级C语言填空题练习题及答案解析4.docx_第1页
第1页 / 共13页
二级C语言填空题练习题及答案解析4.docx_第2页
第2页 / 共13页
二级C语言填空题练习题及答案解析4.docx_第3页
第3页 / 共13页
二级C语言填空题练习题及答案解析4.docx_第4页
第4页 / 共13页
二级C语言填空题练习题及答案解析4.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

二级C语言填空题练习题及答案解析4.docx

《二级C语言填空题练习题及答案解析4.docx》由会员分享,可在线阅读,更多相关《二级C语言填空题练习题及答案解析4.docx(13页珍藏版)》请在冰豆网上搜索。

二级C语言填空题练习题及答案解析4.docx

二级C语言填空题练习题及答案解析4

1.请补全main函数,该函数的功能是:

从键盘上输入3个整数,然后找出最大的数并输出。

  main()

  {inta,b,c,max;

  clrscr();

  printf("\nInputthreenumbers:

\n");

  scanf("%d,%d,%d",&a,&b,&c);

  printf("Thethreenumbersare:

%d,%d,%d\n",a,b,c);

  if(a>b)

  ___1___;

  els

  ___2___;

  if(max

  ___3___;

  printf("max=%d\n",max);

  }

  第一处:

max=a

  第二处:

max=b

  第三处:

max=c

  解析:

  若a>b则a较大,将其放入max中;否则将b存于max。

  此时,max中存放的就是前两个数中较大的,再将max与c比较。

  2.函数fun的功能是:

从三个形参a,b,c中找出中间的那个数,作为函数值返回。

  intfun(inta,intb,intc)

  {intt;

  t=(a>b)?

(b>c?

b:

(a>c?

c:

___1___)):

((a>c)?

___2___:

((b>c)?

c:

___3___))

 4.请补全main函数,该函数的功能是:

从键盘输入一组整数,使用条件表达式找出最大的整数,当输入的整数为0时结束。

  main()

  {intnum[N];

  inti=-1;

  intmax=0;

  clrscr();

  printf("\nInputintegernumber:

\n");

  do

  {i++;

  printf("num[%d]=",i);

  scanf("%d",___1___);

  max=___2___num[i]:

max;

  }while(___3___);

  printf("max=%d\n",max);

  }

  第一处:

&num[i]

  第二处:

max

  第三处:

num[i]!

=0

  解析:

  掌握求最值的一般方法:

首先假定第一个数最大,从第二个开始与最大值进行比较,若比最大值还大,则替换;否则,保持不变。

  此题:

掌握条件表达式的书写、含义。

  Max=max

  若vmax

  i=-1i++循环条件,正确理解。

  5.请补全fun函数,该函数的功能是:

求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

  voidfun(int*s,intt,int___1___)

  {

  inti,max;

  max=s[0];

  for(i=0;i

  if(___2___)

  {

  max=s[i];

  *k=___3___;

  }

  }

  第一处:

*k

  第二处:

s[i]>max

  第三处:

i

  解析:

  算法思想与第19题相同。

  记住:

函数的参数有两种类型:

值参、变参。

值参相当于一个普通的局部变量。

  要通过函数的参数返回值(或返回多个值),需要使用变参,即参数是指针类型。

  return仅能返回一个值。

  搞清指针、地址、指针所指向变量的值间的关系。

  int*S相当于intS[]

1)voidfun(intaa[])

  2){inti,j,t;

  3)intmax=0,min=0;

  4)for(i=0;i

  5){

  6)if(___1___)

  7)max=i;

  8)if(___2___)

  9)min=i;

  10)}

  11)t=aa[max];

  12)___3___;

  13)aa[min]=t;

  14)}

  第一处:

aa[max]

  第二处:

aa[min]>aa[i]

  第三处:

aa[max]=aa[min]

  解析:

  算法思想与第19题相似。

  算法思想:

假定最大、最小值是同一个元素(第一个);接下来将后面的元素依次开始比较,如果比最大值还大,则修改最大值;如果比最小值还小,则修改最小值。

  此题保存的是最大最小值的下标。

  最后,通过变量t,交换最大最小值。

  第4行:

循环变量i的值可以从1开始。

  7.给定程序中,函数fun的功能是:

将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。

  #include

  typedefstruct{

  charName[4];

  intage;

  }STD;

  STDfun(STDstd[],intn)

  {STDmax;

  inti;

  max=___1___;

  for(i=1;i

  if(max.age<___2___)max=std[i];

  returnmax;

  }

  main()

  {STDstd[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15};

  STDmax;

  max=fun(std,5);

  printf("\nTheresult:

\n");

  printf("\nName:

%s,Age:

%d\n",___3___,max.age);

  }

  第一处:

*std

  第二处:

std[i].age

  第三处:

max.name

  解析:

  求最大值。

  搞清结构体变量类型声明、变量声明、初始化、赋值、输入、输出的方法。

  Max=*std也可以max=std[0]即结构体变量之间可相互赋值。

  但不能整体输入输出。

仅能一个数据项、一个数据项地单独进行。

 

  returnt;

  }

  第一处:

a

  第二处:

a

  第三处:

b

  解析:

条件表达式的理解。

  3.请补全fun函数,该函数的功能是把从键盘输入的3个整数按从小到大输出。

  main()

  {intx,y,z,t;

  clrscr();

  printf("Inputx,y,z\n");

  scanf("%d%d%d",&x,&y,&z);

  if(___1___)

  {

  t=x;

  x=y;

  y=t;

  }/*交换x,y的值*/

  if(___2___)

  {

  t=z;

  z=x;

  x=t;

  }/*交换x,z的值*/

  if(___3___)

  {

  t=y;

  y=z;

  z=t;

  }/*交换z,y的值*/

  第一处:

x>y

  第二处:

x>z

  第三处:

y>z

  解析:

  3个数排序,两两比较,小的放前,大者放后。

  交换。

8.请补全main函数,该函数的功能是:

如果数组aa的前一个元素比后一个元素小,则把它保存在数组bb中并输出。

  main()

  {inti,n=0;

  intaa[N]={45,55,62,42,35,52,78,95,66,73};

  intbb[N];

  clrscr();

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

  if(aa[i]

  ___2___;

  printf("\n***displaybb***\n");

  for(i=0;i

  printf("bb[%d]=-",___3___);

  }

  第一处:

N-1

  第二处:

bb[n++]=aa[i]

  第三处:

i,bb[i]

  解析:

  由于bb[]数组中实际元素个数未知,故需要边比较,边统计。

  n作为bb[]数组元素的个数,开始n=0,比较aa[]中相邻两个元素,满足条件则将其放入bb[]中,且个数加1。

  9.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回主函数。

  typedefstructss

  {charnum[10];ints;}STU;

  fun(STUa[],STU*s)

  {___1___h;

  inti;

  h=a[0];

  for(i=1;i

  if(a[i].s

  *s=___3___;

  }

  第一处:

STU

  第二处:

h

  第三处:

h

  解析:

  记住:

要想通过函数的参数返回结果,该参数需要使用指针类型或者数组。

  求最小值,算法思想同19题。

  第三处:

也可以是s=&h指针赋值。

10.给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。

  #include

  floatfun(float___1___)

  {

  return3.14159*___2___/2.0;

  }

  main()

  {floatx;

  printf("Enterx:

");

  scanf("%f",___3___);

  printf("s=%f\n",fun(x));

  }

  第一处:

r

  第二处:

r*r

  第三处:

&x

  解析:

这题太简单了。

  11.请补全main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。

方程的系数a,b,c从键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a,b,c的值。

  #include

  #include

  main()

  {floata,b,c,disc,x1,x2;

  //clrscr();//clearscreen

  do

  {

  printf("Inputa,b,c:

");

  scanf("%f,%f,%f",&a,&b,&c);

  disc=b*b-4*a*c;

  if(disc<0)

  printf("disc=%f\nInputagain!

\n",disc);

  }while(___1___);

  printf("*******theresult*******\n");

  x1=___2___;

  x2=___3___;

  printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);

  }

  第一处:

disc<0

  第二处:

(-b+sqrt(disc))/(2*a)

  第三处:

(-b-sqrt(disc))/(2*a)

  解析:

  搞清while循环与do……while的差别。

  表达式的正确书写。

加上括号。

  此题有一定的问题a=0?

12.请补全main函数,该函数的功能是:

输出方程A+B=52,A+2B=60的一组正整数解,

  main()

  {inti,j,k;

  clrscr();

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

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

  if(___1___)

  printf("A=-,B=-",___2___);

  }

  第一处:

i+j==52&&i+2*j==60

  第二处:

i,j

  解析:

  方程:

满足条件的组合就是方程的解。

  枚举法。

  当方程的个数少于未知数的个数时,一般使用枚举法(多重循环)

  13.请补全fun函数,该函数的功能是,判断一个年是否为闰年。

  intfun(intn)

  {intflag=0;

  if(n%4==0)

  {

  if(___1___)

  flag=1;

  }

  if(___2___)

  flag=1;

  return___3___;

  }

  第一处:

n%100!

=0

  第二处:

n%400==0

  第三处:

flag

  解析:

  条件表达式的正确书写。

  三个if可以缩成一个if

  if((n%4==0&&n_0!

=0)||n@0==0)。

前面的括号不加也可以,最好还是加上吧。

  flag起标记的作用。

  if(flag)等价于if(flag!

=0)

  if(!

flag)等价于if(flag==0)

  0为假,非0即为真。

14.给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:

成绩为60到69的人数存到b[0]中,成绩70到79的人数存到b[1],成绩为80到89的人数存到b[2],成绩90到99的人数存到b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到[5]中。

  voidfun(inta[],intb[],intn)

  {inti;

  for(i=0;i<6;i++)b[i]=0;

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

  if(a[i]<60)b[5]++;

  ___2___b[(a[i]-60)/10]++;

  }

  main()

  {inti,a[100]={93,85,77,68,59,43,94,75,98},b[6];

  fun(___3___,9);

  printf("theresultis:

");

  for(i=0;i<6;i++)printf("%d",b[i]);

  printf("\n");

  }

  第一处:

i<6

  第二处:

else

  第三处:

a,b

  解析:

  数组a实际有9个元素。

  数组b实际有6个元素。

  理解语句b[(a[i]-60)/10]++;的含义。

动手。

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

当前位置:首页 > 成人教育 > 电大

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

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