国家二级C语言机试(函数和数组)模拟试卷20
国家二级C语言机试(函数和数组)模拟试卷20(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.以下选项中叙述错误的是(分数:2.00)A.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内B.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值√C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.C程序函数的形参不可以说明为static型变量解析:解析:在函数定义的静态变量,只需要赋值1次,即可保存初始值,不需要每次调用时都赋初始值。
2.有以下程序 int flint x); main(){int n=1,m; m=f(f(f(n))); printf("%\n",m);} int f(int x) {return x*2;} 程序运行后的输出结果是(分数:2.00)A.1B.2C.4D.8 √解析:解析:程序考查了函数的调用。
对于m=f(f(f(n))));首先计算最内层的函数调用f(n),执行f函数,得到返回值2,然后计算f(2),得到返回值为4,最后计算f(4),得到计算结果为8。
3.有以下程序#include<stdio.h>int fun(int x,int y) main() { if(x==y)return(x);{ int a=4,b=5,c=6; else return((x+y)/2);printf("%d\n",fun(2*a,fun(b,c)));} } 程序运行后的输出结果是(分数:2.00)A.3B.6 √C.8D.12解析:解析:fun(b,c)即fun(5,6),5!=6,所以返回(5+6)/2=5;fun(2*a,5)即fun(8,5),8!=5,所以返回(8+5)/2=6。
4.有以下程序 #include main() int flint x,int y) { int a=3,b=4,c=5,d; {return((y-x)*x);) d=f(f(a,b),f(a,c)); printf("%d\n",d); } 程序运行后的输出结果是(分数:2.00)A.10B.8C.9 √D.7解析:解析:本题考查函数的嵌套调用。
首先计算f(a,b)与f(a,c),f(a,b)=(b-a)*a=3,f(a,c)=(c-a)*a=6,然后计算f(3,6)=(6-3)*3=9。
5.有以下程序#include double f(double x);main()double f(double x) {double a=0;int i;{return x*x+1;} for(i=0;i(分数:2.00)A.401B.500C.503 √D.1404解析:解析:由于函数f的作用是对形参x求平方再加1,所以在主函数中,循环第一次执行后变量a的值等于1,第二次执行后,变量a的值等于102,第三次执行后,变量a的值等于503。
6.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是(分数:2.00)A.形参只是形式上的存在,不占用具体存储单元B.函数的形参和实参分别占用不同的存储单元√C.同名的实参和形参占同一存储单元D.函数的实参和其对应的形参共占同一存储单元解析:解析:在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。
在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。
当调用结束后,形参单元被释放,实参单元仍保留并维持原值。
7.有以下程序void fun(int a,int b,int c) {a=b;b=c;c=a;} main(){int a=10,b=20,c=30;fun(a,b,c); printf("%d,%d,%d\",c,b,a);} 程序运行后的输出结果是(分数:2.00)A.10,20,30B.20,30,10C.30,20,10 √D.0,0,0解析:解析:函数fun中采用了变量作为参数,那么参数传递以后,形参a,b,c的变化对于实参a,b,c是没有影响的,因此主函数中a,b,c的值经过fun调用以后,值没有变化。
8.有以下程序#include int flint x);main() int f(int x) {int a,b=0;{return x*x+1;} for(a=0;a(分数:2.00)A.BCDB.BDI √C.ABED.BCF解析:解析:在函数main()中,第一次执行for循环时,b的值等于1,此时输出字母B;第二次执行for 循环时,b的值等于3,此时输出字母D;第三次执行for循环时,b的值等于8,此时输出字母I。
9.若有以下程序void flint x) main(){int z=123456;{if(x>=10) f(z);} {printf("%d-",x%10);f(x/10);} else printf("%d",x);}则程序的输出结果是(分数:2.00)A.6-5-4-3-2-1 √B.6-5-4-3-2-1-C.1-2-3-4-5-6D.1-2-3-4-5-6-解析:解析:函数f的主要功能为逆置输出整数x的每一位数据,如果z的值为123456,逆置输出的结果为6-5-4-3-2-1。
10.以下与函数fseek(fp,OL,SEEK SET)有相同作用的是(分数:2.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp) √解析:解析:本题主要考查文件系IO函数的使用,fseek函数用于设置文件指针的位置,feof函数用于判断是否已经到了文件结束,ftell函数返回文件指针的当前位置,fgetc从文件读取一个字符,rewind函数将文件指针重新指向文件开始。
题目当中fseek(fp,OL,SEEK_SET)表示把文件指针移动到文件的开始位置0,和rewind函数功能一致。
11.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。
程序在编译时出错main() /*Beginning*/ {int r;float s; scanf("%d",r); s=*π*r*r;printf("s=%f\n",s); } 出错的原因是(分数:2.00)A.注释语句书写位置错误B.存放圆半径的变量r不应该定义为整型C.输出语句中格式描述非法D.计算圆面积的赋值语句使用了非法变量√解析:解析:本题考查了C语言的基本输入输出函数。
选项A错误,代码里面的注释是正确的,“/*”和“*/”配对;选项B错误,r变量定义为整型是可以的;选项C输出语句格式正确;选项D正确,计算s 的时候s=*π*r*r使用了未定义变量π。
12.以下程序函数f的功能是:当flag为1时,进行由小到大排序:当flag为0时,进行由大到小排序void flint b[],int n,int flag) main() {int i,j,t; {int a[10]={5,4,3,2,1,6,7,8,9,10},i; for(i=0;iblj]:b[i](分数:2.00)A.1,2,3,4,5,6,7,8,9,10,B.3,4,5,6,7,2,1,8,9,10,√C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,解析:解析:本题主要考查函数的调用。
在min函数中,两次调用f函数进行排序,f函数有三个参数,第一个参数是数组地址,第二个参数是需要排序的数据个数,第三个参数指定排序依据。
第一次调用f函数的时候,从第三个元素开始对5个元素进行从大到小的排序,因此调用f函数转换数组a的值分别为:5,4,7,6,3,2,1,8,9,10;第二次调用f函数对数组a的前5个元素进行从小到大的排序,因此排序完成后数组a的值变成:3,4,5,6,7,2,1,8,9,10。
13.有以下程序,其中k的初值为八进制数#include main() {int k=011;printf("%d\n",k++);} 程序运行后的输出结果是(分数:2.00)A.12B.11C.10D.9 √解析:解析:本题主要考查基本数据类型和格式化输出函数printf。
变量k的初值为011,表示8进制的11,十进制值为9,printf输出k++的值,++在k的后面表示先使用后自增,因此输出的值为9。
14.有以下程序#include int fun(int x){int p;if(x=0 ‖ x==1)return(3);p=x-fun(x-2);return(p);} main(){printf("%d\n",fun(9));} 程序运行后的输出结果是(分数:2.00)A.5B.9C.4D.7 √解析:解析:函数fun x的值为9,因此fun(9)=9-fun(7)=9-(7-(5一(3.3))),因此答案为7。
15.有以下程序#include int fun(int n){int a;main() if(n==1)return 1;{ a=n+fun(n-1);printf("%d\n",fun(5)); return(a);} j 程序的输出结果是(分数:2.00)A.14B.10C.15 √D.9解析:解析:函数劬为递归定义的函数,当调用fun(5)→5+fun(4)→5+4+fun(3)→5+4+3+fun(2)→5+4+3+2+fun(1),因此最后的结果为15。
16.有以下程序#include int fun(int a,int b){return a+b;} main(){int x=6,y=7,z=8,r;r=fun(fun(x,y),z--); printf("%d\n",r);} 程序运行后的输出结果是(分数:2.00)A.15B.21 √C.20D.31解析:解析:本题考查函数的调用,函数fun功能为求两个数据的和。
主函数中表达式r=fun(funl[x,y),z--),首先计算内层调用。
fun(x,y),计算结果为13,然后外层调用rune(13,8),结果为21。
17.以下选项中函数形参不是指针的是(分数:2.00)A.fun(int&p){…}√B.fun(int a[10]){…}C.fun(int*a){…}D.fun(int P[]){…}解析:解析:C语言中形参数组是指针变量,其数组中元素的个数由传递的实参数组决定,因此可以在定义的时候,不给出元素个数的说明,因此选项B和D)形参均为指针变量,选项A的定义在C语言中不存在的。
国家二级C语言机试(操作题)模拟试卷678(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷678(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按hum成员进行升序排列。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>typedef struet{int num;char name[10];}PERSON;/******found******/void fun(PERSON___1___){/******found******/___2___temp:if(std[0].num>std[1].num){temp=std[0];std[0]=std[1];std[1]=temp;}if(std[0].num>std[2].num){temp=std[0];std[0]=std[2];std[2]=temp;}if(std[1].num>sta[2].num){temp=std[1];std[1]=std[2];std[2]=temp;}}main( ){PERSON std[]={5,”Zhanghu”,2,”WangLi”,6,”LinlMin”};int i;/******found******/fun(___3___);printf(“\nThe result is:\n”);for(i=0;i<3;i++)printf(“%d,%s\n”,std[i].num,std[i].name);}正确答案:(1)std[](2)PERSON(3)std解析:本题考查:数据类型的定义;数组元素的操作;函数参数的传递。
要使用函数对整个数组进行操作时,应使用数组名作为函数的实参。
当使用数组名作实参时,函数传递的实际上是数组的首地址,而并非数组本身,此时形参除了可以定义为指针变量外,还可以定义为数组,并且数组可以不指定大小。
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷372.doc
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷372一、程序填空题1 函数fun的功能是:计算的前n项之和。
若x=2.5,n=15时,函数值为:1.917914。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include #include double fun (double x. int n){ double f,t; int i;/*********found**********/f=____1____; t =—1;for(i=1;i二、程序修改题2 给定程序MODI1.C中函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。
在每组中,可以没有黑球,但必须要有红球和白球。
组合数作为函数值返回。
正确的组合数应该是15。
程序中i的值代表红球数,j 的值代表白球数,k的值代表黑球数。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动maln函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>int fun(){ int i,j ,k,sum=0;printf("\nThe result :\n\n") ;{ k=8—i—j;/*********found**********/if(K>=0 &K<=6){ sum=sum+1;printf ( "red: o04dwhite: %4d black: %4d\n", i,j ,k) ;}}}return sum;}main (){ int sum;sum=fun () ;printf ("sum =%4d\n\n",sum) ;}三、程序设计题3 请编写函数fun,其功能是:计算并输出下列多项式的值:例如,在主函数中从键盘给n输入15,则输出为:s=2.718282。
计算机二级c语言试题及答案
计算机二级c语言试题及答案1.(A )是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从 C 开始执行。
A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main函数D、包含文件中的第一个函数3、以下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是( B ) 。
A、 C程序的工作过程是编辑、编译、连接、运行B、 C语言不区分大小写。
C、 C程序的三种基本结构是顺序、选择、循环D、C程序从main函数开始执行5.下列正确的标识符是(C )。
B、a[i]C、a2_iD、int t5~8题为相同类型题考点:标识符的命名规则只能由字母、数字、下划线构成数字不能作为标识符的开头关键字不能作为标识符选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B )。
A、3axB、xC、caseD、-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是( C )。
A、 %xB、a+bC、a123选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。
A、print _3d db8 aBcB、Iam one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D )。
国家二级C语言机试(函数和数组)模拟试卷22
国家二级C语言机试(函数和数组)模拟试卷22国家二级C语言机试(函数和数组)模拟试卷22(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.有以下程序#include main(){ int c[6]={10,20,30,40,50,60},*p,*s;p=c;s=&c[5];printf("%d\n",s-p);} 程序运行后的输出结果是(分数:2.00)A.50B.6C.5 √D.60解析:解析:主函数中指针变量p指向数组c,s保存了数组最后一个元素的地址,那么s中为两个地址之间的元素差5。
2.以下叙述中正确的是(分数:2.00)A.一条语句只能定义一个数组B.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式C.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元√D.在引用数组元素时,下标表达式可以使用浮点数解析:解析:数组的定义格式:类型说明符数组名[整型常量表达式]….;可以同时定义多个类型相同的数组,之间以逗号分隔开,数组的类型表明了数组中元素的数据类型,数组中所有元素的类型相同,数组经过定义以后就可使用,编译程序将对其分配一片连续的存储空间进行连续存储。
C语言中只能单个引用数组元素而不能一次引用整个数组。
引用格式为:数组名[下标],引用元素时,需要注意下标只能为整型常量或整型表达式。
3.以下叙述中正确的是(分数:2.00)A.语句int a[]={0};是不合法的,遗漏了数组的大小B.语句char a[2]={"A","B"};是合法的,定义了一个包含两个字符的数组C.语句int a[8]={0};是合法的√D.语句char a[3];a="AB";是合法的,因为数组有三个字符空间的容量,可以保存两个字符解析:解析:当系统为所定义的数组在内存中开辟~串连续的存储单元时,这些存储单元中并没有确定的值,可以在定义语句中为所定义数组的各个元素赋初值。
国家二级C语言机试(操作题)模拟试卷405(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷405(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。
例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、’’ZhangQi’’、93、85、87,修改后输出t中的数据应为:10004、’’LiJie’’、93、85、87。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<string.h>3 struct student {4 long sno;5 char name[10];6 float score[3];7 };8 void fun(struct student *b)9 {10 /**********found**********/11 b__1__=10004;12 /**********found**********/13 strcpy(b__2__,’’LiJie’’);14 }15 main( )16 { struct student t={10002,’’ZhangQi’’,93,85,87};17 int i;18 printf(‘‘\n\nThe original data:\n’’);19 printf(‘‘\nNo:%id Name:%s\nScores:’’,t.sno,t.name);20 for(i=0;i<3;i++)printf(‘‘%6.2f’’,t.score[i]);21 printf(‘‘\n’’);22 /**********found**********/23 fun( __3__);24 printf(‘‘\nThe data after modified:\n’’);25 printf(‘‘\nNo:%id Name:%s\nScores:’’,t.sno,t.name);26 for(i=0;i<3;i++) printf(‘‘%6.2f’’,t.score[i]);27 printf(‘‘\n’’);28 }正确答案:(1)->sno (2)->name(3)&t解析:函数fun的功能是对形参b所指结构体变量中的数据进行修改。
国家二级(C语言)机试模拟试卷152(题后含答案及解析)_0
国家二级(C语言)机试模拟试卷152(题后含答案及解析)题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题程序填空题(30分)1.给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p 所指字符数组中,形成一个新串。
例如,形参s所指的字符串为:baawrslkjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!正确答案:(1)t=i (2)i (3)0或“\0”解析:函数fun的功能是对形参s所指字符串中下标为奇数的字符按ASCII 码大小递增排序,并将排序后下标为奇数的字符保存在另外一个数组中。
在fun 函数里,采用选择排序法对奇数位置的字符进行排序,排序之后将这些字符保存在p所指字符数组。
在选择排序法中的升序排序中,首先从数组中挑选一个最小的元素,把它和第一元素交换,接着从剩下的n-1个元素中再挑出一个最小的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。
程序修改题(30分)2.给定程序MODll.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。
例如:当s所指的字符串为:“ABCDE”时,则t所指的字符串应为:“EDCBAABCDE”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!正确答案:(1)int i,sl;(2)t[i]=s、[sl-i-1];解析:本题中函数的功能是先将字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
解题思路是首先对字符串进行逆序存放,然后再把字符串正序连接在串后。
国家二级C语言机试(操作题)模拟试卷740(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷740(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.使用VC++2010打开考生文件夹下blank1中的解决方案。
此解决方案的项目中包含一个源程序文件blank1.c。
在此程序中,函数fun的功能是:将a 所指4×3矩阵中第k行的元素与第0行元素交换。
例如,有下列矩阵:1 2 34 5 67 8 910 11 12若k为2,程序执行结果为:7 8 94 5 61 2 310 11 12请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BIANK1.C中。
不得增行或删行,也不得更改程序的结构!试题程序:#inclucle<stdio.h>#deine N3#defitie M4/*********found*********/void fun(int(*a)[N],int【1】){int i,temp;/*********found*********/for(i=0;i<【2】;i++){temp=a[0][i];/*********found*********/a[0][i]=【3】;a[k][i]=temp?}}main( ){int x[M][N]=({1,2,3),{4,5,6},{7,8,9},{10,11,12}},i,j;printf(“The array before moving:\n\n”);for(i=0;i<M;i++){for(j=0;j<N;j++)printf(“%3d”,x[i][j]);printf(“\n\n”);}fun(x,2);printf(“The array after moving:\n \n”);for(1=0;1<M;i++){for(J=0,j<N;j++)printf(“%3d”,x[i][j]);printf(“\n\n”),}}正确答案:(1)k(2)N(3)a[k][i]解析:填空1:变量k在函数体fun中已经使用,但在函数体中没有定义,肯定是在函数的形参中定义的,所以应填k。
国家二级C语言机试(操作题)模拟试卷235(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷235(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.下列给定程序中,函数fun的功能是:将自然数1~10及其平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
请在程序下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构! 试题程序:1 #include<math.h>2 #include<stdio.h>3 int fun (char*fname)4 (FILE*fp;int i , n;float x;5 if((fp=fopen(fname,’’w’’))==NULL)6 return 0;7 for(i=1;i<=10;i++)8 /********* found*********/9 fprintf(【1】,’’%d%f\n’’,i,sqrt((double)i));10 printf(‘‘\nSucceed!!\n’’);11 /*********found*********/12 【2】;13 printf(“\nThe data in file:\n’’);14 /*********found*********/15 if((fp=fopen(【3】,’’r’’))==NULL)16 return 0;17 fscanf(fp,’’%d%f’’,&n,&x);18 while(!feof(fp))19 {printf(‘‘%d%f\n’’,n,x);20 fscanf(fp,’’%d%f’’,&n,&x);}21 fclose(fp);22 return 1;23 }24 main( )25 { char fname[]=‘‘myfile3.txt’’;26 fun(fname);27 }正确答案:(1)fp (2)fclose(fp) (3)fname解析:填空1:fprintf函数的形式是:fprintf(文件指针,格式字符串,输出表列);,所以填入文件指针fp。
国家二级(C语言)机试模拟试卷136(题后含答案及解析)_0
国家二级(C语言)机试模拟试卷136(题后含答案及解析)题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题程序填空题(30分)1.函数fun的功能是:计算的前n项之和。
若x=2.5,n=15时,函数值为:1.917914。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!正确答案:(1)1 (2)-1 (3)t解析:本题中矗m函数的功能是求级数和,观察级数项规律:从第二项开始,间隔出现正负数,级数项的分母是n阶乘,分子是x的n次方,所以级数项为:(-1)n-1xn/(n!),n=1,2,3……,后一项在前一项的基础上乘以(-1)*x,除以n。
程序修改题(30分)2.给定程序MODll.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。
注意:字符串的长度最长允许为79。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!正确答案:(1)p=s;(2)while(*p++);解析:在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串。
然后通过“printf("\nThe string atler insert:\"%s\"、n",s);”函数直接输出结果。
程序设计题(40分)3.假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号:若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
例如,字符串中的内容为:******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为;*******A*BC*DEF*G****。
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷338.doc
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷338一、程序填空题1 给定程序中,函数fun的功能是:将NxN矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。
例如,若N=3,有下列矩阵:1 2 3交换后为:3 2 l4 5 6 4 5 67 8 9 9 8 7请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>#define N 4void fun (int ____1____, int n){ int i,s;}main ( ){ int t [] IN]={21,12,13,24,25,16,47,38,29,11,32,54,42, 21,33,10 },i,j ;printf ("\nThe original array:\n") ;{ for(j=0; j<N; j++) printf("%dprintf ("\n") ;}fun (t,N) ;printf("\nThe result is:\n");{ for(j=0; j<N; j++) printf("%dprintf ( " \n") ;}}二、程序修改题2 由N个有序整数组成的数列己放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。
若找到,返回其下标值;反之,返回—1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high( low<high),然后把m与中间位置(mid)中元素的值进行比较。
如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。
