您好,欢迎访问三七文档
第1套一、填空给定函数的功能是调用fun函数建立班级通讯录。通讯录记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为答案yfile5.dat的二进制文件中。答案:1.STYPE2.FILE3.fp二、修改先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串后面。答案:1.for(i=0;isl;i++)2.t[2*sl]=`0`;三、程序将两个两位数的正整数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;in;i++)p=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;in;i++)ave=ave+a[i];ave=ave/n;returnave;第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;istrlen(ss);i+=2){if(ss[i]='a'&&ss[i]='z')ss[i]-=32;}第9套一、统计出带有头结点的单向链表中的个数,存放在形参n所指的存储单元中。答案:*nnexthead二、求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数返回值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL答案:a=NULL;if(*r==*p)三、将s所指字符串中除了下标问为偶数,同时ASCII值也为偶数的字符外,其余的全部删除:串中剩余字符所形成的一个新串放在t所指的数组中答案:inti,j=0;for(i=0;istrlen(s);i+=2)if(s[i]%2==0)t[j++]=s[i];t[j]=’\0’;第10套一计算出带有头结点的单向链表中各结点数据域中值之和作为函数的返回值。答案:datanexthead二、将s所指字符串中出现的与t1所指字符串相同的字串全部替换成t2所指字符串,所形成的新串放在w所指的数组中,在此处,要求t1和t2所指字符串的长度相同。答案:while(*r)*a=*r;a++;r++;三、将s所指字符串下标为偶数的字符删除,串中剩余字符形成的新串放在t所指的数组中答案:inti,j=0;for(i=1;istrlen(s);i+=2)t[j++]=s[i];t[j]=`\0`;第11套一找出指定编号人员的数据作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串答案:STUstd[i].numstd[i]二、从s所指字符串中,找出与t所指字符串相同的字串的个数作为函数返回值答案:r++;p++;if(*r==’\0’)三、将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中答案:inti,j=0;for(i=0;istrlen(s);i++)if(s[i]%2)t[j++]=s[i];t[j]=0;第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;iN;i++)if(maxa[i].s){j=i;max=a[i].s;}*s=a[j];第13套.一、给定程序。。。将该学生的各科成绩都乘以一个系数a答案:STUscore[i]&std二、求k!(k13),所求阶乘的值作为函数值返回,答案:if(k0)elseif(k==0)三、使数组左下三角元素的值乘以n答案:inti,j;for(i=0;iN;i++)for(j=0;j=i;j++)a[i][j]*=n;第14套一、.将形参所指结构体数组中的三个元素按num成员进行升序排列答案:*stdPERSONstd二、将m个字符串连接起来组成一个新串,放入pt所指存储区中答案:intk,q,i;pt[i]=str[k][i];三、使数组左下三角元素中的值全部值0答案:inti,j;for(i=0;iN;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;iN;i++){min=tt[0][i];k=0;for(j=1;jM;j++)if(mintt[j][i]){min=tt[j][i];k=j;}pp[i]=tt[k][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(t10){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;inum-2;i++)for(j=i+1;jnum-1;j++)if(s[i]s[j]){t=s[i];s[i]=s[j];s[j]=t;}第20套一、.求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。Ss所指字符串数组中共有M个字符串答案:[N]len*n=len二、根据形参答案,计算如下公式的值答
本文标题:2012年3月全国计算机等级考试二级C语言上机考试题库及答案_已缩印(最新版来自机房题库)
链接地址:https://www.777doc.com/doc-3031310 .html