第三部分 江苏省二级统考近五年试题汇编
}
return pa; }
main()
{PNODE a[10]={{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}},*ha=a,*p; int i ;
for(i=0;i<9;i++)a[i].next=&a[i+1]; a[9].next= (4) ; ha=padd(ha); p=ha;
printf(\ while(p)
{printf(\}
2001年(春)C语言上机试卷
一、改错题 【题目】
本程序计算并输出二维数组a的每一列最小元素的值及其行号、列号,整个数组a中最小元素的值及其行号、列号。含有错误的源程序为: #include\
#define n 4 #define m 3 int a[n][m],s[m];
p(int j) {int k,i,x; x=a[0][j];i=0; for(k=1;k {i=k;s[j]=x=a[k][j];} return i; } main() {int index[m],i,j,k; for(i=0;i scanf(\ for(j=0,j printf(\ } i=s[1];k=0; for(j=1;j {i=s[j];k=j;} 第三部分 江苏省二级统考近五年试题汇编 printf(\} 注:调试程序时,可以随意输入测试数据,最后运行本程序时,必须从键盘输入下列数据: 6 4 16 9 7 13 8 18 15 5 12 19 【要求】: 1.将上述程序录入到文件 myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理语句,但不能增加其他语句,也不能删去整条语句。 3.将改正后的源程序(文件名myf1.c)放在考试盘的根目录下,供阅卷用。 二、编程题 【题目】建立数组a[3][8],其中前两行元素产生方法是: 用初值x1=26及公式xi+1=(25*xi+357)24,产生一个数列:x1,x2,…,x16。其中x1~x8作为a的第一行元素;x9~x16作为a的第二行元素;第三行的元素值取前两行同列元素的最大公约数。最后把数组a的元素写到文件myf2.out中,每写完a的一行元素要换行。 【要求】 1.将源程序取名为myf2.c 输出结果文件取名为myf2.out。 2.数据文件的打开、使用、关闭均按TURBO C文件操作实现。 3.源程序文件和运行结果文件均需放在考试盘的根目录下,供阅卷用。 4.不要将myf2.obj和myf2.exe保存到考试盘上。 2001年秋季笔试题及上机题 一、选择题 21、均为非法常量的是 (21) 。 A. –0x18,01177,0xf B. ‘\\\\’,’\\01’,12,456 C. ‘as’,-0fff,’\\0xa’ D. 0xabc,’\\0’,”a” 22、以下程序的运行结果是 (22) 。 #include”stdio.h” #define PI 3.14 #define F(y) ((y)*(y)) #define P(a) printf(“%d”,a) main( ) { int x=PI;P(F(1+2)*x);} A.10 B.25 C.15 D.27 23、int s[2]={0,1},*p=s;错误的是 (23) 。 A. s++; B. p++; C.*p++; D.(*p)++; 24、下列正确的声明说明语句是 (24) 。 A. float m=15,n=4,q=m%n; B. static int y[16/2]; C. char p[2][]={“DOS”,”WINDOWS”}; D. char *p[]={“DOS”,”WINDOWS”,”UNIX”}; 25、a,b是不等的整数,(a/b)*b+a%b的值为 (25) 。 第三部分 江苏省二级统考近五年试题汇编 A. a B. b C. a被b除的余数 D. a被b除商的整数部分 26、int i,j; 执行: j=(i=1,i+9)>9? i++||++i:++i;后,i,j的值为 (26) 。 A.10,10 B。2,2 C。2,3 D。2,1 27、填空处应填 (27) 。 A.search(c[3][4],12,8) B. search(&c[0][0],12,8) C. search(&c,12,8) D. search(**c,12,8) int sarch(int x[ ],int n,int k) { int j; for(j=0;j main( ) { int k,c[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; if( ___!=-1)printf(“found”); else printf(“not found”); } 28、struct{ int x,y;}c[3]={ {1,2},{2,3}};正确的语句是 (28) 。 A.C[2]={3,4}; B.C[2]=C[1]; C.C[2]=C[1]-C[0]; D.if(c[1]>c[0])c[2]=c[1];else c[2]=c[0]; 29、表达式值为3的是 (29) 。 struct s { int d; struct s *next;}; static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]}, *ptr=&a[0]; A.ptr->d B.(ptr->next)->d C.(ptr+1)->next->d D.(ptr+2)->next->d 30、以下程序的输出是 (30) 。 main( ) { static char c[][6]={“QUICK”,”FOX”,”JEMP”,”DAZY”}; static char *cp[]={c[0],c[1],c[2],c[3]}, **cpp=cp; printf(“%c”, **++cpp); } A. F B. O C. A D.E 二、填空题 ? 基本概念(共5分) 1、函数值通过 (1) 语句返回 (2) 类型的函数没有返回值,故不能作为表达式分量。 2、执行int b[3]={0,1,2};b[2]=b[(b[0]=2)+b[1]-1]-2;后,b[0]、b[1]、b[2]的各元素值为: ( 3) 。 3、执行下列程序后,s中的字符串为: (4) 。 #include”stdio.h” main( ) { FILE *fp;float x=-1.2;char s[11]={0}; fp=fopen(“a.dat”,”w+”); 第三部分 江苏省二级统考近五年试题汇编 fprintf(fp,”%6.3f”,x); rewind(fp); fgets(s,10,fp); puts(s); fclose(fp);} 4、变量b的初值为: (5) 。 int a[][4]={1,2,3,4,5,6,7,8,9}, *p=&a[1][0],b= *(p-2)+ *(p+2)- *(p+5); ? 阅读程序题(共7分) 5、以下程序的输出为: (6) 。 main( ) { int i=0,j=10,k=2,s=0; for(;i<=j;){i+=k++;s=s+i;}printf(“%d\\n”,s); } 6、以下程序的输出为: (7) 。 void trans(int m,int n) { int q; if(m/n) trans(m/n,n); if((q=m%n)<10)printf(“%c”,q+’0’); else printf(“%c”,q-10+’a’); } main( ) { printf(“\\n”);trans(35,12);} 7、以下程序的输出为: (8) 。 int func(int m) { static int k=1; while(m)k*=m--; return k; } main( ) { int i,j; i=func(3); j=func(5); printf(“%d %d\\n”,i,j); } 8、以下程序的输出第一行为: (9) 第二行为: (10) void rev(int *p,int n) { int t; if(n>1) { t=p[0];p[0]=p[n-1];p[n-1]=t; rev(p+1,n-2);} } main( ) { int j,a[5]={1,2,3,4,5}; rev(a+1,4); 第三部分 江苏省二级统考近五年试题汇编 for(j=0;j<5;j++)printf(“%d”,a[j]); printf(“\\n”); rev(a,3); for(j=0;j<5;j++)printf(“%d”,a[j]); } 9、以下程序的输出第一行为: (11) 第三行为: (12) 。 main( ) { int a[4][4]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},j,k; for(j=1;j<4;j++) { for(k=0;k<4;k++) { if(j>k+1)continue; if(j printf(“%d,”,a[j][k]); } printf(“\\n”); } } ? 完善程序(共18分) (2n+1) 10、 用递推法计算一级数的近似值,直到:| x/n! |<1e-6为止。级数: 357(2n+1)x-x/(3*1!)+x/(5*2!)-x/(7*3!)+?.+x/((2n+1)*n!)+?.. #include { float t=x,sum=t,s=1;int n=0; while( (13) >1e-6) { n++; s=-s; t=t* (14) ; sum=sum+s*t/ (15) ; } return sum; } main( ) { float x; scanf(“%f”,&x);printf(“s=%f”,g(x)); } 11、 下列程序中函数mfgets实现了库函数fgets的功能,既从指定的文件中读一行字符(遇到回车符或文件结束符时,在该字符前出现的全部字符既为一行字符),保存到参数line指定的地址开始的内存单元中,函数返回值为保存已经读入的字符串的首地址。 #include char *mfgets(char *line, (16) ) { char ch, *str=line; while((ch=fgetc(fp))!=EOF&&ch!=’\\n’)