C语言练习题(第八套)

合集下载

第8套

第8套

2008秋第8套一、必答题[1]. 假设二进制代码为11111111,如将其作为带符号整数的补码,它所表示的整数值为__-1______[2]. 广域网中采用的交换技术大多是____C____。

A.电路交换B. 报文交换C. 分组交换D. 自定义交换[3]. 彩色显示器每一个像素的颜色由三基色红、绿和__蓝___合成得到,通过对三基色亮度的控制能显示出各种不同的颜色。

[4]. 某些鼠标器左右两按键的中间有一个滚轮,它的作用通常是___B_____。

A.鼠标器在桌面的移动B.控制屏幕内容进行上下移动,与窗口右边框滚动条的功能一样C.间隔鼠标的左键和右键D.调整鼠标器的灵敏度[5]. 高级程序设计语言的4个基本组成成分有:___A______。

A.数据,运算,控制,传输B.外部,内部,转移,返回C.子程序,函数,执行,注解D.基本,派生,定义,执行[6]. 电子邮箱一般不在用户计算机中,而是在电子邮件服务器的内存中。

(判断题)F[7]. 下列叙述中,错误的是___A_____。

A.程序就是算法,算法就是程序B.程序是用某种计算机语言编写的语句的集合C.软件的主体是程序D.只要软件运行环境不变,它们功能和性能不会发生变化[8]. 一台计算机的机器语言就是这台计算机的指令系统。

(判断题)T[9]. 在光纤作为传输介质的通信系统中,采用的信道多路复用技术主要是___D_____多路复用技术。

A.频分 B. 时分 C. 码分 D. 波分[10]. I/O操作与CPU的数据处理操作往往是并行进行的。

(判断题)T[11]. 下列___A_____都是目前因特网和PC机常用的图像文件格式。

①BMP ②GIF ③WMF ④TIF ⑤AVI⑥3DS ⑦MP3 ⑧VOC ⑨JPG ⑩WAVA. ①②④⑨B. ①②③④⑨C. ①②⑦D. ①②③⑥⑧⑨[12]. CRT彩色显示器采用的颜色模型为__C_______。

A. HSBB. RGBC. YUVD. CMYK[13]. 保证数据的完整性就是_B_______。

C语言第8次实训题目及参考答案

C语言第8次实训题目及参考答案
if(sushu(i)==1) {
if(sushu(i+2)==1) {
printf("%d %d\n",i,i+2); count++; } } } printf("200~1000 范围内容一共%d 对双胞胎数\n",count); }
t=t*a; } return t; } void main() { int n,m,i,j,s=0;//i 是底数,j 是指数 scanf("%d,%d",&n,&m); for(i=n,j=m;i<=m;i++,j--) {
s+=mi(i,j); } printf("s=%ld",s); }
4、求[200,1000]的双胞胎数的对数。双胞胎数:两素数差为 2 称为双胞胎数。 提示:在第 2 题的基础上进行修改:自定义函数不变,在 main()函数中实现对双胞胎数的 判断:如果 a 是素数,再进一步判断 a+2 是不 0 是素数。如果 a+2 也是素数,则 a、a+2 为 双胞胎数。 参考代码: int sushu(int i) {
for(j=2;j*j<=i;j++) {
if(i%j==0) {
flag=0; break; } } return flag; }
#include <stdio.h> void main() {
int i,count=0; for(i=200;i>=2;i--) {
if(sushu(i)==1) {
printf("%d ",i); count++; }

2024年3月青少年软件编程C语言等级考试试卷八级真题

2024年3月青少年软件编程C语言等级考试试卷八级真题

2024年3月青少年软件编程C语言等级考试试卷八级真题分数:100题数:4一、编程题(共5题,共100分)1.道路N个以1...N标号的城市通过单向的道路相连。

每条道路包含两个参数:道路的长度和需要为该路付的通行费(以金币的数目来表示)。

Bob and Alice过去住在城市 1.在注意到Alice在他们过去喜欢玩的纸牌游戏中作弊后,Bob和她分手了,并且决定搬到城市N。

他希望能够尽可能快的到那,但是他囊中羞涩。

我们希望能够帮助Bob找到从1到N最短的路径,前提是他能够付的起通行费。

时间限制:1000内存限制:65536输入第一行包含一个整数K,0<=K<=10000,代表Bob能够在他路上花费的最大的金币数。

第二行包含整数N,2<=N<=100,指城市的数目。

第三行包含整数R,1<=R<= 10000,指路的数目.接下来的R行,每行具体指定几个整数S,D,L和T来说明关于道路的一些情况,这些整数之间通过空格间隔:S is道路起始城市,1<=S<=N D is 道路终点城市,1<=D<=N L is道路长度,1<=L<=100T is通行费(以金币数量形式度量),0<=T<=100注意不同的道路可能有相同的起点和终点。

输出输入结果应该只包括一行,即从城市1到城市N所需要的最小的路径长度(花费不能超过K个金币)。

如果这样的路径不存在,结果应该输出-1。

样例输入样例输出2.题Freda的越野跑Freda报名参加了学校的越野跑。

越野跑共有N人参加,在一条笔直的道路上进行。

这N个人在起点处站成一列,相邻两个人之间保持一定的间距。

比赛开始后,这N个人同时沿着道路向相同的方向跑去。

换句话说,这N个人可以看作x轴上的N个点,在比赛开始后,它们同时向x轴正方向移动。

假设越野跑的距离足够远,这N个人的速度各不相同且保持匀速运动,那么会有多少对参赛者之间发生“赶超”的事件呢?时间限制:1000内存限制:262144输入第一行1个整数N。

二级C语言试题总结(八套)

二级C语言试题总结(八套)

第一套1.若变量已正确定义并赋值,对库函数错误调用的是A) k=scanf("%d%d",&i,&j);B) printf("\\%d\\\n",k);C) getchar(ch);D) putchar(ch);2.要求定义一个返回值为double类型的名为mysum的函数,其功能为求两个double类型数的和值,正确的定义是:A) mysum(double a,b){ return (a+b); }B) mysum(double a, double b){ return a+b; }C) double mysum(int a, intb);{return a+b; }D) double mysum(double a, double b){ retrun (a+b); }3.以下是对fun函数的正确调用:fun(a+b,fun(a+b,(a,b)));则fun函数有______个形参。

4.若有以下函数定义:myfun(double a, int n){…… }则myfun函数值的类型是A) void B) doubleC) int D) char5.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值。

