计算机二级考试c程序设计语言上机题库.docx
《计算机二级考试c程序设计语言上机题库.docx》由会员分享,可在线阅读,更多相关《计算机二级考试c程序设计语言上机题库.docx(60页珍藏版)》请在冰点文库上搜索。
计算机二级考试c程序设计语言上机题库
第一套
填空:
给定程序的功能是调用fun函数建立班级通顺录。
通讯录中记录每位学生的编号、姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
1、STYPE2、FILE3、fp
改错:
先将在字符串S中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
例如:
当s中的字符串为:
“ABCDE”时,则t中的字符串应为:
“ABCDEEDCBA”.
1、将s1改为sl
2、将1倍数组长度给位2倍的数组长度
程序设计:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的侍卫和各位数一次放在c数的千位和十位上,b数的十位和个位数一次放在c数的百位和个位上。
例如:
当a=45,b=12时,调用该函数后,c=4152.
该题有两种方法:
1、*c=a/10*1000+a%10*10+b/10*100+b%10;2、用in、out文件。
第二套
填空:
从键盘输入若干行文本,写到文件myfile4.txt中,用-1作为字符串输入结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别有自定义函数TeadText和WriteText实现。
1、*fw2、str3、str
改错:
从低位开始取出长整型变量s中奇数位上的数,一次构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如:
当s中的数为:
7654321时,t中的数为:
7531。
1、将longt改为long*t
2、将sl=sl*100改为sl=sl*10
第三套
填空:
将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
1、fp2、fclose(fp)3、fname
改错:
将n个无序整数从小到大排序。
1、将范围改为n2、将t改为p
程序设计:
将a、b数拆开重新组合。
第四套
填空:
将指定的内容复制到指定的目标文件中,复制成功时返回1,失败时返回0。
1、“r”2、fs3、ft
改错:
将一个数中的每一位上位偶数的数依次取出放到新数t中。
高位和地位不变。
1、‘=’与‘==’的使用
2、‘\’与‘/’的使用
第五套
填空:
把形参x的值放入一个新结点并插入到递增有序链表中,插入后仍保持有序。
1、x2、p3、s
改错:
计算一个正整数的各位上的数字之积。
1、使用变量先赋值(k=1)
2、‘\’和‘/’的使用
程序设计:
计算几门课程的平均分。
1、inti;floataver=0.0;2、用in、out文件
for(i=0;iaver+=a[i];
return(aver/n);
第六套
填空:
将一个链表从后向前依次输出每个结点的值,并且释放该结点,是该链表缩短。
1、t->next2、t->data3、t
改错:
将一个字符串逆序输出。
1、注意形参的定义类型(*a)
2、输出函数的书写格式(添,)
程序设计:
比较两个字符串的长度,返回较长的字符串;若字符串的长度相同,则返回第一个字符串。
1、用in、out文件
第七套
填空:
删除有序递增链表中内容相同的结点。
1、q2、p->next3、p->next
改错:
用选择法对数组中的n个元素按从小到大的顺序进行排序。
1、一条语句后面要有分号(加;)
2、p应该记录最小元素的下标i
程序设计:
求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
1、inti;2、不能用in、out文件
*n=0;
for(i=7;i<=m;i++)
if(i%7==0||i%11==0)
a[(*n)++]=i;
第八套
填空:
在带有头结点的单向链表中查找数据域中值为ch的结点。
找到后通过函数值返回该结点在链表中所处的顺序号;若不存在则返回0值。
1、NULL2、returnn;3、fun(head,ch)
改错:
删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符),输入的字符串用‘#’结束输入。
1、注意关键词的大小写(将For改为for)
2、注意转义字符的使用(用单引号)
程序设计:
将数组中的字符串下标为奇数的字母转换为大写(若该位置上不是字母,则不转换)。
1、用in、out文件2、inti;
for(i=1;iif(ss[i]>='a'&&ss[i]<='z')ss[i]-=32;}
第九套
填空:
统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。
1、*n=0;2、p->next3、head
改错:
求出字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
1、空值在计算机中用大写的NULL表示
2、注意*号的使用(*r=*p)
程序设计题:
将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在t所指的数组中。
1、inti,k=0;2、不能用in、out文件
for(i=0;iif(s[i]%2==0)
t[k++]=s[i];
t[k]=0;
第十套
填空:
将单向链表中各结点数据域中值求和后返回。
1、p->data2、p->next3、head
改错:
将s所指字符串中出现的与t1所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中(t1与t2所指的字符串的长度应该相同)。
1、注意变量的类型(加*r)
2、一条语句后应该有分号(;)
程序设计题:
将下标为偶数的字符删除,将剩余的字符串放在t所指的数组中。
1、inti,k=0;2、用in、out文件
for(i=1;it[k++]=s[i];
t[k]=0;
第十一套
填空:
找出指定编号人员的数据,作为函数值返回,若指定编号不存在,返回数据中的编号为空串。
1、STU2、std【i】.num3、std【i】
改错:
从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。
1、语句后面要有分号(;)
2、注意变量的类型(加*)
程序设计题:
将字符串中ASCII值为偶数的字符串删除,剩余的字符形成一个新串放在t所指的数组中。
1、inti,k=0;2、用in、out文件
for(i=0;iif(s[i]%2!
=0)
t[k++]=s[i];
t[k]=0;
第十二套
填空:
找出指定出生年份的人员,将其数据放在形参k所指的数组中,同时由函数值返回满足指定条件的人数。
1、std【i】.year2、std【i】3、n
改错:
读入一个整数k,打印它所有质因子。
1、子函数定义时后面无;
2、if语句后面有()
程序设计题:
找出成绩最高的学生记录,通过形参指针传回主函数。
用in、out文件。
第十三套
填空:
将结构体变量中存储的学生成绩都同时乘以一个系数a。
1、STU2、score【i】3、&std
改错:
求k!
(k<13),所求阶乘的值作为函数值返回。
1、注意if语句的结构(加())
2、注意if后面的判断语句(‘=’与‘==’的使用)
程序设计题:
将给定数组左下三角元素中的值乘以给定的值n。
1、用in、out文件
第十四套
填空:
将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
1、*std2、PERSON3、&std
改错:
将m个字符串连接起来,组成一个新串,放入pt所指的存储区中。
1、注意关键字的大小写(Int改为int)
2、二维数组元素的引用方式(k[i][j])
程序设计题:
将数组左下三角元素中的值全部置成0。
用in、out文件
第十五套
填空:
将形参std所指结构体数组中年龄最大者的数据作为函数值返回,变在main函数中输出。
1、std【0】2、std【i】.age3、max..name
改错:
实现两个整数的交换。
1子函数的定义要分开,并且要观察调用时传递过来的是地址还是数值(fun(int*a,int*b))
2通过指针交换内容时,指针变量前面要有内容符号*
程序设计题:
求出二维数组每列中最小元素,并依次放入另一个一维数组中。
1、用in、out文件。
2、inti,j,min[4];for(i=0;i{{min[i]=tt[0][i];for(j=1;jif(min[i]>tt[j][i])min[i]=tt[j][i];}
pp[i]=min[i];}
第十六套
填空:
利用结构体变量存储了一名学生的信息,通过函数输出这位学生的信息。
1、tt2、tt.score【i】3、std
改错:
求出数组中最大数和次最大数,并把最大数和a【0】中数对调、次最大数和a【1】中的数对调。
1、当看不出来有语法上的错误时,就要根据上下程序段入手,找出突破口。
(m=i)
2、m应该存储最大值的下标。
(m=k)
程序设计题:
给定一个n位无符号整数,求出低n-1位的数返回。
用in、out文件。
第十七套
填空:
对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。
1、i+12、k=j3、t
改错:
判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
1、注意变量的类型(加*)
2、注意if语句的判断条件(*str!
=ch)
3、注意字符串结束标志的使用(0与‘\0’是相同的)
程序设计题:
将所给字符串中的内容逆置。
用in、out文件。
第十八套
填空:
求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。
1、k2、len3、ss【i】【j】
改错:
计算整数n的阶乘。
1、注意自增自减运算符的使用(将—n改为n--)
2returnresult;
程序设计题:
将s所指的字符串中删除给定的字符。
用in、out文件。
第十九套
填空:
求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。
1、ss【i】2、n+j3、+1
改错:
将p所指字符串中每个单词的最后一个字母改成大写。
1、注意变量的类型(在p前加*)
2、一条语句后面要有分号
程序设计题:
对一个字符串除首、尾字符外,将其余5个字符按ASCII码降序排列。
用in、out文件。
第二十套
填空:
求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
1、(*ss)【N】2、len3、*n=len
改错:
根据形参m,计算如下公式的值。
t=1+1/2+1/3+1/4+……+1/m
1、将k改为i2、将------该为}
程序设计题:
统计一个长度为2的字符串在另一个字符串中出现的次数。
用in、out文件。
第二十一套
填空:
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
1、i改错:
将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。
1、判断一个字符是否为字母用&&
2、将小写字母转换为大写字母需减去32,;反之加32
程序设计题:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
由于程序本身较为复杂,同学们较难理解,所以建议用in、out文件。
第二十二套:
填空:
将一个字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。
1、j++2、s【i】=t1【i】3、i改错:
用冒泡法对6个字符串按由小到大的顺序进行排序。
1、for语句内的表达式用;隔开
2、交换的是内容(*(pstr+j))
程序设计题:
求出ss所指字符串中指定字符的个数。
用in、out文件。
第二十三套
填空:
在一个字符串中的每个数字字符之后插入一个*号。
1、&&2、03、s【j】
改错:
计算如下公式的值:
y=1+1/2*2+1/3*3+1/4*4+……+1/m*m.
1、注意变量的变化范围(i<=m)
2、因为我们得到的结果是一个浮点数,所以应该将分子1改为1.0,‘/’的结果跟着精度高的类型走。
程序设计题:
我们要得到一个矩阵加上他转置后的矩阵后的矩阵。
用in、out文件。
第二十四套:
填空:
统计一个字符串中出现数字字符的次数。
1、s【i】2、s【i】<=‘9’3、*t=n
改错:
实现两个变量值的交换。
1、注意x的类型(交换内容时要有*)
2、返回的值作为b的值,所以应该返回t
程序设计题:
求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数。
1、不能用in、out文件。
2、inti;*n=0;
for(i=7;i<1000;i++)
if(((i%7)==0||(i%11)==0)&&(i%77)!
=0)a[(*n)++]=i;
第二十五套
填空:
将一个字符串中下标为奇数的字符右移到下一个奇数位,最右边被移除字符串的字符绕回放到第一个奇数位,下标为偶数的字符不动。
1、k=n-12、c=s【k】3、s【1】=c
改错:
求s=aa…aa-……-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)
1、t的初始值应为0
2、t每次都应除以10而不是取余(将/改为%)
程序设计题:
统计在一个字符串中‘a’到‘z’26个小写字母各出现的次数。
用in、out文件。
第二十六套
填空:
对一个字符串中小标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入另一个数组当中,形成一个新串。
1、t=i2、j=i+23、p【j】=0;
改错:
利用公式求出∏的近似值。
1、t的绝对值用fabs这个函数
2、将%改为/
程序设计题:
删除一个字符串中指定下标的字符。
用in、out文件。
第二十七套:
填空:
在一个给定字符串中寻找一个与给出的字符相同的字符,并在其后面插入该字符。
1、02、03、c
改错:
计算数组元素中值为正数的平均值(不包括0)。
1、注意变量类型(int改为double)
2、注意‘\’和‘/’的含义
程序设计题:
利用如下公式求s的值:
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)
1、floats=1.0;2、不能用in、out文件。
inti,t=1;
for(i=2;i<=n;i++)
{t+=i;
s+=1.0/t;
}
returns;
第二十八套
填空:
有一个N*N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。
1、i++2、j+m3、m
改错:
计算并输出high以内最大的10个素数之和。
1、for语句缺少一个括号2、语句后面要有;
程序设计题:
求方程:
cos(x)-x=0的一个实根。
1、floatx0,x1=0.0;2、不能用in、out文件。
do{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>0.000001);
returnx1;
第二十九套
填空:
将N*N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。
1、i改错:
计算并输出下列级数的前N项之和SN,直到SN+1大于q为止。
SN=2/1+3/2+4/3+…+(N+1)/N
1、返回类型应该为小数,所以将(n+1)改为(n+1.0)或前加一个强制类型转换(float)
2、应该返回t
程序设计题:
求Fibonacci数列中大于t的最小的一个数,结果由函数返回。
其中Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1
F(n)=F(n-1)+F(n-2)
1、intf0=0,f1=1,f;2、不能用in、out
do{
f=f0+f1;
f0=f1;
f1=f;
}while(freturnf;
第三十套
填空:
有N*N矩阵,将矩阵的外围元素顺时针旋转。
1、t【j】【0】2、j--3、r【j】
改错:
计算
S=f(-n)+f(-n+1)+…+f(0)+f
(1)+f
(2)+…+f(n)的值。
1、应定义函数的返回类型(double)
2、一条语句后面要有分号
程序设计题:
1、doublet=0.0;2、不能用in、out文件。
inti;
for(i=1;i<=m;i++)
t+=log(i*1.0);
return(sqrt(t));
第三十一套
填空:
有一个N*N的矩阵,以对角线为对称线,对称元素相加并将结果存放在下三角元素中,右上三角元素置为0。
1、(*t)【N】2、t【i】【j】3、t【j】【i】改错:
计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。
其中x和y的值不等,z和y的值不等。
1、将m和n分别用括号括起来
2、returnvalue;
程序设计题:
关于*号的问题。
用in、out文件。
第三十二套
填空:
将N*N矩阵主对角线元素中的值域反向对角线对应位置上元素中的值进行交换。
1、(*t)【N】或者t【】【N】
2、i=0;i改错:
利用折半查找算法查找整数m在数组中的位置。
若找到,返回其下标值;反之,返回-1。
1、函数值为void时不应有return,所以将函数类型改为int
2、注意关键词的大小写问题(If改为if)
程序设计题:
关于*号的,用in、out文件。
第三十三套
填空:
计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。
1、sum=0;2、t【i】【i】3、-1
改错:
用二分法求方程2x3-4x2+3x-6=0的一个跟,并要求绝对误差不超过0.001。
1、将int改为double2、将<改为>
程序设计题:
关于*号的问题,用in、out文件。
第三十四套
填空:
把形参a所指数组中的奇数按原顺序一次存放到a【0】、a【1】……中,把偶数从数组中删除,奇数个数通过函数值返回。
1、1(这个地方要注意,平时都判断是否等于0,而在这里是要将奇数放到一个数组中去,所以要判断余数是否为1)
2、j(j为奇数的个数)
改错:
求出两个非零正整数的最大公约数,并作为函数值返回。
1、交换变量时注意交换顺序,交换语句为{t=a;a=b;b=t;}
2、返回值应改为b
程序设计题:
关于*号的问题,用in、out文件。
第三十五套
填空:
把形参a所指数组中的偶数按原顺序一次存放到a【0】、a【1】……中,把奇数从数组中删除,偶数个数通过函数值返回。
1、a【i】%22、a【j】3、j
改错:
按以下递归公式求函数值。
fun(n)=fun(n-1)+2(n>1)或者10(n=1)
1、1形参要定义类型(intn)
2、2、注意判断条件(=)
程序设计题:
关于*号的问题用in、out文件。
第三十六套
填空:
把形参a所指数组中的最小值放在元素a【0】中,接着把形参a所指数组中的最大值放在a【1】元素中;在把a所指数组中元素的次小值放在a【2】中,把a所指数组元素中的次大值放在a【3】;其余以此类推。
1、a【i】2、a【j】3、a【j】
改错:
用递归算法计算斐波拉契数列中第n项的值。
1、switch语句后面没有分号
2、case后面直接跟:
程序设计题:
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。
求出该学生的平均分放在记录的ave成员中。
1、inti;2、无in、out文件。
doublesum=0;
for(i=0;isum+=a->s[i];
a->ave=sum/N;
第三十七套
填空:
把形参a所指数组中的最大值放在元素a【0】中,接着把形参a所指数组中的最小值放在a【1】元素中;在把a所指数组中元素的次大值放在a【2】中,把a所指数组元素中的次小值放在a【3】;其余以此类推。
1、a【N】或者*a2、i+=23、j=i+1
改错:
按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值一次存放在w所指的数组中。
若s所指数组中元素的个数不是5的倍数多余部分忽略不计。
1、将sun改为sum2、将i+1括起来
程序设计题:
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。
现要求把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
1、inti;
doubleave=0.0;
*n=0;
for(i=0;iave/=N;
for(i=0;iif(a[i].sb[*n]=a[i];
(*n)++;
}
returnave;
第三十八套
填空:
将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。
形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
1、12、a【p+i】3、a【p+i】
改错:
把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。
1、将*号去掉
2、因为是将最大的数放在a中,所以应该将>改为<
程序设计题:
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。
现要求把分数最高的学生数据放在b所指的数组中,并返回分数最高的学生的人数。
1、inti,max=a[0].s,n=0;
for(i=1;iif(maxfor(i=0;iif(max==a[i].s)b[n++]=a[i];
returnn;
第三十九套
填空:
逆置数组元素中的值。
1、