计算机国家二级.docx
- 文档编号:27488362
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:80
- 大小:45.55KB
计算机国家二级.docx
《计算机国家二级.docx》由会员分享,可在线阅读,更多相关《计算机国家二级.docx(80页珍藏版)》请在冰豆网上搜索。
计算机国家二级
第一套:
填空:
程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。
。
函数fun的功能是输出这位学生的信息。
请在程序的下划线处填入正确的内容并把下划线的内容并把下划线删除,使程序得出正确的结果。
1、tt2、tt.score[i]3、std
改错:
给定程序MODI1.C中函数fun的功能是:
求出数组中最大数和次最大数并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
1、m=0改为m=i2、k=m改为m=k
编程:
请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。
{
if(w>10000)w%=10000;
elseif(w>1000)w%=1000;
elseif(w>100)w%=100;
elseif(w>10)w%=10;
returnw;
}
第二套
填空:
给定程序中,函数fun的功能是:
对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。
Ss所指字符串数组中共有M个字符串,且串长 1、i+12、k=j3、t 改错: Fun的功能是: 判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。 1、str前加个*2、==改为! =3、‘0’改为’\0’ 编程: 请编一个函数fun(char*s),函数的功能是把s所指字符串中的内容逆置。 { charb[N]; inti=0,j; for(j=strlen(s)-1;j>=0;j--) b[i++]=s[j]; b[i]=0; strcpy(s,b); } 第三套 填空: 求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其怀最长的字符串等长。 字符串数组中共有M个字符串,且串长 1、k2、len3、ss[i][j] 改错: 计算整数n的阶乘。 1、--n改为n-- 2、下划线改为result 编程: 从s所指的字符串中删除给定的字符。 同一字母大、小写按不同字符处理。 { inti,j=0; for(i=0;s[i];i++) if(s[i]! =c) s[j++]=s[i]; s[j]=0; } 第四套 填空: 求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。 Ss所指的字符串数组中共有M个字符串,且长 1、i2、n+j3、1 改错: 将p所指字符串中每个单词的最后一个字母改成大写。 1、在p前边加*2、在最后加; 编程: 请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。 { charch;inti,j; for(i=1;i<6;i++) for(j=i+1;j<6;j++) if(s[i] { ch=s[j]; s[j]=s[i]; s[i]=ch; } } 第五套 填空: 求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。 Ss所指字符串数组中共有M个字符串,且串长 1、[N]2、strlen(ss[i])3、*n=len 改错: 根据形参m,计算如下公式的值。 T=1+1/2+1/3+1/4+1/5+……+1/m 1、k改为i2、returnt; 编程: 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。 { inti,cou=0; for(i=0;str[i+1]! =0;i++) { if(str[i]==substr[0]&&str[i+1]==substr[1]) cou++; } returncou; } 第六套 填空: 求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。 Ss所指字符串数组中共有M个字符串,且串长 1、M2、<3、k 改错: 将tt所指字符串中的小写字母都改为对就的大写字母,其它字符不变。 1、将||改为&&2、将+=改为-= 编程: 请编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 { inti; *k=0; for(i=2;i<=m;i++) if(prime(i)==0) xx[(*k)++]=i; } 第七套 填空: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符串原有的选择次序。 1、j++2、s[i]=t1[i]3、j 改错: 用冒泡法对6个字符串按由小到大的顺序进行排序。 1、将for中两个,全改为;2、pstr+j改为*(pstr+j) 编程: 求出ss所指字符串中指定字符的个数,并返回此值。 { inti=0; while(*ss) if(*(ss++)==c) i++; returni; } 第八套 填空: 在形参s所指字符串中的每个数字字符之后插入一个*号。 1、&&2、‘\0’3、s[j] 改错: 根据整型形参m,计算如下公式的值。 Y=1+1/(2*2)+1/(3*3)+1/(4*4)+……+1/(m*m) 1、i 编程: 请编写函数fun,函数的功能是: 实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。 计算结果在main函数中输出。 { 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]; } } 第九套 填空: 统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。 1、s[i]2、‘9’3、 改错: 通过某种方式实现两个变量值的交换,规定不允许增加语句和表达。 1、两个x前全要加* 2、return(t) 编程: 请编写函数fun,它的功能是: 求出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; } 第十套 填空: 把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动。 1、12、s[k]3、c 改错: 求s=aa……aa-……-aaa-aa-a(a是1至9之间的值) 1、t=1改为t=02、t%10改为t/10 编程: 请编写一个函数voidfun(char*tt,intpp[]),统计错在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++; } } 第十一套 填空: 对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后顶数的字符取出,存入形参p所指字符数组中的字符数组中,形成一个新串。 1、t=i2、i3、0 改错: 用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止 Π/4=1-1/3+1/5-1/7+…… 1、t>=num改为fabs(t)>=num 2、%改为/ 编程: 请编写一个函数voidfun(chara[],charb[],intn),其功能是: 删除一个字符串中指定下标的字符。 其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。 { strncpy(b,a,n); b[n]=0; strcat(b,a+n+1); } 第十二套 填空: 在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。 1、02、03、c 改错: 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。 给定程序MODI1.C中函数fun的功能是: 计算数组中元素中值为正数的平均值(不包括0) 1、int改为double2、\改为/ 编程: 编写函数fun,功能是: 根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3+4+……+n) { doubles=0;inti,f=0; for(i=1;i<=n;i++) {f+=i;s+=1.0/f;} returns; } 第十三套 填空: 有N*N矩阵,根据给定m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。 例如: N=3,m=2,有下列矩阵 123 456 789 程序执行结果为: 001 004 007 填写为: 1、i++2、m3、m 改错: 计算并输出high以内最大的10个素数之和。 High的值由主函数传给fun函数。 1、最后加)2、break后加; 编程: 编写函数fun,它的功能是: 利用以下所示的简单迭代方法求方程: cos(x)-x=0的一个实根。 { doublex1=0,x0; do{x0=x1; x1=cos(x0);} while(fabs(x0-x1)>=0.000001); returnx1; } 或: return0.739086; 第十四套 填空: 将N*N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。 1、N2、N-13、0 改错: 计算并输出下列级数的前N项之和SN,直到SN+1大于q为止,q的值通过形参传入。 SN=2/1+3/2+4/3+……+N+1/N 1、(n+1)改成(n+1.0)2、s改为t 编程: 求fibonaccia数列中大于t的最小的一个数,结果由函数返回。 其中fibonacci数列F(n)的定义为: F(0)=0F (1)=1F(n)=F(n-1)+F(n-2) { inta=0,b=1,c; while(a<=t) {c=a+b; a=b; b=c;} returna; } 第十五套 填空: 有N*N矩阵,将矩阵的外围元素顺时针旋转。 操作顺序是: 首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。 1、02、j--3、j 改错: 计算S=f(-n)+f(-n+1)+……+f(0)+f (1)+f (2)+……+f(n)的值,f(x)函数定义如下: X>0且x! =2的情况下f(x)=(x+1)/(x-2) X=0或x=2时值为0 X<0时值为(x-1)/(x-2) 1、在f前加一个double2、s后加; 编程: 计算s=sqrt(ln (1)+ln (2)+ln(3)+……+ln(m))s做为函数值返回。 { inti; doubles=0; for(i=1;i<=m;i++) s+=log(i); returnsqrt(s); } 第十六套 填空: 有N*N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0 1、[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)改为((m)/(n)) 2、将大写的R和V全改为小写的 编程: 规定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 将字符串中的前导*全部删除,中间和发问的*不删除。 { char*p=a; while(*(++p)=='*'); while(*(a++)=*(p++)); } 第十七套 填空: 将N*N矩阵主对角线元素中的值与反向对角线对应位置上的元素中的值进行交换。 1、t[][N]2、i=0;i 改错: 利用折半查找算法查找整数m在数组中的位置。 若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是: 每次查找前先确定数组中待查的范围: low和high,然后把m与中间位置(mid)中元素的值进行比较。 如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。 直到low》high,查找结束。 1、void改为int2、If改为if 编程: 假定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 除了尾部的*号之外,将字符串中其它的*号全部删除。 形参p已指向字符串中最后一个字母。 { char*q=a; while(a<=p) { if(*a! ='*') *(q++)=*a; a++; } q--; while(*(q++)=*(p++)); } 第十八套 填空: 计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。 1、sum=02、t[i][i]3、1 改错: 给定程序MODI1.C中函数fun和funx的功能是: 用二分法求方程2x^3-4x^2+3x-6=0的一个根,并要求绝对和善不超过0.001 1、int改为double2、<改为>= 编程: 假定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 除了字符串前导和发问的*号之外,将串中其它*号全部删除。 形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。 { a=h; while(h<=p) { if(*h! ='*') *(a++)=*h; h++; } a--; while(*(a++)=*(p++)); } 第十九套 填空: 把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中、把偶数从数组中删除,奇数个数通过函数值返回。 1、12、j++3、j 改错: 求出两个非零正整数的最大公约数,并作为函数值返回。 1、t=a改为t=b2、把a改为b 编程: 假定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 删除字符串中所有的*号。 在编写函数时,不得使用C语言提供的字符串函数。 { char*p=a; while(*a) { if(*a! ='*') *(p++)=*a; a++; } *p=0; } 第二十套 填空: 把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把从数组中删除,偶数个数通过函数值返回。 1、a[i]%22、a[j]3、j 改错: 按以下递归公式求函数值。 N=1时值为10n>1时值为fun(n-1)+2 1、在fun前加intn前边加个int2、=改为== 编程: 假定输入的字符串中只包含字母和*号。 它的功能是: 使字符串中发问的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做。 { while(*(++a)); a--; while(*a=='*') a--; *(a+n+1)=0; } 第二十一套 填空: 把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。 1、a[i]2、a[j]3、a[j] 改错: 用递归算法计算斐波拉契数列中第n项的值。 从第一项起,斐波拉契数列为: 1、1、2、3、5、8、13、21、…… 1、把后边的;删除 2、在case 1后边加一个: 编程: 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。 请编写函数fun,它的功能是: 求出该学生的平均分放在记录的ave成员中。 { inti; for(i=0;i a->ave+=a->s[i]; a->ave/=N; } 第二十二套 填空: 把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中;其余以此类推。 1、a[]2、23、i+1 改错: 按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均佱,并将这些值依次存放在w所指的数组中。 若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。 1、sun改为sum 2、i+1%5改为(i+1)%5 编程: 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过开通n传回,平均分通过数值返回。 { inti;doublesum=0; *n=0; for(i=0;i sum+=a[i].s/N; for(i=0;i if(a[i].s b[(*n)++]=a[i]; returnsum; } 第二十三套 填空: 将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。 形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。 1、12、i3、a[p+i] 改错: 把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。 1、把*k改为k2、>改为< 编程: 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把分数最高的学生数据放在b所指的数组中,注意: 分数最高的学生可能不止一个,函数返回分数最高的学生人数。 { inti,n=0,max=0; for(i=0;i if(a[i].s>max) max=a[i].s; for(i=0;i if(a[i].s==max) b[n++]=a[i]; returnn; } 第二十四套 填空: 逆置数组元素中的值。 例如: 若a所指数组中的数据依次为: 1、2、3、4、5、6、7、8、,则逆置后依次为: 9、8、7、6、5、4、3、2、1.。 形参n给出数组中数据的个数。 1、n/22、i3、a[n-1-i] 改错: 将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。 规定输入的字符串最多只能包含5位八进制数字字符。 1、P改为po(字母)改为0(数字)2、同1 编程: 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 函数返回指定学号的学生数据,指定的学号在主函数中输入。 若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。 { inti; STRECt={'\0',-1}; for(i=0;i if(strcmp(a[i].num,b)==0) returna[i]; } 或returna[9]; 第二十五套 填空: 函数fun的功能是进行数字字符转换。 若形参ch中是数字字符’0’~’9’,则’0’转换成’9’,‘1’转换成‘8’,‘2’转换成‘7’,……,‘9’转换成‘0’;若是其它字符则保持不变;并将转换后的结果作为函数值返回。 1、char2、ch<=’9’3、‘0’ 改错: 将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。 1、p改为*p2、“”改为‘’ 编程: N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。 请编写函数fun,它的功能是: 求出平均分,由函数值返回。 { doublesum=0; while(h->next) { h=h->next; sum+=h->s; } returnsum/N; } 第二十六套 填空: 函数fun的功能是进行字母转换。 若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;若是其它字符则保持不变;并将转换后的结果作为函数值返回。 1、&&2、‘A’3、ch 改错: 给一维数组a输入任意4个整数,并按下例规律输出。 例如输入1、2、3、4,程序运行后将输出以下方阵。 4123 3412 2341 1234 1、a改为a[]2、aa[j]改为a[j] 编程: 请编写一个函数fun,它的功能是: 计算并输出给定整数n的所有因子(不包括1与n自身)之和。 规定n的值不大于1000. { inti,sum=0; for(i=2;i if(n%i==0) sum+=i; returnsum; } 第二十七套 填空: 函数fun的功能是: 计算f(x)=1+x+x^2/2! -x^3/3! -x^4/4! +……+(-1)^(n-2)x^(n-1)/(n-1)! +(-1)^(n-1)x^n/n! 的前n项之和。 1、12、-13、t 改错: 从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。 在每组中,可以没有黑球,但必须要有红球和白球。 组合数作为函数值返回。 正确的组合数应该是15.程序中i的值代表红球数,j的值代表白球数,k代表黑球数。 1、i=0改为i=12、两个的K改为小写的k 编程: 请编写函数fun,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 国家 二级