以下选项中错误的程序是A) double fun( int a,int b ){…… }main(){ ┇fun( i,k );┇}B) main(){printf( "%f\n",fun( 2,10 ));┇}double fun( int a,int b ){ …… }C) double fun( int, int );main(){ ┇x=fun( i,k );┇}double fun( int a,int b ){ …… }D) main(){ double fun(int i,int y);┇x=fun( i,k );┇}double fun(int a,int b){ ……}6.若有以下函数:int fun(int x){ return (1+x*x); }则语句printf(" %d\n",fun(fun(fun(fun( 1 )))) );的输出结果____________第二套1.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是()A)switch(x){ case1.0∶printf("*\n");case2.0∶printf("**\n");}B)switch(int(x)){ case1∶printf("*\n");case2∶print f("**\n");}C)switch(a+b){ case1∶printf("*\n");case1+2∶printf("**\n");}D)switch(a+b){ case1∶printf("*\n");casec∶printf("**\n");}2.执行下面程序片段的结果是()int x=123;do{ printf("=\n",x--);}while(!x);A)打印出321 B)打印出123C)不打印任何内容 D)陷入死循环3.以下程序的输出结果是()# includemain(){ int i=0,a=0;while(i<20){ for(;;){ if((i)==0)break;else i--; }i+=11;a+=i;}printf("%d\n",a);}A)21 B)32 C)33 D)114.下列与表达式“b=(a<0?-1∶a>0?1∶0)”的功能等价选项是()A)b=0;if(a>=0)if(a>0) b=1;else b=-1;B)if(a>0)b=1;else if(a<0)b=-1;elseb=0C)if(a)if(a<0) b=-1;else if(a>0)b=1;else b=0;D) b=-1;if(a)if(a>0)b=1;else if(a==0)b=0;else b=-1;5.若有以下定义:char a; int b; float c; double d; 则表达式“a*b+d-c”值的类型为()A)float B)intC)char D)double6.以下叙述中正确的是()A)在函数中必须要有return语句B)在函数中可以有多个return语句,但只执行其中的一个C)return语句中必须要有一个表达式D)函数值并不总是通过return语句传回调用处7.有以下程序float fun(int x,int y){ return(x+y);}main(){int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是()A)编译出错 B)9C)21 D)9.08.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,则对a数组元素不正确的引用是()A)a[p-a] B)*(&a[i])C)p[i] D)a[10]9.以下叙述中正确的是()A)全局变量的作用域一定比局部变量的作用域大B)静态(static)类型变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值10.若有如下程序:main(){char a[][9]={"china","Japan","USA","France"};printf("\′%s\′\n",a[2]);}则程序运行后的输出结果是()A)′Japan′B)′USA′C)USA D)′inaJapanUSAFrance′第三套1.若变量c为char类型,能正确判断出c为小写字母的表达式是()A)′a′<=c<=′z′B)(c>=′a′)||(c<=′z′)C)(′a′=C)D)(c>=′a′)&&(c<=′z′)2.下面程序的输出结果是()main(){ int x=2,y=0,z;x+=3+2;printf("%d",x);x*=y=z=4;printf("%d",x); }A)728 B)无法计算C)7,4 D)8,43.有如下程序main(){int x=1,a=0,b=0;switch(x){case 0∶b++;case 1∶a++;case 2∶a++;b++;}printf("a=%d,b=%d\n",a,b);}程序运行后的输出结果是()A)a=2,b=1 B)a=1,b=1C)a=1,b=0 D)a=2,b=24.以下选项中,正确的if-else语句是()A)if(x!=0)printf("%d",x)elseprintf("%d",-x);B)if(x!=0){x=x+y;printf("%d",x); }elseprintf("%d",-x);C)if(x!=0)x=x+y;printf("%d",x);elseprintf("%d",-x);D)if(x!=0){x=x+y;printf("%d",x)};elseprintf("%d",-x);5.有以下程序段int n=0,p;do {scanf("%d",&p);n++;}while(p!=12345 &&n<3);此处do-while循环的结束条件是()A)p的值不等于12345并且n的值小于3B)p的值等于12345并且n的值大于等于3C)p的值不等于12345或者n的值小于3D)p的值等于12345或者n的值大于等于36.若有如下程序段:main(){ int n=0;while(printf("*")){ n++;if(n<3)break; }}则下列描述正确的是()A)其中循环控制表达式与0等价B)其中循环控制表达式与’0’等价C)其中循环控制表达式是不合法的D)以上说法都不对7.C语言中main函数参数的非法表示形式是()A)main(char *argv[],int argc)B)main(int a,char**b)C)main(int y,char *x[])D)main(int argv,char *argc[])8.设有如下枚举类型定义:enum language {Basic=3,Assembly,Ada=100,COBOL,Fortran};枚举类型Fortran的值为()A)4 B)7C)102 D)1039.阅读下述程序段:y=-1;if (x!=0)if (x>0)y=1;elsey=0;该程序段所描述的数学关系是()A)y=-1(x<0)0(x=0)1(x>0)B)y=1(x<0)0(x=0)-1(x>0)C)y=0(x<0)-1(x=0)1(x>0)D)y=-1(x<0)1(x=0)0(x>0)10.设有数组定义:char array[]="China";蚴 閍rray所占的空间为()A)4个字节 B)5个字节C)6个字节D)7个字节第四套1.有以下程序:main(){intx=0xFFFF;printf("%d\n",x--);}执行后的输出结果是()A)32767 B)FFFEC)-1 D)-327682.以下程序的输出结果是()#include#includemain(){ char str[12]={′s′,′t′,′r′,′i′,′n′,′g′};printf("%d\n",strlen(str));}A)6 B)7C)11 D)123.若有以下定义:char s[20]="programming",*ps=s;则不能代表字符o的表达式是()A)ps+2 B)s[2]C)ps[2] D)ps+=2,*ps4.关于语句“for(表达式1;表达式2;表达式3)”,下面说法中错误的是()A)for语句中的三个表达式可以同时省略B)for语句可以用于循环次数不确定的情况C)for语句中表达式2只能是关系表达式或逻辑表达式D)for语句中表达式1和表达式3可以是逗号表达式5.执行下面程序片段的结果是()int x=23;do{ printf("-",x--);}while(!x);A)打印出321 B)打印出23C)不打印任何内容 D)陷入死循环6.与y=(x>0?1∶x<0?-1∶0);的功能相同的if语句是()A)if(x>0)y=1;else if(x<0)y=-1;else y=0;B)if(x)if(x>0) y=1;else if(x<0) y=-1;else y=0;C)y=-1;if(x)if(x>0)y=1;else if(x==0) y=0;else y=-1;D)y=0;if(x>=0)if(x>0) y=1;else y=-1;7.标准库函数fgets(s,n,f)的功能是()A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C)从文件f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为n-1的字符串存入指针s所指的内存8.若有如下函数调用语句:sub(a,1,fun(b,c),d+c,(a+d,c*f));则在该函数调用语句中含有实参的个数是()A)5 B)7C)10 D)69.若要定义a为3×4的二维数组,正确的定义语句是()A)float a(3,4); B)float a[3][4];C)float a(3)(4); D)float a[3,4];10.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};int i,s=0;for (i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()A)11 B)19C)13 D)20第五套1.以下程序的输出结果是()#includemain (){int a,b,d=241;a=d/100%9b=(-1)&&(+1);printf("%d,%d,a,d"); }A)6,1 B)2,1C)6,0 D)2,02.关于if后一对圆括号中的表达式,以下叙述中正确的是()A)只能用逻辑表达式B)只能用关系表达式C)既可用逻辑表达式也可用关系表达式D)可用任意表达式3.有以下程序main(){ int a,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d\n",a);}程序运行后的输出结果是()A)7 B)8C)9 D)104.C语言中()A)不能使用do-while语句构成的循环B)do-while语句构成的循环必须用break语句才能退出C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环5.当a=1、b=3、c=5、d=4时,执行下面一段程序:if(a if(c elseif(a if(b elsex=3;elesx=6;elsex=7;程序执行后,x的值为()A)1 B)2C)3 D)66.设有如下的函数funct(x)float x;{ x*=x;printf("\n%d",x);return(x);}则函数的类型()A)与参数x的类型相同 B)voidC)int D)无法确定7.在C语言中,不适用于局部变量的存储类说明符是()A)auto B)registerC)static D)extern8.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<5;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是()A)15 B)10C)6 D)39.有以下程序intb=2;int func(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf("%d\n",res);}程序运行后的输出结果是()A)4 B)6C)8 D)10第六套1.下面叙述正确的是()A)define和auto都不能定义为用户标识符B)可以把define和auto定义为用户标识符C)可以把define定义为用户标识符,但auto是C语言的关键字D)可以把auto定义为用户标识符,但define是C语言的关键字2.以下的for循环()for(x=0,y=0;(y!=123)&&(x<4);x++)A)是无限循环 B)循环次数不定C)执行4次 D)执行3次3.下述对C语言字符数组的描述中错误的是()A)字符数组可以存放字符串B)字符数组中的字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较4.设有定义:int a,*p=&a,**pp= &p;,则与a=100;等价的语句为()A)**p=100; B)**pp=100;C)&*p=100; D)*pp=10;5.有以下程序int x=3;do {printf("%d",x-=2);}while(!(--x));程序运行后的输出结果是()A)1 B)30C)1-2 D)死循环6.执行下面程序的正确结果是()main(){ float a=1.9;switch(a){ case 0∶printf("0000");case 1∶printf("1111");case 2∶printf("3333");}printf("%f",a);}A)1.900000 B)111133331.900000C)33331.900000 D)00001111233331.9000007.对下述程序,正确的判断是()main (){ int a, b;scanf("%d,%d",&a,&b);if(a>b)a=b;b=a;else a++;b++;printf("%d,%d",a,b);}A)有语法错误不能通过编译B)若输入4,5则输出5,6C)若输入5,4则输出4,5D)若输入5,4则输出5,58.若有如下程序:sub(int n){intt;if(n==1)returnt=5;else t=sub(n-1)+3;returnt;}main(){printf("%d\n",sub(5));}则程序运行后的输出结果是()A)17 B)18C)19 D)209.下面各被调用函数首部书写正确的是()A)void sub(float x;float y);B)void sub(float x,y)C)void sub(float x,float y)D)void sub(float x,float y);10.设有如下程序:#include"string.h"main(){static char s1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是()A)$8 B)@10C)$9 D)@9第七套1.以下程序运行后,输出结果是()#includess(char *s){char *p=s;while(*p)p++;return(p-s);}main(){char*a="abded";inti;i=ss(a);printf("%d\n",i);}A)8 B)7C)6 D)52.若有如下程序:int sub(){static int n=1;int x=1;x*=n;n++;return x;}main(){int n,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}则程序运行后的输出结果是()A)15 B)120C)34560 D)-309763.在C语言中,函数的隐含存储类别是()A)static B)autoC)extern D)register4.有以下程序:intf1(doublea){returna*a; }intf2(doublex,doubley){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(1.1,2.0);…}变量w中的值是()A)5.21 B)5C)5.0 D)0.05.下面被调用函数sub的函数值的类型是()sub(float a){float b;b=a*a+1;return b;}A)单精度型B)双精度型C)空类型 D)整型6.若有以下定义语句:doublea[5];inti=0;能正确给a数组元素输入数据的语句是()A)scanf("%lf%lf%lf%lf%lf",a);B)for(i=0;i<=5;i++)scanf("%lf",a+i);C)while(i<5)scanf("%lf",&a[i++]);D)while(i<5)scanf("%lf",a+i);7.以下程序的输出结果是()main(){ charss[16]="test\0\n\"";printf("%d,%d\n",strlen(ss),sizeof(ss));}A)4,16 B)7,7C)16,16 D)4,78.以下说法正确的是()A)宏定义是C语句,所以要在行末加分号B)可以使用#undef命令来终止宏定义的作用域C)在进行宏定义时,宏定义不能层层置换D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换9.以下程序的输出结果是()#includemain(){struct stru{int a,b;char c[6];};printf("%d\n",sizeof(stru));}A)2 B)4C)8 D)1010.若有如下定义:int s[3];则下面表达式中不能代表数组元素s[1]的地址的是()A)&s[1] B)&s[0]+1C)s+1 D)s++第八套1.若以下对fun函数的调用是正确的:x=fun(fun(a,b,c),(a+b,a+c),a+b+c);则fun函数的形参个数为()A)3 B)4C)5 D)62.若有说明:int*p, m=5; n;,以下正确的程序段是()A)p=&m;scanf("%d",&p)B)p=&n;scanf("%d",&p)C)scanf("%d",&p)p=&n;D)p=&n;p=&m;3.以下程序调用findmax函数返回数组中的最大值findmax(int*a,int n){ int*p,*s;for(p=a,s=a;p-a if()s=p;return(*s);}main(){ intx[5]={12,21,13,6,18};printf("%d\n",findmax(x,5));}在下划线处应填入的是()A)p>s B)*p>*sC)a[p]>a[s] D)p-a>p-s4.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是()A)p=2*(int*)malloc(sizeof(int));B)p=(int*)calloc(2*sizeof(int));C)p=(int*)malloc(2* sizeof(int));D)p=2*(int*)calloc(sizeof(int));5.下列程序的输出结果是()main(){char *p1,*p2,str[50]="xyz";p1="abcd";p2="ABCD";strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);}A)xyabcAB B)abcABzC)Ababcz D)XycdBCD6.以下叙述中不正确的是()A)一个变量的作用域完全取决于变量定义语句的位置B)全局变量可以在函数以外的任何部位进行定义C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用D)一个变量说明为static存储类是为了限制其他编译单位的引用7.交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符()A)~ B)&C)^ D)|8.fscanf函数的正确调用形式是()A)fscanf(fp,格式字符串,输出表列);B)fscanf(格式字符串,输出表列,fp);C)fscanf(格式字符串,文件指针,输出表列);D)fscanf(文件指针,格式字符串,输入表列);9.以下程序的运行结果是()# define MAX 10int a[MAX],i;main(){ printf("\n");sub1();sub3(a);sub2();sub3(a);}sub2(){ int a[MAX],i,max;max=5;for(i=0;i }sub1(){for(i=0;i }sub3(int a[]){ int i;for(i=0;i printf("\n");}A)0 2 4 6 8 10 12 14 16 180 1 2 3 4B)0 1 2 3 40 2 4 6 8 10 12 14 16 18C)0 1 2 3 4 5 6 7 8 90 1 2 3 4D)0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 18第一套答案:1.C 2.D 3.2 4.C 5.B 6.677第二套答案:1.C 2.B 3.B 4.B 5.D 6.B 7.B 8.D 9.B 10.B 第三套答案: 1.D 2.A 3.A 4.B 5.D 6.B 7.A 8.C 9.C 10.C 第四套答案:1.C 2.A 3.A 4.C 5.B 6.A 7.B 8.A 9.B 10.B 第五套答案:1.B 2.D 3.B 4.D 5.B 6.C 7.D 8.B 9.B第六套答案:1.C 2.C 3.C 4.B 5.C 6.B 7.A 8.A 9.C 10.D 第七套答案:1.D 2.B 3.C 4.C 5.D 6.C 7.A 8.B 9.D 10.D 第八套答案:1.A 2.D 3.B 4.C 5.D 6.B 7.C 8.D 9.D。

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案蓝桥杯第八届C语言试题及答案1. 题目一:字符串反转要求:编写一个函数,实现字符串的反转。

