江苏省计算机二级考试C语言试卷汇编(2001-2005)(8)

2019-02-16 12:29

第三部分 江苏省二级统考近五年试题汇编

C. printf(“%d”,&stu -> num); D. printf(“%d”,p -> num);

25.已有声明”int a[5];”,以下表达式中不能正确取得a[1]指针的是_____ A. &a[1] B. ++a C. &a[0]+1 D. a+1

26.以下程序运行时输出结果为_____ int x = 1; main()

{ printf(“%d”,f(x)); } #define x 2 int f(int y)

{ return x + y ;}

A.1 B.2 C.3 D.4 27.以下关于语句的说法中,正确的是_____ A. do-while 语句的循环体至少会被执行1次 B. while语句的循环体至少会被执行1次 C. for语句的循环体至少会被执行1次

D. 在C语言中只能用do、do-while或for语句实现循环结构 28.以下关于函数形式参数的声明中,正确的是_____

A. int a[ ] B. int a[ ][ ] C. int a[ ] = {0} D. int a[2][ ] 29.关于函数返回值,以下叙述中正确的是_____

A. 函数返回值的类型由函数体内return语句包含的表达式的类型决定 B. 函数返回值的类型由函数头部定义的函数类型决定

C. 若函数中有多个return语句,则函数的返回值是排列在最后面的return语句中表达式的值

D. 若函数体内没有return语句,则函数没有返回值 30.已知函数f的定义如下: void f(void)

{printf(“That’s great!”);} 则调用f函数的正确形式是_____

A.f B. f() C. f(void) D. f(l) 二、填空题 ●基本概念题

1. 在Turbo C 2.0系统中,若将实型常数1.5存储在内存中,它占用(1)个字节。 2. 若有定义”enum seq{mouse,cat,dog,rabbit=0,sheep,cow=6,tiger};” 则执行语句”printf(“%d”,cat+sheep+cow);”后输出的结果是(2) 。

3. 若二维数组a有m列,则在存储该数组时,a[i][j]之前有(3)个数组元素。 4. 若有声明“int a=30,b=7;”,则表达式“!a+a%b”的值是(4) 。

5. 已知数据文件a.dat是通过执行以下程序建立的,若在另一个程序运行时需要从该数据

文件中正确读取数据,则应当调用的读文件库函数的函数名是(5) 。 main()

{ FILE * fp=fopen (“a.dat”,”wb”);

第三部分 江苏省二级统考近五年试题汇编

float x = 25.0;

fwrite (&x,sizeof (float),1,fp); fclose (fp); }

●阅读程序题

6. 以下程序运行时,输出结果是(6) 。 #include main()

{ char * s,*s1=\s=s1;

while(*s1)s1++; printf(\}

7. 以下程序运行时,输出结果是(7) 。 #include main()

{ int a=0,b=0,c=0;

if (a++&&(b+=a)|| ++c) printf(\}

8. 以下程序运行时,输出结果是(8) 。 void SWAP(int x,int y); void swap(int*x,int*y); main()

{ int a=10,b=20;

SWAP(a,b);printf(\void swap(int*x,int*y)

{ int temp;temp=*x;*x=*y;*y=temp; } void SWAP(int x,int y) { swap(&x,&y);}

9. 以下程序运行时,输出结果是(9) 。 #include \void num()

{ extern int x,y; int a=15,b=10; x=a-b;y=a+b; } int x,y; main()

{ int a=7,b=5; x=a+b;y=a-b; num();

printf(\

10. 以下程序运行时,输出结果是(10) 。 #define UP 2

#define DN (2+UP)

第三部分 江苏省二级统考近五年试题汇编

#define HI DN/2 main()

{ printf(\

11. 以下程序运行时,输出结果第一行为(11) ,第二行为(12) 。 #include #include

void process(char * s1,char * s2,char * s3,int d) { int i=0,j=0,len1=strlen(s1),len2=strlen(s2),len3=0; while(i

{ if(d= =1&&s1[i]s2[j]) s3[len3++]=s1[i++]; else

s3[len3++]=s2[j++]; }

s3[len3]='\\0';

if(i

void main()

{ char s1[]=\ process(s1,s2,s,1);puts(s); process(s3,s4,s,2);puts(s); }

12. 以下程序运行时,输出结果第一行为(13) ,第二行为(14) ,第三行为(15) 。

#define N 3 main()

{ int i,j,k=1,a[N][N]={0}; for(i=0; i<=N/2+1; i++) { for(j=0;j<=i;j++) a[j][i-j]=k++; }

for(;i<2*N;i++)

{ for(j=i+1-N;j<=N-1;j++) a[j][i-j]=k++; }

for(i=0;i

{ for(j=0;j

13. 以下程序运行时,输出结果第一行为(16) ,第二行为(17) ,第三行为(18) 。

#include #include typedef struct node { int d;

第三部分 江苏省二级统考近五年试题汇编

struct node *next; } NODE;

NODE *insert(NODE *head,int x,int key) { NODE *s,*p,*q;

s=(NODE *) malloc(sizeof(NODE)); s->d=key; s->next=NULL; if(head->d= =x)

{ s->next=head; head=s; return head; } else

{ q=head;p=q->next;

while((p->d!=x)&&(p->next!=NULL)) { q=p;p=p->next; } if(p->d= =x)

{ s->next=p;q->next=s; } else

{ s->next=NULL;p->next=s; } return head; } }

void print (NODE *head) { if(head= =NULL) return; while(head->next!=NULL)

{ printf(\ printf(\}

main()

{ NODE *head=NULL;

head=insert(head,0,3);print(head); head=insert(head,3,1);print(head); head=insert(head,4,5);print(head); } ●完善程序题

14.已知方程x2-x-2=0在区间[1,4]内有一实根。以下程序中函数double root(double a,double b)为递归函数,采用二分法(半分区间法)求方程f(x)=0在区间[a,b]内的一个实根x,当|f(x)|<0.000001时,x即为所求的近似实根。

#include #include double f(double x) { return x*x-x-2; }

double root (double a,double b) { double m=(a+b)/2,fo=f(a),x=0; if (fabs(f(m))<1e-6) x= (1) ; else

{ if(fo*f(m)>0) a=m; else b=m;

第三部分 江苏省二级统考近五年试题汇编

x=root( (2 ) ); }

return x; }

main()

{ printf(\

x3x21x2i?115.以下程序采用递推法计算?(?1)的值。即求x-+?+的值。其中x为键盘输

1!10!i!i?010i入的一个任意的单精度实数。

#include main()

{ int i,sign=1; float x,s,t;

scanf(\ s= (1) ; t=x;

for (i=1;i<=10;i++) { sign=-sign;

t=t*sign* (2) ; s+=t; }

printf(\}

16.定理:对于任意一个正整数都可以找到至少一串连续奇数,它们的和等于该正整数的立方。例如:33=27=7+9+11,43=64=1+3+5+7+9+11+13+15。以下程序用[2,20]之间的所有正整数验证该定理。 #include main()

{ long n,i,k,j,p,sum; for(n=2;n<=20;n++) { k=n*n*n;

for(i=1;i

{ for(j=i,sum=0; (1) ;j+=2) sum+=j; if(sum= =k)

{ printf(\ for(p=i;p< (2) ;p+=2) printf(\ printf(\ break; } }

if(i>=k/2) printf(\ }


江苏省计算机二级考试C语言试卷汇编(2001-2005)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:智能变电站作业指导书 总则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: