2010年春江苏省二级考试C语言真题
- 格式:doc
- 大小:59.50 KB
- 文档页数:8
江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2010年春)二级C语言(试卷代号C02)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】先将一个正整数转换为十进制数字字符串,再将千位分隔符插入到该字符串中,最后输出该字符串。
【测试数据及运行结果】输入:1234567输出:12345671,234,567【含有错误的源程序】#include <stdio.h>#include <string.h>void ltoa(char s[],long num){ long n=num,i=0;printf("%ld\n",num);while(n){ i++; n/=10; }s[i]= \0 ;while(num){ s[--i]=num%10+'0'; num/=10;}}void insert(char s[]){ char j,k,t;t=j=strlen(s);while(j>3){ j=j-3;for(k=t; k>j; k--)s[k]=s[k+1];s[j]= ',';t++;}}void main(){ static char s[20]; long num;scanf("%d",&num);ltoa(s,num);insert(s,num);puts(s);getch();}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。
二、编程题(24分)【程序功能】一个整数的“真因子”是指包括1但不包括整数自身的因子。
2010年3月计算机等级考试二级C笔试试题(文字版)一、选择题(1)下列叙述中正确的是A)对长度为n的有序链表进行查找,最坏清况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时问复杂度是指A)算法的执行时间 B)算法所处理的数据量C)算法程序中的语司或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于系统软件的是A)编辑软件 B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误 C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是A)软件概要设计的工具 B)软件详细设计的工具C)结构化方法的需求分析工具 D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。
详细设计属于A)定义阶段B)开发阶段 C)维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是A)数据定义语言 B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是A)文件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的A)需求分析阶段 B)逻辑设计一阶段 C)概念设计阶段 D)物理设计阶段(10)有两个关系R和T如下:则由关系K得到关系T的操作是A)选择 B)投影C)交D)并(11)以下叙述正确的是A)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可作为单独文件形式存在(12)以下关于C语言的叙述中正确的是A)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以在使用之前的任何位置进行定义C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 D)C语言的数值常量中夹带空格不影响常量值的正确表示(13)以下C语言用户标识符中,不合法的是A)_1 B)AaBc C)a_b D)a—b(14)若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是A)a=a++,i++; B)i=(a+k)<=(i+k); C)i=a;D)i=!a;(15)有以下程序#includemain(){ char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar(); d=getchar();printf(“%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是A)1234B)12C)123D)1234(16)以i关于C语言数据类型使用的叙述中错误的是A)若要准确无误差的表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型 D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型(17)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是A)1 B)0 C)2 D)不知道a的值,不能确定(18)以下选项中与if(a==1)a=b; else a++;语句功能不同的switch语句是A)switch(a){case:a=b;break;default:a++;}C)switch(a){default:a++;break;case 1:a=b;}D)switch(a==1){case 1:a=b;break;case 0:a++;}(19)有如下嵌套的if语句if (a< p>if(a< p>else k=c;elseif(b else k=c;以下选项中与上述if语句等价的语句是A)k=(a< p>B)k=(ac)?b:c);C)k=(a< p>D)k=(a< p>(20)有以下程序#includemain(){in i,j,m=1;for(i=1;i<3;i++){for(j=3;j>O;j--){if(i*j)>3)break;m=i*j;}}printf("m=%d\n",m);}程序运行后的输出结果是A)m=6B)m=2C)m=4D)m=5(21)有以下程序#include(stdio.h>main(){int a=l;b=2;for(;a<8;a++) {b+=a;a+=2;}printf("%d,%d\n",a,b);}程序运行后的输出结果是A)9,18B)8,11C)7,11D)10,14(22)有以下程序,其中k的初值为八进制数#includemain(){int k=011;printf("%d\n",k++);}程序运行后的输出结果是A)12B)11C)10D)9(23)下列语句组中,正确的是A)char *s;s="Olympic";B)char s[7];s="Olympic";C)char *s;s={"Olympic"};D)char s[7];s={"Olympic"};(24)以下关于return语句的叙述中正确的是A)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成void类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处(25)下列选项中,能正确定义数组的语句是A)int num[0..2008];B)int num[];C)int N=2008;int num[N];D)#define N 2008int num[N];(26)有以下程序#include计算机二级C 语言第 3 页 共 80 页void fun(char *c,int d) {*c=*c+1;d=d+1; printf("%c,%c,",*c,d); main(){char b='a',a='A';fun(&b,a);printf("%e,%e\n",b ,a); }程序运行后的输出结果是 A)b ,B ,b ,A B)b ,B ,B ,A C)a ,B ,B ,a D)a ,B ,a ,B(27)若有定义int(*Pt)[3];,则下列说法正确的是 A)定义了基类型为int 的三个指针变量B)定义了基类型为int 的具有三个元素的指针数组pt C)定义了一个名为*pt 、具有三个元素的整型数组D)定义了一个名为pt 的指针变量,它可以指向每行有三个整数元素的二维数组(28)设有定义double a[10],*s=a;,以下能够代表数组元素a[3]的是 A)(*s)[3] B)*(s+3) C)*s[3] D)*s+3 (29)有以下程序 #include(stdio.h) main(){int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0; for(i=0;i<5;i++) s=s+a[b[i]]); printf("%d\n", s); }程序运行后的输出结果是 A)6 B)10 C)11 D)15(30)有以下程序 #includemain(){int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1; for(i=0;i<3;i++)for(j=ij<=1;j++) t+=b[i][b[j][i]]; printf("%d\n",t); }程序运行后的输出结果是 A)1 B)3C)4 D)9(31)若有以下定义和语句char s1[10]="abcd!",*s2="\n123\\"; printf("%d %d\n", strlen(s1),strlen(s2)); 则输出结果是 A)5 5 B)10 5 C)10 7D)5 8(32)有以下程序 #include#define N 8void fun(int *x,int i) {*x=*(x+i);} main(){int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=O;i<>{printf("%d",a[i]);} printf("\n"); }程序运行后的输出结果是 A)1313 B)2234 C)3234 D)1234 (33)有以下程序 #includeint f(int t[],int n); main{ int a[4]={1,2,3,4},s; s=f(a,4); printf("%d\n",s); }int f(int t[],int n){ if(n>0) return t[n-1]+f(t,n-1); else return 0; }程序运行后的输出结果是 A)4 B)1O C)14 D)6(34)有以下程序 #includeint fun(){ static int x=1;x*2; return x;}main(){int i,s=1,for(i=1;i<=2;i++) s=fun();printf("%d\n",s);}程序运行后的输出结果是A)OB)1C)4D)8(35)有以下程序#include#define SUB(a) (a)-(a)main(){ int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序运行后的输出结果是A)0B)-12C)-20D)10(36)设有定义:struct complex{ int real,unreal;} data1={1,8},data2;则以下赋值语句中错误的是A)data2=data1;B)data2=(2,6);C)data2.real=data1.real;D)data2.real=data1.unreal;(37)有以下程序#include#includestruct A{ int a; char b[10]; double c;};void f(struct A t);main(){ struct A a={1001,"ZhangDa",1098.0};f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);} void f(struct A t){ t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;} 程序运行后的输出结果是A)1001,zhangDa,1098.0B)1002,changRong,1202.0C)1001,ehangRong,1098.OD)1002,ZhangDa,1202.0(38)有以下定义和语句struct workers{ int num;char name[20];char c;struct{int day; int month; int year;} s;};struct workers w,*pw;pw=&w;能给w中year成员赋1980的语句是A)*pw.year=198O;B)w.year=1980;C)pw->year=1980;D)w.s.year=1980;(39)有以下程序#includemain(){ int a=2,b=2,c=2;printf("%d\n",a/b&c);}程序运行后的输出结果是A)OB)1C)2D)3(40)有以下程序#includemain(){ FILE *fp;char str[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fpfopen("myfile.data","a++");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str); puts(str);fclose(fp);}程序运行后的输出结果是A)abcB) 28cC) abc28计算机二级C 语言第 5 页 共 80 页D)因类型不一致而出错 二、填空题(1)一个队列的初始状态为空。
2010年春季江苏计算机等级考试二级笔试试卷第二部分C语言程序设计一、选择题(用答题卡答题,答案依次填在21~30答题号内,共l0分)21.C语言规定,在一个源程序中main函数的位置 _____(21)_____ 。
A.必须在最开始 B.必须在最后C.必须在预处理命令的后面 D.可以在其他函数之前或之后22.以下选项中,______(22)______ 是C语言关键字A.printf B.include C.fun D.default23.已知有声明"int a=3,b=4,c;",则执行语句"c=1/2*(a+b);"后,c的值为__(23)___ 。
A.0 B.3 C.3.5 D.424.设指针变量占2个字节的内存空间,若有声明"char *p="123";int c;",则执行语句"c=sizeof(p);"后,c 的值为__(24)___A.1 B.2 C.3 D.425.已知有声明"int a=3,b=4;",下列表达式中合法的是 (25)A.a+b=7 B.a=|b| C.a=b=0 D.(a++)++26.已知有声明"char s[20]="Hello";",在程序运行过程中,若要想使数组s中的内容修改为"Good",则以下语句中能够实现此功能的是 (26) 。
A.s="Good"; B.s[20l="Good";C.strcat(s,"Good"); D.strcpy(s,"Good");27.已知有声明"int a[4][4]={{1,2,3,4},{5,6,7,8),{9,10,11,12},{13,14,15,16)};",若需要引用值为12的数组元素,则下列选项中错误的是( 27 ) 。
江苏省计算机等级考试二级C语言(2010春)第一部分计算机基础知识1.下面关于通信技术的叙述中,错误的是 1 。
A.任何一个通信系统都有信源、信道和信宿这三个基本组成部分B.为了实现远距离传输信息,在模拟通信和数字通信中均采用载波技术C.为了降低传输信息的成本,在通信中广泛采用多路复用技术D.数字通信系统的一个主要性能参数是信道带宽,它指实际进行数据传输时单位时问内传输的二进位数目2.在下列有关集成电路及其应用的叙述中,错误的是 2 。
A.集成电路的制造工序繁多,工艺复杂且技术难度高B.经过抛光后的硅片称为晶圆,每个品圆最多可以制成一个合格的集成电路芯片C.IC卡分为接触式IC卡和非接触式IC卡,后者通常又称为射频卡或感应卡D.集成电路应用十分广泛,目前我国第2代居民身份证中就有集成电路芯片3.在下列有关数字技术的一些叙述中,错误的是 3 。
A.数字技术是采用有限个状态(例如"0"和"1")来表示、处理、存储和传输信息的B.在逻辑代数中,1与1进行逻辑加(∨)和逻辑乘(∧)的结果相同C.任何一个十进制数,均可以精确地转换成等值的二进制数D.在PC机中,通常用原码表示正整数、用补码表示负整数4.在下列有关PC机主机的叙述中,错误的是 4 。
A.BIOS和CMOS存储器安装在主板上,普通用户一般不能自己更换B.由于PC机主板的物理尺寸等没有标准化,所以不同PC机的主板均不能互换C.芯片组是PC机各组成部分相互连接和通信的枢纽,一般由2块VLSI芯片组成D.芯片组决定了主板上所能安装的内存最大容量、速度及可使用的内存条类型5.在下列4个Intel微处理器产品中,采用双核结构的是 5 。
A.Core 2 Duo B.Pentium PRO C.Pentium ⅢD.Pentium 46.在下列四种PC机主存储器类型中,目前常用的是 6 。
A.EDO DRAM B·SDRAM C·RDRAM D.DDR SDRAM7.在下列有关PC机常用I/O接口的叙述中,错误的是7 。
2010春江苏省二级C语言上机第一套(总分:40.00,做题时间:70分钟)一、改错题(16分)(总题数:1,分数:16.00)1. 【程序功能】验证3(n范围内的任意两个相邻素数的平方之间至少存在4个素数。
例如,5和7是两个相邻素数,5^2(25)与7^2(49)之间存在6个素数:29 31 37 41 43 47。
【测试数据与运行结果】显示:input n:输入:10 输出: 3~5 k=5 11 13 17 19 23 5~7 k=6 29 31 37 41 43 47 【含有错误的源程序】#include 样include int prime(int n) {int i,flag=1; for(i=1;i<=sqrt(n);i++) if(n%i==0)flag=0; return flag; } int fun(int a[],int n) { int i,k=0; for(i=3;i<=n;i++) if(prime(i)) a[k++]=i; return k; void fun1(int m,int n, int b[]) { int i,k=0; if(m>n) return 0; for(i=m*m;i(分数:16.00)__________________________________________________________________________________________ 正确答案:( for(i=1;i<=sqrt(n);i++) 改为i=2 void fun1(int m,int n,int b[]) 改为int{k=fun1(a[i],a[i+1],b[0]); 改为b {if(j%10=0)printf("/n"); 改为j%10==0 )解析:二、编程题(24分)(总题数:1,分数:24.00)2. 【程序功能】在给定范围内查找k使得用公式k^2+k+17生成的整数满足以下条件:该数的十进制表示中低3位数字相同,去掉低3位后的整数是回文数。
《C++语言程序设计》第一次作业讲评说明:本次作业对应教材第一、二、三章的内容。
【讲评】本章主要考核大家对C++语言的基本概念、基本数据类型和表达式、流程控制的掌握程度,其中有一些需要记忆的概念,但多数问题还是需要理解的,希望通过作业讲评能够帮助大家把学习中的难题一一解决。
下面是对部分问题的讲评。
一、填空题1.C++语言中的每条基本语句以;作为结束符,每条复合语句以}作为结束符。
2.用于输出表达式值的标准输出流对象是cout,用于从键盘上为变量输入值的标准输入流对象是cin 。
3.当不需要函数返回任何值时,则应把该函数类型定义为void 。
4.执行“cout<<143<<’+’<<18<<’=’<<143+18<<endl;”语句后得到的输出结果为143+18=161。
【讲评】这里143、’+’、18和’=’分别是整型变量、字符常量、整型变量和字符常量,在通过cout输出语句时直接将其值输出,而143+18是一个表达式,需要计算加法后输出其值。
5.执行“cout<<“ning”<<“chen”<<38<<endl;”语句后得到的输出结果为ningchen38 。
6.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为main。
7.C++源程序文件的缺省扩展名为.cpp ,由C++源程序文件编译而成的目标文件的缺省扩展名为.obj,由C++目标文件连接而成的可执行文件的缺省扩展名为 .exe。
8.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用空格或回车符号作为分隔符。
9.十进制数25表示成符合C++语言规则的八进制和十六进制数分别为031和0x19符号。
10.在C++语言中,用转义字符序列‘\n’或操纵符endl表示输出一个换行符。
11.执行“cout<<char(’b’+2)<<endl;”语句后得到的输出结果为d。
2009年春季江苏省高校计算机等级考试考试试题第一部分计算机基础知识1. 在下列有关现代信息技术的一些叙述中,正确的是 1 。
A.集成电路是20世纪90年代初出现的,它的出现直接导致了微型计算机的诞生B.集成电路的集成度越来越高,目前集成度最高的已包含几百个电子元件C.目前所有数字通信均不再需要使用调制解调技术和载波技术D.光纤主要用于数字通信,它采用波分多路复用技术以增大信道容量‘.2. 最大的10位无符号二进制整数转换成八进制数是 2 .。
A.1023B.1777C.1000D.10243. 在下列有关目前PC机CPU的叙述中,错误的是 3 。
A.CPU芯片主要是由Intel公司和AMD公司提供的B."双核"是指PC机主板上含有两个独立的CPU芯片C.Pentium 4微处理器的指令系统由数百条指令组成D.Pentium 4微处理器中包含一定容量的Cache存储器4. 在下列有关当前PC机主板和内存的叙述中,正确的是 4 。
A.主板上的BIOS芯片是一种只读存储器,其内容不可在线改写B.绝大多数主板上仅有一个内存插座,因此PC机只能安装一根内存条C.内存条上的存储器芯片属于SRAM(静态随机存取存储器)D.目前内存的存取时间大多在几个到十几个ns(纳秒)之间5. 在下列有关PC机辅助存储器的叙述中,正确的是 5 。
A.硬盘的内部传输速率远远大于外部传输速率B.对于光盘刻录机来说,其刻录信息的速度一般小于读取信息的速度C.使用USB 2.0接口的移动硬盘,其数据传输速率大约为每秒数百兆字节D.CD-ROM的数据传输速率一般比USB 2.0还快6. 在下列PC机I/O接口中,数据传输速率最快的是 6 。
B 2.0B.IEEE-1394C.IrDA (红外)D.SATA7. 计算机软件可以分为商品软件、共享软件和自由软件等类型。
在下列相关叙述中,错误的是7 。
A.通常用户需要付费才能得到商品软件的使用权,但这类软件的升级总是免费的B.共享软件通常是一种"买前免费试用"的具有版权的软件C.自由软件的原则是用户可共享,并允许拷贝和自由传播D.软件许可证是一种法律合同,它确定了用户对软件的使用权限8. 人们通常将计算机软件划分为系统软件和应用软件。
2010年春江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试第二部分C语言程序设计一.选择题21.C语言规定,在一个源程序中main函数的位置()A.必须在最开始B.必须在在最后C.必须在预处理命令的后面D.可以在其他函数之前或之后22.以下选项中,()是C语言的关键字A.printfB.includeC.funD.default23.已知有声明“int a=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,c的值为()A.0B.3C.3.5D.424.设指针变量占2个字节的内存空间,若有声明“char *p=”123”;int c;”,则执行语句“c=sizeof(p);”后,c的值为()A.1B.2C.3D.425.已知有声明“int a=3,b=4;”,下列表达式中合法的是()A.a+b=7B.a=∣b∣C.a=b=0D.(a++)++26.已知有声明“char s[20]=”hello”;”,在程序运行过程中,若要想使数组s中的内容修改为”Good”,则以下语句中能够实现此功能的是()A.s=”Good‟;B.s[20]=”Good”;C.strcat(s,”Good”);D.strcpy(s,”Good”);27. 已知有声明“int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};”,若需要引用值为12的数组元素,则下列选项中错误的是()A.*(a+2)+3B.*(*(a+2)+3)C.*(a[2]+3)D.a[2][3]28. 已知有声明“int n;float x,y;”,则执行语句“y=n=x=3.89;”后,y的值为()A.3B.3.0C.3.89D.4.029. 已知有声明“int a=12,b=15,c;”,则执行表达式“c=(a||(b-=a))”后,变量b和c的值分别为()A.3 , 1B.15 , 12C.15 , 1D.3 , 1230.下列叙述中,正确的是()A.C语言中的文件是流式文件,因此只能顺序存取文件中的数据。
B.调用fopen函数时若用“r”或“r+”模式打开一个文件,该文件必须在指定存储位置或默认存储位置处存在。
C.当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到该文件中的第1个数据。
D.无论以何种模式打开一个已存在的文件,在进行了写操作后,原有文件中的全部数据必定被覆盖。
二.填空题●基本概念1.数学式3x所对应的C语言表达式为pow(x, (1) )。
2.已知有声明“char ch=‟g‟;”,则表达式ch=ch-…a‟+‟A‟的值为字符(2)的编码。
3.在C语言系统中,如果一个变量能正确存储的数据范围为整数-32768~32767,则该变量在内存中占(3) 个字节。
4.已知有声明“int a[3][2]={{1,2},{3,4},{5,6}},*p=a[0];”,则执行语句“printf(“%d\n”,*(p+4));”后的输出结果为(4)。
5.已知有声明和语句“int a;scanf(“a=%d”,&a);”,欲从键盘上输入数据使a中的值为3,则正确的输入应是(5)。
●阅读程序6.以下程序运行时输出到屏幕的结果为(6)。
#include<stdio.h>#define MAX(A,B) A>B?2*A:2*Bvoid main(){ int a=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);printf(“%d\n”,t);}7.以下程序运行时输出到屏幕的结果是(7)。
#include<stdio.h>void main(){ int a=1,b=2;a+=b;b=a-b;a-=b;printf(“%d,%d\n”,a,b);}8.以下程序运行时输出到屏幕的结果为(8)。
#include<stdio.h>void swap(int a,int b){ int t;if (a>b) t=a,a=b,b=t;}void main(){ int x=13,y=11,z=12;if(x>y) swap(x,y);if(x>z) swap(x,z);if(y>z) swap(y,z);printf(“%d\t%d\t%d\n”,x,y,z);}9.以下程序运行时输出到屏幕的结果第一行是(9),第二行是(10),第三行是(11)。
#include<stdio.h>int g(int x,int y){ return x+y;}int f(int x,int y){{static int x=2;if (y>2){ x=x*x;y=x;}else y=x+1;}return x+y;}void main(){ int a=3;printf(“%d\n”,g(a,2));printf(“%d\n”,f(a,3));printf(“%d\n”,f(a,2));}10.以下程序运行时输出到屏幕的结果是(12)。
#include<stdio.h>void fun(int m,int n){ if (m>=n)printf(“%d”,m);elsefun(m+1,n);printf(“%d”,m);}void main(){ fun(1,2); }11以下程序运行时输出到屏幕的结果第二行是(13),第四行是(14)。
#include<stdio.h>#define N 6void main(){ int i,j,a[N+1][N+1];for (i=1;i<=N;i++){ a[i][i]=1;a[i][1]=1; }for(i=3;i<=N;i++)for (j=2;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<=N;i++){ for(j=1;j<=i;j++)printf(“%4d”,a[i][j]);printf(“\n”);}}12.以下程序运行时输出到屏幕的结果第一行是(15),第二行是(16),#include<stdio.h>void fun(char *p1,char *p2);void main(){ int i; char a[]=”54321”;puts(a+2);fun(a,a+4);puts(a);}void fun(char *p1,char *p2){ char t;while(p1<p2){ t=*p1;*p1=*p2;*p2=t;p1+=2,p2-=2;}}13.以下程序运行时输出到屏幕的结果第一行是(17),第二行是(18)。
#include<stdio.h>typedef struct { int x,y;}direction;int visible(direction s,direction A,direction B,direction C){ direction p1,p2;int d;p1.x=B.x-A.x;p1.y=B.y-A.y;p2.x=C.x-A.x;p2.y=C.y-A.y;d=s.x*p1.x*p2.x+s.y*p1.y*p2.y;printf(“%4d\n”,d);return d>0;}void main(){ char *ss[]={“invisible”,”visible”};direction s={1,1},T={1,1},A={0,0},B={2,1};puts(ss[visible(s,T,A,B)]);}●完善程序14.以下程序的功能是:统计一个字符串中数字字符“0”到“9”各自出现的次数,统计结果保存在数组count中。
例如,如果字符串为“1enterschar4543123564879ffgh”,则统计结果为:1:2 2:1 3:2 4:3 5:2 6:1 7:1 8:1 9:1。
试完善程序以达到要求的功能。
#include<stdio.h>void fun(char *t,int count[]){ char *p=t;while( (19) ){ if (*p>=”0”&&*p<=”9”)count[ (20) ]++;p++;}}void main(){ char s[80]=” 1enterschar4543123564879ffgh”; int count[10]={0},i;fun(s,count);for(i=0;i<10;i++)if (count[i]) printf(“%d:%d ”,i,count[i]);}15.下列程序的功能是对a数组a[0]~a[n-1]中存储的n个整数从小到大排序。
排序算法是:第一趟通过比较将n个整数中的最小值放在a[0]中,最大值放在a[n-1]中;第二趟通过比较将n个整数中的次小值放在a[1]中,次大值放在a[n-2]中;……,依次类推,直到待排序序列为递增序列。
试完善程序以达到要求的功能。
#include<stdio.h>#define N 7void sort(int a[], int n){ int i,j,min,max,t;for(i=0;i< (21) ;i++){ (22) ;for(j=i+1;j<n-i;j++)if(a[j]<a[min]) min=j;else if(a[j]>a[max]) max=j;if(min!=i){ t=a[min];a[min]=a[i];a[i]=t; }if(max!=n-i-1)if(max==i){ t=a[min];a[min]=a[n-i-1];a[n-i-1]=t; }else{ t=a[max];a[max]=a[n-i-1];a[n-i-1]=t; }}}void main(){ int a[N]={8,4,9,3,2,1,5},i;sort(a,N);printf(“sorted:\n”);for(i=0;i<N;i++) printf(“%d\t”,a[i]);printf(”\n”);}16.下列程序中函数find_replace的功能是:在s1指向的字符串中查找s2指向的字符串,并用s3指向的字符串替换在s1中找到的所有s2字符串。
若s1字符串中没有出现s2字符串,则不作替换并使函数返回0,否则函数返回1.是完善程序以达到要求的功能。
#include<stdio.h>#include<string.h>int find_replace(char s1[],char s2[],char s3[]){ int i,j,k,t=0; char temp[80];if(s1[0]==‟\0‟||s2[0]==‟\0‟) return t;for(i=0;s1[i]!=‟\0‟;i++){ k=0; j=i;while (s1[j]==s2[k]&&s2[k]!=‟\0‟){ j++;(23) ;}if(s2[k]==‟\0‟){ strcpy(temp,&s1[j]);(24) ;i=i+strlen(s3);(25) ;t=1;}}return t;}void main(){ char line[80]=”This is a test program and a test data.”;char substr1[10]=”test”,substr2[10]=”actual”;int k;k=find_replace(line,substr1,substr2);if( (26) )puts(line);elseprintf(“not found\n”);}17.设h1和h2分别为两个单链表的头指针,链表中结点的数据结构为:typedef struct node{ int data;Struct node *next;}NODE;Sea_del函数的功能是:删除h1指向的链表中首次出现的与h2指向的链表中数据完全匹配的若干个连续结点,函数返回h1指向链表的头指针。