```cvoid reverseString(char* str) {int i = 0, j = strlen(str) - 1;while (i < j) {char temp = str[i];str[i] = str[j];str[j] = temp;i++;j--;}}```答案:上述代码定义了一个名为`reverseString`的函数,它接受一个字符数组`str`作为参数。

通过交换数组两端的字符,实现了字符串的反转。

2. 题目二:寻找最大数要求:给定一个整数数组,找出数组中的最大数。

```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```答案:函数`findMax`接受一个整数数组`arr`和数组的大小`size`作为参数。

它初始化最大数为数组的第一个元素,然后遍历数组,如果发现更大的数,则更新最大数。

最后返回找到的最大数。

3. 题目三:计算阶乘要求:编写一个函数,计算一个整数的阶乘。

```clong long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}```答案:函数`factorial`接受一个整数`n`作为参数。

如果`n`为0,直接返回1,因为0的阶乘定义为1。

否则,初始化结果为1,并通过循环计算从1到`n`的乘积,最后返回计算出的阶乘值。

C语言试卷第8套 含答案

C语言试卷第8套 含答案

第八套一、判断题第1题:花括号"{"和"}"只能作为函数体的定界符参考答案:错第2题:C语言中对二进制位的访问速度比文本文件快参考答案:对第3题:在C语言中,一个float型所占字节数为4 参考答案:对第4题:在标准C中,语句必须以“;”结束。

参考答案:对第5题:在C语言中,可以直接引用整个结构体变量,而不须要引用其各成员。

参考答案:错第6题:函数调用可以作为一个函数的形参参考答案:错第7题:在标准C中,变量可以先使用再定义。

参考答案:错第8题:不可以用FILE定义指向二进制文件的文件指针参考答案:错第9题:在标准C中,while后表达式只能是逻辑或关系表达式。

参考答案:错第10题:在标准C中,所有关系运算符的优先级都不相同参考答案:错二、选择题(请选择正确的选项)第1题:有下列结构体,对该结构体变量stu的成员项引用不正确的是()struct student { int m; floatn; } stu ,*p; 参考答案:AA、stu.nB、p->mC、(*p).mD、p.stu.n第2题:下列函数中不能用于对文件进行输入输出操作的是参考答案:BA、fscanf( )B、printf( )C、fgetc( )D、fputs( )第3题:下述程序代码中有语法错误的行是()。

