全国计算机等级考试二级C语言上机考试题库及答案.docx
- 文档编号:10846365
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:50
- 大小:41.40KB
全国计算机等级考试二级C语言上机考试题库及答案.docx
《全国计算机等级考试二级C语言上机考试题库及答案.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言上机考试题库及答案.docx(50页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试二级C语言上机考试题库及答案
2016年3月全国计算机等级考试二级C语言上机考试题库及答案
第1套一、填空
给定函数的功能是调用fun函数建立班级通讯录。
通讯录记录每位学生的编号,姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为答案yfile5.dat的二进制文件中。
答案:
1.STYPE2.FILE3.fp
二、修改
先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串后面。
答案:
1.for(i=0;i 三、程序 将两个两位数的正整数a,答案合并成一个整数放在c中。 合并的方式是: 将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上。 *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10); 第2套一、填空 从键盘输入若干行文本(每行不超过80个字符),写到文件答案yfile4.txt中,用-1作为字符串输入结束的标记。 然后将文件的内容读出显示在屏幕上。 文件的读写分别有自定义函数ReadText和WriteText实现。 答案: *fwstrstr 二、修改 从低位开始取出长整形 变量s中的奇数位上的数,依次构成一个新数放在t中,高位仍放在高位,低位仍放在低位。 答案: long*tsl=sl*10; 三、程序 将两个两位数的正整数a,答案合并成一个整数放在c中。 合并的方式: 将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上。 *c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10); 第3套一、填空 将自然数1~10以及它们的平方根写到名为答案yfile3txt的文本文档中,然后再顺序读出显示在屏幕上。 答案: (1)fp (2)fclose(fp)(3)fname 二、修改 将n个无序整数从小到大排序。 答案: for(i=j+1;i 三、程序 将两个两位数的正整数a,答案合并成一个整数放在c中。 合并的方式是: 将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10); 第4套一、填空 调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功 时函数返回值为1,失败时返回值为0,在复制的过程中,把复制的内容输出到终端屏幕。 主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中 答案: “r”fsft 二、修改 将长整形数中每一位上为偶数的数依次取出,构成一个新数放在t中。 高位仍在高位仍在低位。 答案: if(d%2==0)s/=10; 三、程序 将两个两位数的正整数a,答案合并成一个整数放在c中。 合并的方式是: 将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上。 *c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10); 第5套一、填空 把形参x的值放入一个新结点并插入到链表中,插入后结点数据域的值仍保持递增有序。 答案: xps 二、修改 计算正整数num的各位上的数字之积。 答案: longk=1;num/=10; 三、程序 计算n门课程的平均分,计算结果作为函数值返回。 答案: inti;floatave=0.0;for(i=0;i 第6套一、填空 给定程序中已建立一个带有头结点的单向链表,在答案ain函数中将多次调用fun函数,没调用一次fun函数,输出链表尾部结点中的数据,并释放该节点,是链表缩短。 答案: nextt->datat 二、修改 将字符串中的字符按逆序输出,单补改变字符串中的内容。 答案: voidfun(char*a)printf("%c",*a); 三、程序 比较两个字符串的长度(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。 若两个字符串长度相同,则返回第一个字符串。 答案: inti;char*p=s,*q=t;intn=0,m=0;while(*p){n++;p++;}while(*q){m++;q++;}if(n>=m)p=s;elsep=t;returnp; 第7套一、填空 删除链表中数据域值相同的结点,使之只保留一个 答案: qnextnext 二、修改 用选择法对数组中的n个元素按从小到大的顺序进行排序。 答案: p=j;p=i; 三、程序 求出1到答案之间(含答案)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 答案: inti,j=0;*n=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0){a[j]=i;j++;}*n=j; 第8套一、填空 在带有头结点的单向链表中,查找数据域中值为ch的结点。 找到后通过函数值返回改结点在链表中所处的顺序号;不存在,函数返回0值 答案: NULLnhead,ch 二、修改 删除p所指字符串中的所有空白字符,输入字符串是用“#”结束输入。 答案: for(i=0,t=0;p[i];i++)c[t]='\0'; 三、程序 将ss所指字符串中所有下标为奇数位置上的字母转换成大写 答案: inti;for(i=1;i 第9套一、填空 统计出带有头结点的单向链表中的个数,存放在形参n所指的存储单元中。 答案: *nnexthead 二、修改 求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数返回值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL 答案: a=NULL;if(*r==*p) 三、程序 将s所指字符串中除了下标问为偶数,同时ASCII值也为偶数的字符外,其余的全部删除: 串中剩余字符所形成的一个新串放在t所指的数组中 答案: inti,j=0;for(i=0;i 第10套一填空 计算出带有头结点的单向链表中各结点数据域中值之和作为函数的返回值。 答案: datanexthead 二、修改 将s所指字符串中出现的与t1所指字符串相同的字串全部替换成t2所指字符串,所形成的新串放在w所指的数组中,在此处,要求t1和t2所指字符串的长度相同。 答案: while(*r)*a=*r;a++;r++; 三、程序 将s所指字符串下标为偶数的字符删除,串中剩余字符形成的新串放在t所指的数组中 答案: inti,j=0;for(i=1;i 第11套一填空 找出指定编号人员的数据作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串 答案: STUstd[i].numstd[i] 二、修改 从s所指字符串中,找出与t所指字符串相同的字串的个数作为函数返回值 答案: r++;p++;if(*r==’\0’) 三、程序 将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中 答案: inti,j=0;for(i=0;i 第12套.一、填空 找出指定出生年份的人员,将数据放在形参k所指的数组,由主函数输出,有函数值返回满足指定条件的人数 答案: std[i].yearstd[i]n 二、修改 读入一个整数k(2《k《1000),打印她的所有因子 答案: 分号去掉orIsprime(intn)if(! (n%i)) 三、设计 找出成绩最高的学生记录,通过形参指针传回主函数 答案: inti,max=a[0].s,j=0;for(i=1;i 第13套.一、填空 给定程序。 。 。 将该学生的各科成绩都乘以一个系数a 答案: STUscore[i]&std 二、修改 求k! (k<13),所求阶乘的值作为函数值返回, 答案: if(k>0)elseif(k==0) 三、程序 使数组左下三角元素的值乘以n 答案: inti,j;for(i=0;i 第14套一、.填空 将形参所指结构体数组中的三个元素按num成员进行升序排列 答案: *stdPERSONstd 二、修改 将m个字符串连接起来组成一个新串,放入pt所指存储区中 答案: intk,q,i;pt[i]=str[k][i]; 三、程序 使数组左下三角元素中的值全部值0 答案: inti,j;for(i=0;i for(j=0;j<=i;j++)a[i][j]=0; 第15套一、.填空 将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在主函数中输出 答案: *stdstd[i].agemax.name 二、修改 实现两个整数的交换 答案: voidfun(int*a,int*b)tt=*b;*b=*a;*a=t; 三、程序 请编写一个函数、、tt指向一个M行N列的二维数组,求二维数组每列中最小元素,并以此放入pp所指一维数组中。 二维数组中的数已在主函数中赋予 答案: inti,j,min,k;for(i=0;i 第16套一、.填空 程序通过定义。 。 输出这位学生的信息 答案: tttt.score[i]std 二、修改 求出数组中最大数和次大数,并把最大数和a【0】中的数对调,次最大数和a【1】中的书对调 答案: m=i;if(a[k]>a[m])m=k; 三、程序 请编写一个程序。 。 w是一个大与10的无符号整数,若w是n为的整数,函数求出w的低n-1位的数作为函数值返回 答案: unsignedt,s=0,s1=1,p=0;t=w;while(t>10){if(t/10)p=t%10;s=s+p*s1;s1=s1*10;t=t/10;}returns; 第17套一、.填空 对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。 ss所指字符串数组中共有M个字符串,且串长《N 答案: i+1k=jt 二、修改 判断ch中字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后 答案: voidfun(char*str,charch)if(*str! =ch)str[1]=’\0’; 三、设计 请编写一个函数把s所指字符串中的内容逆值 答案: charb[N];inti=0,j;memset(b,0,N);for(j=strlen(s)-1;j>=0;j--)b[i++]=s[j];strcpy(s,b); 第18套一、填空 求出形参ss所指的字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长,字符串数组中共有M个字符串 答案: klenss[i][j] 二、修改 计算整数n的阶乘 答案: result*=n--;returnresult; 三、程序 从s所指的字符串中删除给定字符。 同一个字母的大小写按不同字符处理 答案: char*p=s;inti=0;while(*p){if(*p! =c)s[i++]=*p;p++;}s[i]=’\0‘; 第19套一、.填空 求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。 Ss所指的字符串数组中共有M个字符串 答案: ss[i]n+j1 二、修改 将p所指字符串中每个单词的最后一个字母改成大写 答案: if(*p==’’)*(p-1)=toupper(*(p-1)); 三、程序 请编写函数fun对长多为7个字符的字符串,除首,尾字符外,将其余5个字符按ASCII降序排列 答案: chart;inti,j;for(i=1;i 第20套一、.填空 求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。 Ss所指字符串数组中共有M个字符串 答案: [N]len*n=len 二、修改 根据形参答案,计算如下公式的值 答案: t+=1.0/i;returnt; 三、程序 编写一个函数。 该函数可以统计一个长度为2的字符串在另个字符串中出现的次数 答案: intcnt=0;char*p=str,*q;while(*p){q=strstr(p,substr);if(q==NULL)break;p=q+strlen(substr);cnt++;}returncnt; 第21套一、.填空 求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中 答案: M 二、修改 将tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变 答案: if((‘a’<=tt[i])&&(tt[i]<=’z’))tt[i]-=32; 三、程序 将大于1小于整数m的非素数存入xx所指数组中非素数的个数通过k传回 答案: inti,j;intt=0;for(i=2;i {j=2;while(j 第22套一、.填空 将s所指字符串中的所有数字字符转移到所有非数字字符之后,并保持数字字符和非数字字符串原有的前后次序 答案: j++s[i]=t1[i]j 二、修改 用冒泡法对6个字符串由小到大的顺序进行排序 答案: for(j=i+1;j<6;j++)*(pstr+i)=*(pstr+j); 三程序 求出ss所指字符串中指定字符的个数,并返回此值 答案: intcnt=0;char*p=ss;while(*p){if(*p==c)cnt++;p++;}returncnt; 第23套一、.填空 在形参所指字符串中的每个数字字符之后插入一个*号 答案: &&0s[j] 二、修改 根据整形形参m,计算如下公式的值 答案: for(i=2;i<=m;i++)y+=1.0/(i*i); 三程序 实现B=A+A’,即把矩阵A加上A的转置,存放到B中 答案: intc[3][3];inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i][j]=a[j][i];b[i][j]=a[i][j]+c[i][j];} 第24套一、.填空 统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。 答案: s[i]‘9’*t=n 二、修改 通过某种方式实现俩个变量值的交换,规定不予许增加语句和表达式 答案: t=*x;*x=y;return(t); 三、程序 求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将他们放在a所指的数组中,通过n返回这些数的个数 答案: inti;*n=0;for(i=7;i<1000;i++)if(((i%7)==0||(i%11)==0)&&(i%77)! =0)a[(*n)++]=i; 第25套一、.填空 把形参s所指字符串中下标为奇数的字符右移到下一个奇数的位置,最后边被移除字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动 答案: 1s[k]c 二、填空 求s=aa…aa-….aaa-aa-a 答案: longs=0,t=0;t=t/10; 三、程序 请编写一个函数。 。 。 统计在tt所指字符串中’a’到’z’26个小写字母各自出现的次数,并依次放在pp所指数组中 答案: char*p=tt;inti;for(i=0;i<26;i++)pp[i]=0;while(*p){if(*p>='a'&&*p<='z')pp[*p-'a']+=1;p++;} 第26套.一、填空 对形参s所指字符串中下标为奇数的字符按ascii码大小递增排序,并将排序后下标为基数的字符取出,存入形参p所指字符数组中,形成一个新串 答案: t=Ii0 二、填空 用下面公式求π的近似值,直到最后一项的绝对值小于指定的数为止 答案: while(fabs(t)>=num)t=s/n; 三、程序 删除一个字符串中指定下标的字符,其中,a指向原字符,删除指定字符后的字符串存在b所指的数组中,n中存放指定下标 答案: intp,m=0;for(p=0;p =n){b[m]=a[p];m++;}b[m]=’\0’; 第27套一填空 在形参所指字符串中寻找一个字符串与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理 答案: 00c 二修改 计算数组元素中值为正数的平均值 答案: doublesum=0.0;sum/=c; 三设计 根据以下公式s,计算结果作为函数返回值,n通过形参传入 答案: intk;floatstr=1.0,sum=1.0;for(k=2;k<=n;k++){sum=sum+k;str=str+1/sum;}returnstr; 第28套一填空 有N*N的矩阵,根据给定的m的值,将每行元素中的值均右移m个位置,左边置为0 答案: i++mm 二修改 计算并输出high以内最大的10个素数之和。 High的值由主函数传给fun函数 答案: while((2<=high)&&(n<10))yes=0;break; 三设计 利用一下所示的简单迭代方法求方程: 答案: floatx0,x1=0.0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);returnx1; 第29.套一填空 将N*N的矩阵中元素值按列右移1个位置,右边被移出矩阵的元素绕回左边 答案: NN-10 二修改 计算并输出下列的前N项之和Sn,Sn+1大于q为止,q的值通过形参传入 答案: s=s+(n+1.)/n;returnt; 三设计 求Fibon….数列中大于t的最小的一个数,结果由函数返回, 答案: intf0=0,f1=1,f;do{f=f0+f1;f0=f1;f1=f;}while(f 第30套一.填空 有N*N矩阵,将矩阵的外围元素顺时针逆转,操作顺序是: 首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行。 临时数组中的元素成为最后一列 答案: 0j--j 二修改 计算s=f(-n)+f(-n+1)+…+f(0)+f (1)+f (2)+…+f(n)的值, 答案: doublef(doublex)returns; 三设计 编写函数fun,他的功能是计算s=ln (1)+ln(2.)..ln(m)开根号 答案: doubles=0.0;inti;for(i=1;i<=m;i++)s+=log(1.0*i);s=sqrt(s);returns; 第31套一.填空 有N*N矩阵,以主对角线为对称线,对称元素相加并将结构存放在左下三角元素中,右上三角元素之位0 答案: [N]t[i][j]t[j][i] 二修改 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。 其中x和y的值不等,z和y的值不等 答案: ((m)/(n))return(value); 三设计 将字符串中的前导*号全部删除,中间和尾部的*号不删除 答案: intj=0;char*p=a;while(*p=='*')p++;while(*p){a[j++]=*p;p++;}a[j]=’\0’; 第32套一.填空 将N*N矩阵主对角线元素中的值域反向对角线对应位置上的元素中的值交换 答案: t[][N]i=0;i 二修改 利用折半查找法查找整数答案在整数数组的位置。 若找到,返回其下标;反之,返回-1 答案: intfun(inta[],intm)elseif(m>a[mid]) 三设计 除了尾部的*号外,将字符串中的*号全部删除^,形参p以指向字符串中最后的一个字符, 答案: char*q=a;intj=0;while(*q&&q ='*')a[j++]=*q;q++;}while(*p)a[j++]=*p++;a[j]=’\0’; 第33套一.填空 计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 语言 上机 考试 题库 答案