首页IT科技二级c语言填空题保存就行了(计算机等级考试二级C语言程序设计专项训练题——程序填空题(三))

二级c语言填空题保存就行了(计算机等级考试二级C语言程序设计专项训练题——程序填空题(三))

时间2025-06-20 16:59:52分类IT科技浏览3378
导读:21、函数fun的功能是:不断从终端读入整数k,用变量a统计大于0的个数,用变量b来统计小于0的个数,当输入0时结束输入,并通过形参px和py把统计的数据传回主函数进行输出。...

21             、函数fun的功能是:不断从终端读入整数k            ,用变量a统计大于0的个数                   ,用变量b来统计小于0的个数      ,当输入0时结束输入         ,并通过形参px和py把统计的数据传回主函数进行输出            。

注意:部分源程序给出如下                   。请勿改动函数main()和其他函数中的任何内容                   ,仅在fun()函数的横线上填入所编写的若干表达式或语句      。

1】a=0,b=0,k 【2】k!=0 (或k) 【3scanf("%d",&k) 解析:函数中有3个局部变量          ,且a和b需要赋初值0      ,因此                  ,【1】处填写“a=0,b=0,k             ”         。循环输入数据的结束条件为K==0             ,故【2】处填写“k!=0                  ”                   。循环中处理了输入的数据后   ,需要再输入下一个数据                  ,故【3】处填写“scanf("%d",&k)      ”          。

参考答案及解析

22                  、请补充main()函数                ,该函数的功能是:输入两个正整数num1和num2,求这两个数的最大公约和最小公倍数      。

例如               ,若输入的两个正整数为12                   ,24   ,则它们的最大公约数为12            ,最小公倍数为4                  。

注意:部分源程序给出如下             。请勿改动main()函数和其他函数中的任何内容                   ,仅在main()函数的横线上填入所编写的若干表达式或语句   。

#include <stdio.h> int main() { int a,b,num1,num2,t; printf("\nInput two numbers:\n"); scanf("%d %d",&num1,&num2); a=num1; b=num2; while (________) //【1】 { t=________; //【2】 a=b; b=t; } printf("Greatest common divisor:%d\n",a); printf("Least common multiple:%d\n",________); // 【3】 return 0; }
【1】b!=0 【2】 a%b 【3】num1*num2/a 解析:采用辗转相除法求两个整数a和b的最大公约数                  。显然t=a%b      ,因此【2】处填写“a%b          ”         ,由于程序中a=b                   ,b=t          ,且最大公约数保存在a中      ,则结束条件为b==0                  ,因此【1】处填写“b!=0                   ”                。【3】处填写求最小公倍数的式子“num1*num2/a         ”。

参考答案及解析

23      、请补充main()函数             ,该函数的功能是:如果数组arr的前一个元素比后一个元素小   ,则把它保存在数组bb中并输出               。

例如                  ,若数组中的元素为:“40                ,68,62               ,33                   ,35   ,52            ,48                   ,95      ,66         ,73      ”                   ,则输出:“40          ,33      ,35                  ,48             ,66                   ”                   。

注意:部分源程序给出如下   。请勿改动函数main()和其他函数中的任何内容   ,仅在main()函数的横线上填入所编写的若干表达式或语句            。

#include <stdio.h> #define M 10 int main() { int i,n=0; int arr[M]={40,68,62,33,35,52,48,95,66,73}; int bb[M]; for (i=0; i<________;i++) // 【1】 if (arr[i]<arr[i+1]) ________; // 【2】 printf("\n***displaybb***\n"); for (i=0;i<n;i++) printf("bb[%d]=%2d ",________); //【3】 return 0; }
【1】M-1 【2】bb[n++]=arr[i] 【3】i,bb[i] 解析:由整个for循环可知                  ,变量i为数组arr的下标                ,题目中要求取出前一个元素比后一个元素小的元素,所以只需要判断前M-1个元素即可                   。因此               ,【1】处填“M-1            ”;如果第i个元素比第i+1个元素小                   ,将第i个元素放入数组bb中   ,因此            ,【2】处填“bb[n++]=arr[i]   ”      。循环执行完后                   ,要输出数组bb中的每一个元素的下标及元素值         。因此      ,【3】处填“i         ,bb[i]                   ”                   。

参考答案及解析

24          、函数fun的功能是:根据所给的年                   、月         、日                   ,计算出该日是这一年的第几天          ,并作为函数值返回          。

例如      ,若输入:2019 10 1                  ,则程序输出:2019年10月1日是该年的第274天      。

注意:部分源程序给出如下                  。请勿改动函数main()和其他函数中的任何内容             ,仅在fun()函数的横线上填入所编写的若干表达式或语句             。

#include <stdio.h> int fun(int year,int month,int day) { int table[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int s=0,i; for (i=1;i<________; i++) // 【1】 s=s+________; // 【2】 s=s+day; if ((________________) && month>2) // 【3】 s=s+1; return s; } int main() { int year,month,day,days; scanf("%d%d%d",&year,&month,&day); days=fun(year,month,day); printf("%d年%d月%d日是该年第%d天   。\n",year,month,day,days); return 0; }
1month2table[i] 【3year%4==0 && year%100!=0 || year%400==0 解析:为计算当前日期是该年的第几天   ,需要先累计前month-1个月的总天数                  ,故【1】处填写“month               ”                ,【2】处填写第i月的天数“table[i]”                  。如果是闰年,需要加1天               ,故【3】处填写闰年的判断条件“year%4==0 && year%100!=0 || year%400==0                ”                。

参考答案及解析

25      、函数fun()的功能是:计算并输出给定10个数的方差。n个数的方差的计算公式为:

(其中                   ,x为n个数据的平均值)

例如   ,给定的10个数为12.0            ,9.0                   ,26.0      ,5.0         ,6.0                   ,31.0          ,9.0      ,3.0                  ,8.0             ,18.0   ,输出为S=8.877500               。

注意:部分源程序给出如下                   。请勿改动函数main()和其他函数中的任何内容                  ,仅在fun()函数的横线上填入所编写的若干表达式或语句   。

#include <stdio.h> #include <math.h> double fun(double x[],int n) { int i; double fc,avg=0.0,sum=0.0,abs=0.0; for (i=0;i<n;i++) sum+=________; // 【1】 avg=sum/n; for (i=0;i<n;i++) abs+=________; // 【2】 fc=________; // 【3】 return fc; } int main() { double x[10]={12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0}; printf("s=%lf\n",fun(x,10)); return 0; }
1】x[i]2】(x[i]-avg)*(x[i]-avg) 【3sqrt(abs/n) 解析:由函数fun()可知                ,变量sum中存放n个数的和,因此               ,【1】处填“x[i]                  ”;然后求其平方差                   ,因此   ,【2】处填“ (x[i]-avg)*(x[i]-avg)   ”;后求n个数的方差            ,因此                   ,【3】处填"sqrt(abs/n)             ”            。

参考答案及解析

26                   、函数fun()的功能是求n的阶乘                   。

注意:部分源程序给出如下      。请勿改动函数main()和其他函数中的任何内容      ,仅在fun()函数的横线上填入所编写的若干表达式或语句         。

#include <stdio.h> long fun(int n) { if (________n>1) // 【1】 return n*fun(________n-1); // 【2】 else if (________n==1) // 【3】 return 1; } int main() { int n=10; printf("%d!=%ld\n",n,fun(n)); return 0; }
【1】n>1 【2】n-1 【3】n==1   解析:本题求阶乘是由函数递归调用来实现的                   。阶乘公式为N!=N*(N-1)!         ,因此【1】处填“n>1                  ”;由递归的性质可知【2】处填“n-1      ”;直到N=1时结束递归调用                   ,因此【3】处填“n==1          ”          。

参考答案及解析

27            、给定程序的功能是计算score数组中m个人的平均成绩aver          ,将低于aver的成绩放在数组below中      ,通过函数名返回人数      。

例如                  ,当score[]={10             ,20   ,30                  ,40                ,50,60               ,70                   ,80   ,90}            ,m=9时                   ,函数返回的人数应该是4      ,below={10         ,20                   ,30          ,40}                  。

注意:部分源程序给出如下             。请勿改动main()函数和其他函数中的任何内容      ,仅在横线上填入所编写的若干表达式或语句   。

#include <stdio.h> int fun(int score[],int m,int below[]) { int i,j=0; float aver=0.0; for (i=0; i<m;i++) aver+=________score[i]; // 【1】 aver/=(float)m; for (i=0;i<m;i++) if (score[i]<aver) ________ =score[i]; // 【2】 return j; } int main() { int i,n,below[9]; int score[9]={10,20,30,40,50,60,70,80,90}; n=fun(score,9,below); printf("Below the average score are:%d\n",n); for (i=0; i<n;i++) printf("%d ",________below[i]); // 【3】 return 0; }
1】score[i]或*(score+i) 【2】below[j++]3】below[i]或*(below+i) 解析:fun()函数的功能是返回低于平均成绩的人数                  ,通过for循环遍历数组score             ,求和存入变量aver   ,因此第【1】处填“score[i]                   ”或“*(score+i)         ”;然后计算出平均值                  。第二个for循环将低于平均成绩的数据赋值数组below                  ,同时需记录所赋数据的个数j                ,因此第【2】处填“below[j++]      ”                。在主函数中输出低分考生个数,n值即fun()函数返回值也就是低分考生的人数值。后利用循环输出below中的结果               。因此第【3】处填“below[i]                   ”或“*(below+i)            ”

参考答案及解析

28   、给定程序的功能是:把一个字符串中的所有小写字母字符全部转换成大写字母字符               ,其他字符不变                   ,结果保存原来的字符串中                   。

例如   ,当str[M]="abcdef123ABCD"            ,结果输出:"ABCDEF123ABCD"   。

注意:部分源程序给出如下            。请勿改动main()函数的任何内容                   ,仅在横线上填入所编写的若干表达式或语句                   。

#include <stdio.h> #define M 80 int main() { int j; char str[M]="abcdef123ABCD"; char *pf=str; printf("***originalstring***\n"); puts(str); ________; // 【1】 while(*(pf+j)) { if(*(pf+j)>=a&&*(pf+j)<=z) { *(pf+j)= ________ ; // 【2】 } ________; // 【3】 } printf("****newstring****\n"); puts(str); return 0; }
【1】j=0 【2】*(pf+j)-32 【3】j++ 解析:由程序中可知      ,变量j为字符数组的下标         ,其初始值为0      。因此【1】处填“j=0   ”;大写字母的ASCIl码值比小写字母的ASCII码值小32                   ,要将小写字母变为大写字母          ,因此      ,【2】处填“*(pf+j)-32                   ”;要将字符串数组中的所有小写字母变为大写字母                  ,需要检查其中的每一个字符             ,因此   ,【3】处填“j++               ”         。

参考答案及解析

29                   、str是一个由数字和字母字符组成的字符串                  ,由变量num传入字符串的长度                   。

函数proc()的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中                ,函数返回数组bb的长度          。

例如,str="abc123de45f967"               ,结果为:1234567      。

注意:部分源程序给出如下                  。请勿改动main()函数和其他函数中的任何内容                   ,仅在函数proc()的横线上填入所编写的若干表达式或语句             。

#include <stdio.h> #define M 80 int proc(char str[],int bb[],int num) { int i,n=0; for (i=0; i<num; i++) { if (________________) // 【1】 { bb[n]= ________________; // 【2】 n++; } } return ________; // 【3】 } int main() { char str[M]; int bb[M]; int num=0,n,i; gets(str); while (str[num]) num++; n=proc(str,bb,num); printf("bb="); for (i=0; i<n; i++) printf("%d",bb[i]); printf("\n"); return 0; }
1str[i]>=0&&str[i]<=92str[i]-03】n 解析:题目中要求把字符串str中的数字字符转换成数字并存放到整型数组bb中   。首先   ,应判断字符串str中每个字符是否是数字字符                  。因此            ,【1】处填“str[i]>=0&&str[i]<=9”将每一个数字字符转化为数字放在整型数组bb中                   ,因此      ,【2】处填“str[i]-0                ”;由函数proc()可知         ,变量n中存放整型数组bb中的元素个数                   ,要返回到主函数当中          ,因此      ,【3】处填“n                  ”                。

参考答案及解析

30               、函数fun的功能是:在有n个元素的结构体数组std中                  ,查找有不及格科目的学生             ,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。例如   ,主函数中给出了4名学生的数据                  ,则程序运行的结果为:

学号:N1002 学号:N1006

共有2位学生有不及格科目

注意:部分源程序给出如下               。请勿改动函数main()和其他函数中的任何内容                ,仅在fun()函数的横线上填入所编写的若干表达式或语句                   。

#include <stdio.h> typedef struct { char num[8]; double score[2]; }STU; int fun(STU std[],________) // 【1】 { int i,k=0; for (i=0;i<n;i++) if (________________) // 【2】 { k++; printf("学号:%s ",std[i].num); } return ________; // 【3】 } int main() { STU std[4]={"N1001",76.5,82.0, "N1002",53.5,73.0, "N1005",80.5,66.0, "N1006",81.5,52.0}; printf("\n共有%d位学生有不及格科目   。\n",fun(std,4)); return 0; }
1】int n 【2】std[i].score[0]<60 || std[i].score[1]<603】k 解析:由main中的调用可知,函数fun有两个参数               ,第2个参数为结构体数组中元素个数                   ,故【1】处填写形参定义“int n   ”            。【2】处填写判断条件   ,两门功课中至少有1门不及格                   。【3】处返回不及格人数k      。

参考答案及解析

声明:本站所有文章            ,如无特殊说明或标注                   ,均为本站原创发布         。任何个人或组织      ,在未征得本站同意时         ,禁止复制、盗用                、采集                  、发布本站内容到任何网站   、书籍等各类媒体平台                   。如若本站内容侵犯了原著者的合法权益                   ,可联系我们进行处理          。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
electron打包deb(electron-builder打包配置说明)