int i,ia[10],ib[10]; /*第一行*/ for (i=0;i<=9;i++) /*第2行*/ ia[i]=0; /*第3行*/ ib=ia; /第4行*参考答案:DA、第1行B、第2行C、第3行D、第4行第4题:在C语言中,一维数组的定义方式为:类型说明符数组名参考答案:A A、常量表达式B、整型表达式C、常量表达式或整型表达式D、整型常量第5题:设x为int型变量,则执行以下语句x=10;x+=x-=x-x;后,x的值为参考答案:BA、10B、20C、40D、30第6题:设有语句“float x[4][10],*p=x;”,则下列表达式中不属于合法地址的表达式是()参考答案:BA、&x[1][2]B、*(p+1* 10+2)C、x[1]D、p+1* 10+2第7题:以下正确的函数定义形式是:参考答案:AA、double fun(int x,int y)B、double fun(int x;int y)C、double fun(int x;y)D、double fun(int x,y);第8题:以下可以作为C语言合法整数的是参考答案:CA、1010BB、0368C、0XffaD、x2a2第9题:下面程序的输出结果是# include <stdio.h>main(){int a=2,c=5;printf("a=%d,c=%d\n",a,a+c);}参考答案:BA、a=2,c=5B、a=2,c=7C、2,5D、2,7 第10题:以下正确的说法是:(建立函数的目的之一是)参考答案:BA、提高程序的执行效率B、提高程序的可读性C、减少程序的篇幅D、减少程序文件所占内存三、填空题(请把正确的选项填入试题前的空格中)第1题:以下函数用于统计一行字符串中的单词个数,单词之间用空格分隔,请填写缺少的语句。

谭浩强C语言完整详细答案(第8章)

谭浩强C语言完整详细答案(第8章)

谭浩强C语言答案8.1//最大公约数与最小公倍数#include<stdio.h>int gys(int a,int b){int m,n,t,r;if(a<b){t=a;a=b;b=t;}n=a;m=b;while((r=m%n)!=0){m=a;n=r;}return(n);}int gbs(int a,int b){int k;k=a*b/gys(a,b);return k;}void main(){int a,b;printf("请输入两个整数:\n");scanf("%d%d",&a,&b);printf("最大公约数是:%d\n",gys(a,b));printf("最小公倍数是:%d\n",gbs(a,b));}8.2//一元二次方程根的情况#include<stdio.h>#include<math.h>void gen(float a,float b,float c){float k1,k2;if(b*b-4*a*c<0)printf("该函数没有实数根!\n");else if(b*b-4*a*c==0){k1=-b+sqrt(b*b-4*a*c);printf("该函数有两个相同的根为:%3.2f",k1/2);printf("\n");}else{k1=(-b+sqrt(b*b-4*a*c))/(2*a);k2=(-b-sqrt(b*b-4*a*c))/(2*a);printf("该函数有两个不同的根为:%3.2f,%3.2f",k1,k2);printf("\n");}}void main(){float a,b,c;printf("请输入三个实数:\n");scanf("%f%f%f",&a,&b,&c);gen(a,b,c);}8.3//是否为素数#include<stdio.h>#include<math.h>void sushu(int a){int i;for(i=2;i<=a-1;i++)if(a%i==0) {printf("%d不是素数",a);break;}else {printf("%d是素数",a);break;}}void main(){int a;printf("请输入一个实数:\n");scanf("%d",&a);sushu(a);}8.4//矩阵转置#include<stdio.h>#include<math.h>#define N 3int array[N][N];convert(array)int array[3][3];{int i,j,t;for(i=0;i<N;i++)for(j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}void main(){int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&array[i][j]);convert(array);for(i=0;i<N;i++){printf("\n");for(j=0;j<N;j++)printf("%5d",array[i][j]);}}8.5//字符串反向输出#include<stdio.h>//#include<string.h>#include<math.h>void string(char a[]){int i,k;char b[10];for(i=0;a[i]!=0;i++);k=i;for(i=0;i<k;i++)b[i]=a[k-i-1];b[i]=0;//结束字符串标志printf("%s",b);}void main(){char a[10];printf("请输入一个字符串:\n");scanf("%s",a);printf("倒序后的字符串为:\n");string(a);}8.6//连接两个字符串#include<stdio.h>#include<string.h>#include<math.h>char concate(char str1[],char str2[],char str[]) {int i,j;for(i=0;str1[i]!='\0';i++)str[i]=str1[i];for(j=0;str2[j]!='\0';j++)str[i+j]=str2[j];str[i+j]='\0';}main(){char s1[100],s2[100],s[100];scanf("%s",s1);scanf("%s",s2);concate(s1,s2,s);printf("\ns=%s",s);}8.7//找出字符串中的元音字母#include<stdio.h>#include<string.h>#include<math.h>char find(char str1[],char str2[]){int i,j=0;for(i=0;str1[i]!=0;i++){if(str1[i]=='a'||str1[i]=='A'||str1[i]=='e'||str1[i]=='E'||str1[i]=='i'||str1[i]=='I'||str1[i]=='o'||str1[i]=='O'||str1[i]=='u'||str1[i]=='U')str2[j++]=str1[i];else continue;}str2[j]='\0';printf("%s中元音字母是%s\n",str1,str2);}main(){char str1[100],str2[100];scanf("%s",str1);find(str1,str2);}8.8//输入数字1990输出1 9 9 0#include<stdio.h>#include<string.h>void main(){char str[80];scanf("%s",str);insert(str);}insert(str)char str[];{int i;for(i=strlen(str);i>0;i--){str[i*2]=str[i];str[i*2-1]=' ';}printf("%s\n",str);}8.9//统计字母,数字,空格,和其他字符的个数#include<stdio.h>#include<string.h>int alph,digit,space,others;void main(){char text[80];gets(text);alph=0,digit=0,space=0,others=0;count(text);printf("\nalph=%d,digit=%d,space=%d,others=%d\n",alph,digit,space,others);}count(char str[]){int i;for(i=0;str[i]!='\0';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))alph++;else if(str[i]>='0'&&str[i]<='9')digit++;else if(strcmp(str[i],' ')==0)space++;else others++;}8.10//输出最长单词#include<stdio.h>#include<string.h>int zimu(char c){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return(1);elsereturn(0);}int longest(char string[]){int i,point,point1,num=0,nummax=0,flag=1;for(i=0;i<=strlen(string);i++)if(zimu(string[i]))//是字母则记下起始位置和长度if(flag){point=i;flag=0;}elsenum++;else //不是字母则比较长度重新记下初始位置{flag=1;if(num>nummax){nummax=num;point1=point;}}return point1;}void main(){int i;char line[100];gets(line);for(i=longest(line);zimu(line[i]);i++)printf("%c",line[i]);printf("\n");}8.11//冒泡法字符串排序#include<stdio.h>#include<string.h>#define N 10char str[N];main(){int i,flag;for(flag=1;flag==1;){scanf("%s",str);if(strlen(str)>N)printf("input error");else flag=0;}sort(str);for(i=0;i<N;i++)printf("%c",str[i]);sort(char str[N]){int i,j;char t;for(j=1;j<N;j++)for(i=0;(i<N-j)&&(str[i]!='\0');i++)if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}8.12//找根的值,一元三次方程牛顿迭代公式法#include<stdio.h>#include<string.h>#include<math.h>float solut(float a,float b,float c,float d){float x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);return(x);}void main(){float a,b,c,d;scanf("%f,%f,%f,%f",&a,&b,&c,&d);printf("x=%10.7f\n",solut(a,b,c,d));}8.13//递归法#include<stdio.h>#include<string.h>#include<math.h>void main()int x,n;float p();scanf("%d,%d",&n,&x);printf("P%d(%d)=%10.2f\n",n,x,p(n,x));}float p(int tn,int tx){if(tn==0)return(1);else if(tn==1)return(tx);elsereturn(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn);}8.14//输入10个学生5门课的成绩,分别用函数求(1)每个学生的平均分(2)每门课的平均分(3)招出最高分的学生和课程(4)求平均方差//输入10个学生5门课的成绩,分别用函数求(1)每个学生的平均分(2)每门课的平均分(3)招出最高分的学生和课程(4)求平均方差#include<stdio.h>#include<string.h>#include<math.h>#define N 4#define M 4float score[N][M];float a_stu[N],a_cor[M];main(){int i,j,r,c;float h;float s_diff();float highest();input_stu();avr_stu();avr_cor();printf("\n人数科目 1 2 3 4 平均分");for(i=0;i<N;i++){printf("\nNO%2d",i+1);for(j=0;j<M;j++)printf("%8.2f",score[i][j]);//每个学生的各门成绩printf("%8.2f",a_stu[i]); //每个学生的平均成绩}printf("\n课程平均成绩");for(j=0;j<M;j++)printf("%8.2f",a_cor[j]);h=highest(&r,&c);printf("\n最高分为%8.2f在第%d行第%d列\n",h,r,c);printf("\n平均分方差为%8.2f\n",s_diff());}/*输入是个学生的成绩*/input_stu(){int i,j;float x;for(i=0;i<N;i++){printf("请输入第%d个学生的成绩:\n",i+1);for(j=0;j<M;j++){scanf("%f",&x);score[i][j]=x;}}}/*输出每个学生的平均成绩*/avr_stu(){int i,j;float s;for(i=0;i<N;i++){for(j=0,s=0;j<M;j++)s+=score[i][j];a_stu[i]=s/5.0;}}/*输出每门课的平均成绩*/avr_cor(){int i,j;float s;for(j=0;j<M;j++){for(i=0,s=0;i<N;i++)s+=score[i][j];a_cor[j]=s/(float)N;}}/*求最高分和它属于哪个学生,哪门课*/float highest(int *r,int *c){float high;int i,j;high=score[0][0];for(i=0;i<N;i++)for(j=0;j<M;j++)if(score[i][j]>high){high=score[i][j];*r=i+1;//用指针实现双向传递很经典,也可该用全局变量*c=j+1;}return(high);}float s_diff(){int i,j;float sumx=0.0,sumxn=0.0;for(i=0;i<N;i++){sumx+=a_stu[i]*a_stu[i];sumxn+=a_stu[i];}return(sumx/N-(sumxn/N)*(sumxn/N));}8.15//输入10个职工的姓名和职工号按职工号由小到大排列,姓名顺序也随之调整//输入一个职工号用折半法找出该职工的姓名#include<stdio.h>#include<string.h>#include<math.h>#define N 3void input_e(num,name)int num[];char name[N][8];{int i;for(i=0;i<N;i++){printf("\ninput No.");scanf("%d",&num[i]);printf("input name:");getchar();gets(name[i]);}}void sort(num,name)int num[];char name[N][8];{int i,j,min,temp1;char temp2[8];for(i=0;i<N-1;i++){min=i;for(j=i;j<N;j++)if(num[min]>num[j])min=j;temp1=num[i];num[i]=num[min];num[min]=temp1;strcpy(temp2,name[i]);strcpy(name[i],name[min]);strcpy(name[min],temp2);}for(i=0;i<N;i++)printf("\n%5d%10s",num[i],name[i]); }void search(n,num,name)int n,num[];char name[N][8];{int top,bott,min,loca;loca=0;top=0;bott=N-1;if((n<num[0])||(n>num[N-1])) loca=-1;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(n==num[min]){loca=min;printf("number=%d,name=%s\n",n,name[loca]);}else if(n<num[min]) bott=min-1;else top=min+1;}if(loca==0||loca==-1)printf("number=%d is not in table\n",n);}main(){int num[N],number,flag,c,n;char name[N][8];input_e(num,name);sort(num,name);for(flag=1;flag;){scanf("%d",&number);search(number,num,name);printf("continueY/N!");c=getchar();if(c=='N'||c=='n')flag=0;}}8.16//输入16进制输出10进制#include<stdio.h>#include<string.h>#include<math.h>#define MAX 1000main(){int c,i,flag,flag1;char t[MAX];i=0;flag=0;flag1=1;while((c=getchar())!='\0'&&i<MAX&&flag1){if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f'){flag=1;t[i++]=c;}else if(flag){t[i]='\0';printf("\nnumber=%d\n",htoi(t));printf("continue");c=getchar();if(c=='n'||c=='N')flag1=0;else {flag=0; i=0; }}}}htoi(s)char s[];{int i,n;n=0;for(i=0;s[i]!='\0';i++){if(s[i]>='0'&&s[i]<='9')n=n*16+s[i]-'0';if(s[i]>='a'&&s[i]<='f')n=n*16+s[i]-'a'+10;if(s[i]>='A'&&s[i]<='F')n=n*16+s[i]-'A'+10;}return(n);}8.17//递归法#include<stdio.h>void convert(n)int n;{int i;if((i=n/10)!=0)convert(i);putchar(n%10+'0');}main(){int number;scanf("%d",&number);if(number<0){putchar('-');number=-number;}convert(number);}8.18//年月日具体是多少天#include<stdio.h>#include<string.h>#include<math.h>void main(){int year,month,day;int days;int sum_day();int leap();scanf("\n%d%d%d",&year,&month,&day);days=sum_day(month,day);if(leap(year)&&(month>=3)){days+=1;printf("%d年共有366天该天是其中的%d天",days);}elseprintf("%d年共有365天该天是其中的%d天",days); }static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; /*总天数*/int sum_day(int month,int day){int i;for(i=1;i<month;i++)day+=day_tab[i];return(day);}/*是否为闰年*/int leap(int year){int leap;leap=year%4==0&&year%100!=0||year%400==0;return(leap);}。

第8 套考卷排版

第8 套考卷排版

河北省2020年普通高校专科接本科教育选拔考试计算机模拟试卷(八)(考试时间150分钟,总分300分)说明∶请在答题纸的相应位置上作答,在其它位置上作答的无效。

第一部分 C语言(总分150分)一、单项选择题(本大题共 20小题,每小题2分,共 40分。

在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。

)1. 编写C语言程序一般需经过的几个步骤依次是( )。

A.编辑、调试、编译、连接B.编辑、编译、连接、运行C.编译、调试、编辑、连接D.编译、编辑、连接、运行2.以下标识符中,不合法的是( )。

A.4dB._8_dC.IntD.key3.以下叙述正确的是( )。

A.在C程序中,main 函数必须位于程序的最前面B.C程序的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误4.以下不合法的数值常量是( )。

A.0112B.1.34e1C.8.0E0.5D.0x12ed5.若变量已正确定义并赋值,符合C语言语法的表达式是( )。

A.a=2++B.=3,5C.a=a+1=3D.123%46. C语言中,关系表达式和逻辑表达式的值是( )。

A.0B.1C.0或1D.‘T’或‘F’7.变量pi为double型,以下判断pi的值等于3.14写法最恰当的是( )。

A.pi=3.14B.pi==3.14C.pi-3.14=0D.(pi-3.14 <= 1e-6)&&(pi-3.14>=-1e-6)8.在C语言中(以32位PC机为例),5种基本数据类型的存储空间长度的排列顺序为( )。

A.char <int = long int <=float < doubleB.char =int <long int <= float < doubleC. char<int <long int = float = doubleD.char= int = long int <= float < double9.这是一设 int b=2;表达式(b>>2)/(b>>1)的值是( )。

2023年12月GESP编程能力认证C++等级考试八级真题(含答案)

2023年12月GESP编程能力认证C++等级考试八级真题(含答案)

2023年12月GESP编程能力认证C++等级考试八级真题(含答案)一、单选题(每题2分,共30分)。

1.小杨要从A城到B城,又想顺路游览一番。

他有两个选项:第一,坐高铁路到C城游览,再坐高铁或飞机到B城;第二,坐船到D城游览,再坐船、高铁或飞机到B城。

请问小杨从A城到B城共有几种交通方案可以选择?()。

A. 2B. 3C. 5D. 62.以下哪个函数声明是符合语法的,且在调用时可以将二维数组的名字作为实际参数传递给形式参数a。

()。

A. void QuickSort(int a[][10], int n);B. void QuickSort(int a[5][], int m);C. void QuickSort(int a[][], int n, int m);D. void QuickSort(int ** a, int n, int m);3.下面有关C++类和对象的说法,错误的是()。

