计算机二级C语言题库之程序填空
- 格式:docx
- 大小:16.74 KB
- 文档页数:8
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
第一处 struct student t;第二处 for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name) >0)2程序修改/**found**/q=p+i;/**found**/while(q>p)第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处 free(q);第二处 q=p->next;第三处 q=q->next;2.程序修改/**found**/p=j;/**found**/p=i;第三套1. 程序填空函数fun的功能是:逆置数组元素是的值。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。
形参n给出数组中数组中数据的个数。
第一处 for(i=0;i<n/2;i++)第二处 a[i]=a[n-1-i];第三处 a[n-i-1]=t;2程序修改/**found**/n=*p-‘0’;/**found**/n=n*8+*p-‘0’;第四套1.程序填空给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。
找到后通过函数值返回该结点在链表中所处的顺序号:若不存在值为ch的结点,函数值返回0.第一处 while(p!=0)第二处if(p->data==ch)return n;第三处 k=fun(head,ch);2. 程序修改/**found**/for(i=0,t=0;p[i];i++)/**found**/c[t]=’\0’;第五套1. 程序填空给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。
一、函数fun的功能是:不断从终端读入整数k,用变量a统计大于0的个数,用变量b来统计小于0的个数,当输入0时结束输入,并通过形参px和py把统计的数据传回主函数进行输出。
注意:部分源程序给出如下。
请勿改动函数main()和其他函数中的任何内容,仅在fun()函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>void fun(int *px,int *py){int ________; // 【1】scanf("%d",&k);while (________) // 【2】{if (k>0) a++;else b++;________; // 【3】}*px=a; *py=b;}int main(){int x,y;fun(&x,&y);printf("x=%d,y=%d\n",x,y);return 0;}参考答案:【1】a=0,b=0,k【2】k!=0 (或k)【3】scanf("%d",&k)解析:函数中有3个局部变量,且a和b需要赋初值0,因此,【1】处填写“a=0,b=0,k”。
循环输入数据的结束条件为K==0,故【2】处填写“k!=0”。
循环中处理了输入的数据后,需要再输入下一个数据,故【3】处填写“scanf("%d",&k)”。
二.请补充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的最大公约数。
3月全国计算机等级考试二级C语言上机题库(20~30套)考试频道小编收集整理计算机等级考试资料,免费提供给大家交流参考。
第二十一套1. 程序填空给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串右边的字符删去,只保留左边的k个字符。
ss所指字符串数组中共有N个字符串,且串小于M。
第一处void fun(char (*ss)[M], int k)第二处while (i第三处ss[i][k]=0;i++;}2. 程序修改给定程序MODI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。
例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。
/**found**/t=1;/**found**/return(2*s);3. 程序设计假定输入字符串中只包含字母和*号。
请编写函数fun,它的功能是:将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
函数fun中给出的语句仅供参考。
void fun(char*a,int n){int i=0,k=0;while(a[k]= =*)k++;if(kn){i=n;j=k;for(;a[j]!=0;j++)a[i++]=a[j];a[i]=0;}}第二十二套1. 程序填空给定程序中,函数fun的功能是:a所指43矩阵中第k行的元素与第0行元素交换。
例如:有下列矩阵1 2 34 5 67 8 910 11 12若k为2,程序执行结果为7 8 94 5 61 2 310 11 12第一处void fun(int (*a)[N],int k)第二处for(i=0;i第三处a[0][i]=a[k][i];2. 程序修改给定程序MODI1.C中函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符串按ASCII码升序排序后输出。
一、程序填空题1 [填空题]函数fun的功熊是:输出a所指数组中的前a个数据,要求每行输出5个数。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】填空1:每行输出5个数,即当下标值能整除5时换行。
填空2:输出换行符'\n'。
填空3:输出数组元素。
二、程序修改题2 [简答题]下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在W所指的数组中。
要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为“abcdabfabc”,t1所指串中的内容为“ab”,t2所指子串中的内容为“99”时,结果在W所指的数组中的内容应为“abcdabf99c”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】(1)此处要判断的是值的真假,而不是地址,所以改为while( * w)。
(2)c语言中关键字区分大小写,只需运行程序,就可以根据错误提示找到。
三. 程序设计题3 [简答题]请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于2)。
例如字符串:uvwxyz满足要求;而字符串:uvxwyz不满足要求。
注意:部分源程序存放在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
试题程序:参考解析:【参考答案】【解题思路】函数fun的功能是判断指针t指向的字符串是否是由连续递增的字母构成,返回值为整数,0代表不满足条件。
根据题目要求,字符串长度必须大于等于2,所以首先需要对t指向的字符串进行长度判断,小于2的字符串返回0。
3月全国计算机等级考试二级C语言上机题库(20~30套)3月全国计算机等级考试二级C语言上机题库(20~30套)考试频道小编收集整理计算机等级考试资料,免费提供给大家交流参考。
第二十一套1. 程序填空给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串右边的字符删去,只保留左边的k个字符。
ss所指字符串数组中共有N个字符串,且串小于M。
第一处void fun(char (*ss)[M], int k)第二处while (i第三处ss[i][k]=0;i++;}2. 程序修改给定程序MODI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。
例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。
/**found**/t=1;/**found**/return(2*s);3. 程序设计假定输入字符串中只包含字母和*号。
请编写函数fun,它的功能是:将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
函数fun中给出的语句仅供参考。
void fun(char*a,int n){int i=0,k=0;while(a[k]= =*)k++;if(kn){i=n;j=k;for(;a[j]!=0;j++)a[i++]=a[j];a[i]=0;}}第二十二套1. 程序填空给定程序中,函数fun的功能是:a所指43矩阵中第k行的元素与第0行元素交换。
例如:有下列矩阵1 2 34 5 67 8 910 11 12若k为2,程序执行结果为7 8 94 5 61 2 310 11 12第一处void fun(int (*a)[N],int k)第二处for(i=0;i第三处a[0][i]=a[k][i];2. 程序修改给定程序MODI1.C中函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符串按ASCII码升序排序后输出。
全国计算机等级考试C语言――填空题♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣注意:源程序存放在考生文件夹下的BLANK1.C中。
1.不得增行或删行,也不得更改程序的结构!2.请在程序下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣1.给定程序中,函数FUN的功能是:计算出带有头接点的单向链表中各结点数据域之和作为函数值返回。
#include <stdio.h>#include <stdlib.h>#define N 8typedef struct list{ int data;struct list *next;} SLIST;SLIST *creatlist(int *);void outlist(SLIST *);int fun( SLIST *h){ SLIST *p; int s=0;p=h->next;while(p){/**********************************found*********************************/s+= p->___1___; data/**********************************found*********************************/p=p->___2___; next}return s;}main( ){ SLIST *head;int a[N]={12,87,45,32,91,16,20,48};head=creatlist(a); outlist(head);/**********************************found*********************************/ printf("\nsum=%d\n", fun(___3___)); head}SLIST *creatlist(int a[ ]){ SLIST *h,*p,*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST));for(i=0; i<N; i++){ q=(SLIST *)malloc(sizeof(SLIST));q->data=a[i]; p->next=q; p=q;}p->next=0;return h;}void outlist(SLIST *h){ SLIST *p;p=h->next;if (p==NULL) printf("The list is NULL!\n");else{ printf("\nHead ");do{ printf("->%d", p->data); p=p->next; }while(p!=NULL);printf("->End\n");}}2.给定程序中,函数FUN的功能是:求出形参SS所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。
计算机二级C语言题库之程序填空找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1#include <stdio.h>#include<math.h>void main(){ int i,a,b,c;for(i=100;i<=999;i++){ a=i/100;_______1_______ // b=i%100/10;c=i%10;if (________2________) // a*a*a+b*b*b+c*c*c = = iprintf("%d is a Armstrong number!\n",i);}}输入1个整数后,输出该数的位数。
(例:输入3214则输出4,输入-23156则输出5)。
#include <stdio.h>void main(){ int n,k=0;scanf("%d",&n);while( _____1_____ ){ // n!=0k++;_____2_____; // n=n/10}printf("%d\n",k);}求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。
#include <stdio.h>#include <math.h>void main(){int n,s=0;scanf("%d",&n);______ 1 ______ // if (n<0) n=-n;while(n!=0) {______ 2 ______ // s+=n%10;n=n/10;}printf("%d\n",s);}调用函数f,将一个整数首尾倒置。
计算机二级C语言题库之程序填空找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1#include <stdio.h>#include<math.h>void main(){ int i,a,b,c;for(i=100;i<=999;i++){ a=i/100;_______1_______ // b=i%100/10;c=i%10;if (________2________) // a*a*a+b*b*b+c*c*c = = iprintf("%d is a Armstrong number!\n",i);}}输入1个整数后,输出该数的位数。
(例:输入3214则输出4,输入-23156则输出5)。
#include <stdio.h>void main(){ int n,k=0;scanf("%d",&n);while( _____1_____ ){ // n!=0k++;_____2_____; // n=n/10}printf("%d\n",k);}求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。
#include <stdio.h>#include <math.h>void main(){int n,s=0;scanf("%d",&n);______ 1 ______ // if (n<0) n=-n;while(n!=0) {______ 2 ______ // s+=n%10;n=n/10;}printf("%d\n",s);}调用函数f,将一个整数首尾倒置。
例如:若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。
#include <stdio.h>#include <math.h>long f(long n){ long m,y=0; m=fabs(n);while(m!=0) {y=y*10+m%10;____1____ // m=m/10 ;}if(n>=0) return y;else _____2_____ // return -y ;}void main(){printf("%ld\t",f(12345)); printf("%ld\n",f(-34567));}调用函数f,从字符串中删除所有的数字字符。
#include <stdio.h>#include <string.h>#include <ctype.h>void f(char *s){ int i=0;while(s[i]!='\0'){if(isdigit(s[i])) ____1____(s+i,s+i+1); // strcpy___2___ i++;} // else}void main(){ char str[80];gets(str); f(str); puts(str);}调用find函数在输入的字符串中查找是否出现"the"这个单词。
如果查到返回出现的次数,如果未找到返回0。
#include <stdio.h>int find(char *str){ char *fstr="the";int i=0,j,n=0;while (str[i]!='\0'){for(______1______) // j=0; j<3; j++if (str[j+i]!=fstr[j]) break;if (______2______) n++; // j>=3i++;}return n;}void main(){ char a[80];gets(a);printf("%d",find(a));}输入的一个小写字母,将字母循环后移5个位置后输出。
例如:"a"变成"f","w"变成"b"。
#include <stdio.h>void main(){ char c;c=getchar();if(______1______) // c>='a'&&c<='u'c=c+5;elseif (c>='v' && c<='z')______2______ // c=(c-'a'+5)%26+'a';putchar(c);}将字符串s中所有的字符'c'删除。
#include <stdio.h>void main(){ char s[80];int i,j;gets(s);for(i=j=0; ______1______; i++) // s[i] != '\0'if(s[i] != 'c'){ s[j]=s[i];______2______ // j++;}s[j]='\0';puts(s);}对x=1,2,……,10,求f(x)=x*x-5*x+sin(x)的最大值。
#include <stdio.h>#include <math.h>#define f(x) x*x-5*x+sin(x)void main(){ int x; float max;______1______ // max=f(1);for(x=2;x<=10;x++)______2______ // if (f(x)>max) max=f(x);printf("%f\n",max);}输入三个整数,按由小到大的顺序输出这三个数。
#include <stdio.h>void swap(______1______) // int *pa, int *pb{ /*交换两个数的位置*/int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){ int a,b,c,temp;scanf("%d%d%d",&a,&b,&c);if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(______2______) // if ( a>b )swap(&a,&b);printf("%d,%d,%d",a,b,c);}调用函数f,去除数组中的负数,输入数组x[7],输出结果为:1 3 4 6 #include <stdio.h> // 数组元素的删除void f(int *a,int *m){ int i, j ;for(i=0;i<*m;i++)if(a[i]<0) {for(j=i--;j<*m-1;j++) a[j]=a[j+1];_____1_____; // *m = *m-1;}}void main(){ int i,n=7,x[7]={1,-2,3,4,-5,6,-7};_______2_______; // f (x, &n) ;for(i=0;i<n;i++) printf("%5d",x[i]);printf("\n");}调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。
#include <stdio.h>float f(float, float*, int);void main(){ float b[5]={1.1, 2.2, 3.3, 4.4, 5.5 };printf("%f\n", f(1.7,b,5) );}float f( _______1________ ) // float x, float *a, int n{ float y=a[0], t=1; int i;for(i=1; i<n; i++) { t=t*x; y=y+a[i]*t; }_____2_____ // return y;}分别统计字符串中英文字母、数字、和其他字符出现的次数。
#include <stdio.h>#include <ctype.h>void main(){ char a[80]; int n[3]={0}, i; gets(a) ;________1________ // for ( i=0; a[i]!='\0'; i++){if (tolower(a[i])>='a' && tolower(a[i])<='z') /*统计字母个数*/ n[0]++;else if (________2________) /*统计数字个数*/ // a[i]>='0' && a[i]<='9'n[1]++;elsen[2]++;}for(i=0;i<3;i++) printf("%d\n",n[i]);}将输入的十进制整数n通过函数DtoH函数转换为十六进制数,并将转换结果以字符串形式输出。