A. 对象的生命周期开始时,会执行构造函数。

B. 对象的生命周期结束时,会执行析构函数。

C. 类的析构函数可以为虚函数。

D. 类的构造函数可以为虚函数。

4.使用邻接矩阵表达n个顶点的有向图,则该矩阵的大小为()。

A. n x (n + 1)B. n x nC. n x (n - 1)D. n x (n - 1)/25.题5位同学排队,其中一位同学不能排在第一,则共有多少种可能的排队方式?()。

A. 5B. 24C. 96D. 1206.一个无向图包含n个顶点,则其最小生成树包含多少条边?()。

A. n - 1B. nC. n + 1D. 最小生成树可能不存在。

7.已知三个double类型的变量a和b和theta分别表示一个三角形的两条边长及二者的夹角(弧度),则下列哪个表达式可以计算这个三角形的面积?()。

A. a * b * sin(theta)/ 2B. (a + b)* sin(theta)/ 2C. a * b * cos(theta)/ 2D. sqrt(a * a + b * b - 2 * a * b * cos(theta))8.对有n个元素的二叉排序树进行中序遍历,其时间复杂度是()。

(完整版)C语言基础练习题(含答案)

(完整版)C语言基础练习题(含答案)

目录第1-3章C语言基础知识习题 (2)1 选择题 (2)2 填空题 (7)3 答案及部分解析 (9)第4章选择结构习题 (11)1 选择题 (11)2 填空题 (17)3 答案及部分解析 (23)第5章循环结构习题 (26)1 选择题 (26)2 填空题: (32)3 答案及部分解题分析 (39)第6章数组习题 (41)1. 单项选择题 (41)2. 填空题 (44)3. 判断题 (45)4. 程序填空题 (45)5. 阅读程序,分析程序的功能。

(49)第7章函数习题 (55)1. 单项选择题 (55)2. 填空题 (56)3. 判断题 (57)4. 程序填空题 (58)5. 写出下列程序运行结果 (59)第8章指针习题 (67)1 选择题 (67)2 填空题 (69)第1-3章C语言基础知识习题1 选择题1. 以下不是C语言的特点的是()。

A、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2.下列字符序列中,不可用作C语言标识符的是()。

A.abc123 B.no.1 C._123_ D._ok3.正确的C语言标识符是()。

A._buy_2 B.2_buy C.?_buy D.buy?4. 请选出可用作C语言用户标识符的一组标识符()。

A.void B.a3_b3 C.For D.2adefine _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。

A.\\ B.\0xAA C.\t D.\06.不属于C语言关键字的是()。

A.int B.break C.while D.character7.是C语言提供的合法关键字的是()。

A.Float B.signed C.integer D.Char8.以下不能定义为用户标示符的是()。

A.scanf B.Void C._3com_ D.int9.一个C程序是由()。

202303 中国电子学会等级考试青少年C++编程8级

202303 中国电子学会等级考试青少年C++编程8级

青少年软件编程(C语言)等级考试试卷(八级)分数:100 题数:4一、编程题(共4题,共100分)1. 最短路径问题平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。

其中的一些点之间有连线。

若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。

现在的任务是找出从一点到另一点之间的最短路径。

时间限制:1000内存限制:131072输入共n+m+3行,其中: 第一行为整数n。

第2行到第n+1行(共n行),每行两个整数x和y,描述了一个点的坐标。

第n+2行为一个整数m,表示图中连线的个数。

此后的m 行,每行描述一条连线,由两个整数i和j组成,表示第i个点和第j个点之间有连线。

最后一行:两个整数s和t,分别表示源点和目标点。

输出仅一行,一个实数(保留两位小数),表示从s到t 的最短路径长度。

样例输入样例输出2. Freda的越野跑Freda报名参加了学校的越野跑。

越野跑共有N人参加,在一条笔直的道路上进行。

这N个人在起点处站成一列,相邻两个人之间保持一定的间距。

比赛开始后,这N 个人同时沿着道路向相同的方向跑去。

换句话说,这N个人可以看作x轴上的N个点,在比赛开始后,它们同时向x轴正方向移动。

假设越野跑的距离足够远,这N个人的速度各不相同且保持匀速运动,那么会有多少对参赛者之间发生“赶超”的事件呢?时间限制:1000内存限制:262144输入第一行1个整数N。

第二行为N 个非负整数,按从前到后的顺序给出每个人的跑步速度。

对于50%的数据,2<=N<=1000。

对于100%的数据,2<=N<=100000。

输出一个整数,表示有多少对参赛者之间发生赶超事件。

样例输入样例输出提示我们把这5个人依次编号为A,B,C,D,E,速度分别为1,3,10,8,5。

在跑步过程中:B,C,D,E均会超过A,因为他们的速度都比A快;C,D,E都会超过B,因为他们的速度都比B快;C,D,E之间不会发生赶超,因为速度快的起跑时就在前边。

计算机二级c语言 第8套 笔试模拟试卷

计算机二级c语言 第8套 笔试模拟试卷

第8套笔试模拟试卷一选择题:(1)下列叙述正确的是()。

A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)以上3种描述都不对(2)结构化程序设计主要强调的是()。

A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序的易读性(3)按照"先进先出"组织数据的数据结构是()。

A)队列B)栈C)双向链表D)二叉树(4)结构化程序设计的3种基本结构是()。

A)过程、子程序和分程序B)顺序、选择和重复C)递归、堆栈和队列D)调用、返回和转移(5)栈和队列的共同点是()。

A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素D)没有共同特点(6)有下列二叉树,对此二叉树中序遍历的结果为()。

A)ABCDEFB)BDAECFC)ABDCEFD)ABCDFE(7)使用白盒测试法时,确定测试数据应该根据()和指定的覆盖标准。

A)程序的内部逻辑B)程序的复杂结构C)使用说明书D)程序的功能(8)在排序方法中,将整个无序序列分割成若干个小的子序列并分别进行排序的方法称为()。

A)希尔排序B)冒泡排序C)插入排序D)选择排序(9)在数据库设计过程中,独立于计算机的硬件与DBMS软件的设计阶段是()。

A)概念设计B)物理设计C)逻辑设计D)系统实施(10)数据库设计分为4个阶段:需求分析、概念设计、逻辑设计和()。

A)编码设计B)测试阶段C)运行阶段D)物理设计(11)下面说法正确的是()。

A)一个C程序可以有多个主函数B)一个C语言的函数中只允许有一对花括号C)C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D)在对C程序进行编译时,可以发现注释行中的拼写错误(12)若a为int型变量,则执行以下语句后,a的值为()。

a=5;a+=a-=a*a;A)25B)-40C)40D)-14(13)能正确表示逻辑关系"a>=5或a<=0"的C语言表达式是()。

C语言竞赛题目大全

C语言竞赛题目大全

C语言竞赛题目大全POWERED BY SYD168 2010年5月7日问题:假设在一个32位的机器上,需要将某个外设寄存器的第X位(最低位为第0位,最高位为第31位)设置成0,将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其它位保持不变.对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R.输入的数据仅一行,包括R,X,Y,以逗号","分隔,R为16进制表示的32位整数,X,Y在0—31之间且Y>=3,(Y-X)的绝对值〉=3,保证两次置位不会重合更改后的寄存器值R(16进制输出)。

例如:Sample Input12345678,0,3输出:1234567c解题思路:很简单的位操作,但是需要注意的是Y那里是110,不能直接或上110,而是先两次SET,在CLR.答案:#include <stdio.h〉#define CLR(r, x) r &= ~(1UL 〈〈x)//1UL 表示32位无符号数,将r的x位清零。

#define SET(r,y)r |= (1UL 〈< y)//表示将r的y位置1int main(){int r, x, y;scanf("%x,%d,%d", &r, &x,&y);CLR(r,x); //清除x位SET(r,y); //置位y位SET(r,y—1); //置位y—1位CLR(r,y—2); //置位y—2位printf(”%x”, r);return 0;}第1题破译密码问题:据说最早的密码来自于罗马的凯撒大帝.消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F).而你要获得消息原文,也就是要将这个过程反过来.密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z M原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U(注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的.)输入:最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:1.起始行:START2.密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息。

C语言基础知识练习题集(8章)(含答案及解析)

C语言基础知识练习题集(8章)(含答案及解析)

目录第1-3章C语言基础知识习题 (2)1 选择题 (2)2 填空题 (7)3 答案及部分解析 (9)第4章选择结构习题 (11)1 选择题 (11)2 填空题 (17)3 答案及部分解析 (23)第5章循环结构习题 (26)1 选择题 (26)2 填空题: (32)3 答案及部分解题分析 (39)第6章数组习题 (41)1. 单项选择题 (41)2. 填空题 (44)3. 判断题 (45)4. 程序填空题 (45)5. 阅读程序,分析程序的功能。

(49)第7章函数习题 (55)1. 单项选择题 (55)2. 填空题 (56)3. 判断题 (57)4. 程序填空题 (58)5. 写出下列程序运行结果 (59)第8章指针习题 (67)1 选择题 (67)2 填空题 (69)第1-3章C语言基础知识习题1 选择题1. 以下不是C语言的特点的是()。

A、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2.下列字符序列中,不可用作C语言标识符的是()。

A.abc123 B.no.1 C._123_ D._ok3.正确的C语言标识符是()。

A._buy_2 B.2_buy C.?_buy D.buy?4. 请选出可用作C语言用户标识符的一组标识符()。

A.void B.a3_b3 C.For D.2adefine _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。

A.\\ B.\0xAA C.\t D.\06.不属于C语言关键字的是()。

A.int B.break C.while D.character7.是C语言提供的合法关键字的是()。

A.Float B.signed C.integer D.Char8.以下不能定义为用户标示符的是()。

A.scanf B.V oid C._3com_ D.int9.一个C程序是由()。

c语言试题整合

c语言试题整合

百科园最终版呕心沥血删减复制加答案八套全集你们一定是上辈子跟着我拯救了银河系这辈子才会遇到这么好的我!!!好吧还有605全体.!快跪拜!!!!**************************1=14*********************************/*------------------------------------------------【程序设计】--------------------------------------------------功能:求5行5列矩阵的主、副对角线上元素之和。

注意,两条对角线相交的元素只加一次。

例如:主函数中给出的矩阵的两条对角线的和为45。

------------------------------------------------*/#include "stdio.h"#define M 5int fun(int a[M][M]){/*********Begin**********/int s=0;int i;for(i=0;i<M;i++)s=s+a[i][i]+a[i][M-1-i];s=s-a[(M-1)/2][(M-1)/2];return s;/********** End **********/}void TestFunc(){FILE *IN,*OUT;int iIN[M][M],iOUT;int i,j;IN=fopen("in.dat","r");if(IN==NULL)printf("Please Verify The Currernt Dir..It May Be Changed");}OUT=fopen("out.dat","w");if(OUT==NULL){printf("Please Verify The Current Dir.. It May Be Changed");}{ for(i=0;i<M;i++)for(j=0;j<M;j++)fscanf(IN,"%d",&iIN[i][j]);iOUT=fun(iIN);fprintf(OUT,"%d\n",iOUT);}fclose(IN);fclose(OUT);}main(){int a[M][M]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8},{1,3,4,5,6}}; int y;y=fun(a);printf("s=%d\n",y);TestFunc();}/*------------------------------------------------【程序设计】--------------------------------------------------功能:能计算从1开始到n的自然数中偶数的平方的和,n由键盘输入,并在main()函数中输出。

C语言test8答案

C语言test8答案

1.阅读、调试、运行程序,比较阅读的结果和运行的结果1)运行结果2) 运行结果3) 运行结果4) 运行结果5) 运行结果6) 运行结果2. 完善程序,并调试运行1) (1) pa[i] (2) avg/n2) (1)#define N 10 (2) k=i;(3) j<N (4) i!=k3) (1) a[i]!='\0' (2) a[j]='\0';(3) gets(a) ;(4) fun(a,cc);4) (1)j<n (2) i<10-j-1 (3)a[i]>a[i+1] (4) fun(a,10);3. 修正程序,并调试运行1)/************found************/int fun(int a[],int n)/************found************/max=a[0];/************found************/scanf("%d",&a[i]);/************found************/max=fun(a[0],N);2)修正后的程序如下/************found************/char fun(char c)/************found************/{char s[81];int i=0;/************found************/puts(s);3)修正后的程序/************found************/ void fun(int a[][5],int b[]) /************found************/ s+=a[i][j];/************found************/ b[i]=s;4)修正后的程序:/************found************/ int fun(int a[ ][3])/************found************/ sum=0;/************found************/ sum=sum+a[i][i];/************found************/ n=fun(a);4.编写程序,并调试运行(1)参考程序#include "stdio.h"#define N 4#define M 4int fun(int a[M][N]){int i,k=0;for(i=0;i<N;i++)k=k+a[0][i]+a[M-1][i];for(i=1;i<M-1;i++)k=k+a[i][0]+a[i][N-1];return k;}void main(){int a[M][N],i,j,s;for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]); s=fun(a);printf("%d\n",s);}(2)参考程序#include <stdio.h>#include <string.h> void conv(char a[]) {int n,i;char c;n=strlen(a);for(i=0;i<n/2;i++){c=a[i];a[i]=a[n-i-1];a[n-i-1]=c;}}void main(){char str[80];gets(str);conv(str);puts(str);}(3)#include <stdio.h>int fun(int m){int s=2,n,i;if(m>2)for(n=m;n>=3;n--){i=2;while(i<=n/2&&n%i!=0) i++;if(i>n/2)s=s+n;}return s;}void main() {int m;scanf("%d",&m);if(m>=2)printf("%d\n",fun(m)); elseprintf("error\n");}4)#include <stdio.h>int fun(int m,int n ) {int s=0,i;for(i=m;i<=n;i=i+2)s=s+i;return s;}void main(){int m,n;scanf("%d%d",&m,&n);if(m<n)printf("%d\n",fun(m,n)); elseprintf("%d\n",fun(n,m)); }5)#include <stdio.h>int fun(int a[],int n ) {int m=0,i;for(i=0;i<n;i++)if(a[i]>m&&a[i]%2==0)m=a[i];return m;}void main(){int a[20],n,i;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);printf("%d\n",fun(a,n)); }}。

全国计算机二级C 语言考试模拟题第八套

全国计算机二级C 语言考试模拟题第八套

全国计算机二级C语言考试模拟题第八套(1)线性表若采用链式存储结构时,要求内存中可用存储单元的地址A)必须是连续的B)部分地址必须是连续的C)一定是不连续的D)连续不连续都可以(2)在待排序的元素序列基本有序的前提下,效率最高的排序方法是A)冒泡排序B)选择排序C)快速排序D)归并排序(3)下列叙述中,错误的是A)数据的存储结构与数据处理的效率密切相关B)数据的存储结构与数据处理的效率无关C)数据的存储结构在计算机中所占的空间不一定是连续的D)一种数据的逻辑结构可以有多种存储结构(4)希尔排序属于A)交换排序B)归并排序C)选择排序D)插入排序(5)下列叙述中,不属于结构化分析方法的是A)面向数据流的结构化分析方法B)面向数据结构的Jackson方法C)面向数据结构的结构化数据系统开发方法D)面向对象的分析方法(6)详细设计的结果基本决定了最终程序的A)代码的规模B)运行速度C)质量D)可维护性(7)下列不属于静态测试方法的是A)代码检查B)白盒法C)静态结构分析D)代码质量度量(8)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是A)多对多B)一对一C)多对一D)一对多(9)下列关系运算的叙述中,正确的是A)投影、选择、连接是从二维表行的方向进行的运算B)并、交、差是从二维表的列的方向来进行运算C)投影、选择、连接是从二维表列的方向进行的运算D)以上3种说法都不对(10)关系数据库管理系统应能实现的专门的关系运算包括A)排序、索引、统计B)选择、投影、连接C)关联、更新、排序D)显示、打印、制表(11)用链表表示线性表的突出优点是【1】。

(12)子程序通常分为两类:【2】和函数,前者是命令的抽象,后者是为了求值。

(13)软件的【3】设计又称为总体结构设计,其主要任务是建立软件系统的总体结构。

(14)对软件是否能达到用户所期望的要求的测试称为【4】。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

{ if(i<1) continue; if(I==5) break; i++; } ...... } A) 1 B) 10 C) 6 D) 死循环,不能确定次数 (26) 以下程序的输出结果是 main() { int a=0,i; for(i=;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } } printf("%d\n",a); } A) 31 B) 13 C) 10 D) 20 (27) 以下程序的输出结果是 main() { int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d); } A) 1 B) 0 C) 非 0 的数 D) -1 (28) 以下程序的输出结果是 #include <stdio.h> main() { int i=0,a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; }
C 语言程序设计试题(第八套)
A) auto B) register C) static D) extern (36) 若指针 p 已正确定义,要使 p 指向两 个连续的整型动态存储单元,不正确的语 句是 A) p=2*(int*)malloc(sizeof(int)); B) p=(int*)malloc(2*sizeof(int)); C) p=(int*)malloc(2*2); D) p=(int*)calloc(2,sizeof(int)); (37) 以下程序的输出结果是 main() { char x=040; printf("%0\n",x<<1); } A) 100 B) 80 C) 64 D) 32
#include <stdio.h> void f(int n); main() { void f(int n); f(5); } void f(int n) { printf("%d\n",n); } 则以下叙述中不正确的是 A) 若只在主函数中对函数 f 进行说明,则 只能在主函数中正确调用函数 f B) 若在主函数前对函数 f 进行说明,则在 主函数和其后的其它函数中都可以正确调 用函数 f C) 对于以上程序,编译时系统会提示出错 信息:提示对对 f 函数重复说明 D) 函数 f 无返回值,所以可用 void 将其 类型定义为无值型 (33) 以下程序调用 findmax 函数返回数 组中的最大值 findmax(int *a,int n) { int *p,*s; for(p=a,s=a; p-a<n; p++) if ( ) s=p; return(*s); } main() { int x[5]={12,21,13,6,18}; printf("%d\n",findmax(x,5)); } 在下划线处应填入的是 A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s (34) 以下程序的输出结果是 main() { char cf[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]); } A) "AAAA" B) "BBB" C) "BBBCC" D) "CC" (35) 在 C 语言中,形参的缺省存储类是
(9) DOS 命令 "COPY CON DISP"中的 CON 代表 A) 子目录 B) 磁盘文件 C) 键盘 D) 显
示器 (10) 结构化程序设计所规定的三种基本 控制结构是 A) 输入、处理、输出 B) 树形、网形、环 形 C) 顺序、选择、循环 D) 主程序、子程序、 函数 (11) 要把高级语言编写的源程序转换为 目标程序,需要使用 A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序 (12) 英文小写字母 d 的 ASCII 码为 100, 英文大写字母 D 的 ASCII 码为 A) 50 B) 66 C) 52 D) 68 (13) Windows 环境下,PrintScreen 键的作 用是 A) 复制当前窗口到剪贴板 B) 打印当前 窗口的内容 C) 复制屏幕到剪贴板 D) 打印屏幕内容 (14) 在 Windows 环境下,为了终止应用程 序的运行,应 A) 关闭该应用程序窗口 B) 最小化该应 用程序窗口 C) 双击该应用程序窗口的标题栏 D) 将 该应用程序窗口移出屏幕 (15) 下列各带有通配符的文件名中,能代 表文件 XYZ.TXT 的是 A) *Z.? B) X*.* C) ?Z,TXT D) ?.? (16) 若有定义:int a=8,b=5,C;,执 行语句 C=a/b+0.4;后,c 的值为 A) 1.4 B) 1 C) 2.0 D) 2 (17) 若变量 a 是 int 类型,并执行了语句: a=‘A'+1.6;,则正确的叙述是 A) a 的值是字符 C B) a 的值是浮点型 C) 不允许字符型和浮点型相加 D) a 的值 是字符‘A’的 ASCII 值加上 1。 (18) 以下程序段的输出结果是 int a=1234; printf("%2d\n",a);
(38) 若要打开 A 盘上 user 子目录下名为 abc.txt 的文本文件进行读、写操作,下 面符合此要求的函数调用是 A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+") C) fopen("A:\user\abc.txt","rb") C) fopen("A:\\user\\abc.txt","w") (39) 以下不能正确进行字符串赋初值的 语句是 A) char str[5]="good!"; B) char str[]="good!"; C) char *str="good!"; D) char str[5]={‘g',‘o',‘o',‘d'}; (40) 若有下面的说明和定义: struct test { int ml; char m2; float m3; union uu {char ul[5]; int u2[2];} ua; } myaa; 则 sizeof(struct test )的值是 A) 12 B) 16 C) 14 D) 9 (41) 若有定义:int aa[ 8];。则以下表 达式中不能代表数组元 aa[1]的地址的是 A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1
(42) 以下程序的输出结果是
C 语言程序设计试题(第八套)
C 语言程序设计试题(第八)
一、选择题((1)—(40)题每小题 1 分, (41)—(50)题每小题 2 分,共和 60 分) 下列各题 A)、B)、C)、D)四个选项中, 只有一个选项是正确的,请将正确选项涂 写在答题卡相应位置上,答在试卷上不得 分。 (1) 在计算机中,一个字长的二进制位数 是 A) 8 B) 16 C) 32 D) 随 CPU 的型号而定 (2) 计算机网络的突出优点是 A) 速度快 B) 资源共享 C) 精度高 D) 容量大 (3) 计算机网络能传送的信息是: A) 所有的多媒体信息 B) 只有文本信息 C) 除声音外的所有信息 D) 文本和图像 信息 (4) 切断计算机电源后,下列存储器中的 信息会丢失的是: A) RAM B) ROM C) 软盘 D) 硬盘 (5) 十进制数 127 转换成二进制数是 A) 11111111 B) 01111111 C) 10000000 D) 11111110 (6) 要想打印存放在当前盘当前目录上所 有扩展名为.TXT 的文件内容, 应该使用 的 DOS 命令为 A) DIR *.TXT>PRN B) TYPE *.TXT>PRN C) COPY *.TXT PRN D) COPY *.TXT>PRN (7) 将当前盘当前目录及其子目录中的全 部文件 (总量不足 1.2MB) 复制到一张空 的 A 盘的根目录下,应该使用的 DOS 命令为 A) XCOPY *.*A:\ /M B) XCOPY *.*A:\ /S C) XCOPY *.*A:\ /P D) XCOPY *.*A:\ /A (8) 在 C 盘根目录下执行 PROMPT $p$g 命 令之后,DOS 的提示符变为 A) C:> B) C:\> C) C> D) C:\
C 语言程序设计试题(第八套)
A) 12 B) 34 C) 1234 D) 提示出错、无结 果 (19) 以下选项中不属于 C 语言的类型的 是 A) signed short imt B) unsigned long int C) unsigned int D) long short (20) 若有说明语句:int a,b,c,*d=&c;, 则能正确从键盘读入三个整数分别赋给变 量 a、b、c 的语句是 A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d); C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d); (21) 在 16 位 C 编译系统上,若定义 long a; ,则能给 a 赋 40000 的正确语句是 A) a=20000+20000; B) a=4000*10; C) a=30000+10000; D) a=4000L*10L; (22) 以下叙述正确的是 A) 可以把 define 和 if 定义为用户标识符 B) 可以把 define 定义为用户标识符,但 不能把 if 定义为用户标识符 C) 可以把 if 定义为用户标识符,但不能 把 define 定义为用户标识符 D) define 和 if 都不能定义为用户标识符 (23) 若 定 义 : int a=511,*b=&a;, 则 printf("%d\n",*b);的输出结果为 A) 无确定值 B) a 的地址 C) 512 D) 511 (24) 以下程序的输出结果是 main() { int a=5,b=4,c=6,d; printf("%d\n",d=a>b?(a>c?a:c):(b)); } A) 5 B) 4 C) 6 D) 不确定 (25) 以下程序中,while 循环的循环次数 是 main() { int i=0; while(i<10)
相关文档
最新文档