江苏计算机二级C语言练习模拟试题 |
第二部分 :c程序设计 21.执行"int k=11;k=1/3*k++;"后,k的值是__(21)____ A.0 B 22.以下常量中正确的是____(22)____ A.'abc' B.'\x123' C.3.145E-1.2 D."a" 23.设有"int a;",以下不能正确表达数学关系10<a<15的表达式是__(23)___ A.10<a<15 B.a==11||a==12||a==13||a==14 C.a>10 && a<15 D.!(a<=10) &&!(a>=15) 24.若有"int a[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);",则值为9的表达式是(24) A.p+=3,*p++ B.p+=4, *(p++) C.p+=4,*++p D.p+=4,++*p; 25.以下关于if语句的错误描述是(25) A.条件表达式可以是任意的表达式 B.条件表达式只能是关系表达式或逻辑表达式 C.条件表达式的括号不可以省略 D.与else配对的if语句是其之前最近的未配对的if语句 26.设有如下函数定义,则返回的函数值是(26) main() {int x,*y;y=fun(&x);...} int *fun(int *a) {int *t;*a=99;t=a;return t;} A.无确切的值 B.形参a的地址 C.主函数中变量x的地址 D.fun函数中变量t的地址 27.以下程序段的输出结果是___(27)___ int a=0,b=4,k=2;k=a+1>0||(++a<0)&&(!(b--<=0)); printf("%d,%d,%d",k,a,b); A.1 1 3 B.1 1 28.设有基类型相同的两个指针变量,则不能对他们进行____(28)___运算 A.+ B.- C.++ D.-- 29.语句(29)能正确完成赋字符串的功能 A.char s[4];s[0]="string" B.char *s;gets(s); C.char *s[]="string" D.char *s;strcpy(s,"string"); 30.以下叙述中不正确的是(30) A.一个变量的作用域完全取决于变量说明语句的位置 B.外部变量可以在函数以外的任何位置定义 C.内部变量的生存期只限于本次函数调用,无法将内部变量的值保存至函数的下一次调用 D.用static说明一个外部变量是为了限制其他编译单位的引用 二:填空题 1.若有"int a=5;a+=a-=-a*a;",则a的值是___(1)___ 2.以下程序的输出结果是___(2)____ enum week{SUN=7,MON=1,WED,TUS,THS,FRI,SAT}; main() {printf("%d",hour(FRI,SUN));} hour(int x,int y) {if(y>x) return 24*(y-x); else return -1; } 3.以下程序的输出结果是(3) main() {extern int x; printf("%d",x+=2);fun1(2); } int x=1; fun1(int x) {printf("%d",x++);fun2(2);} fun2(void) {printf("%d",x); int x=5;printf("%d",x); } 4.若有宏定义 #define N 2 #define Y(n) ((N+1)*n) 则执行语句"z=2*(N+Y(N+2));"后,z的值是(4) 5.【程序】 main() {int s,p[9]={1,2,3,4,5,6,7,8,9}; printf("\n%d",add(p,5); } add(int *p,int n) {if(n==1) return *p; else return *p+add(p+1,n-1); } 程序输出结果是(5) 6.[程序] char *fun(char *s) {int i,j; for(i=j=0;s[i]!='\0';i++) if(s[i]!='c') s[j++]=s[i]; s[j]='\0';return s; } main() {printf("%s",fun("chance")); } 7.[程序] int *swap(int *a,int *b) {int *p; p=a;a=b;b=p; return a; } main() {int x=3,y=4,z=5; swap(swap(&x,&y),&z); printf("%d,%d,%d",x,y,z); } 程序输出结果是____(7)____ 8.【程序】 fun(int n, int *s) { int f1,f2; if(n==1||n==2) *s=1; else {fun(n-1,&f1);fun(n-2,&f2); *s=2*f1+f2+1;printf("\n%d,%d",f1,f2); } } main() {int x; fun(4,&x);printf("\n x=%d",x); } 程序运行时输出的第一行是(8),第二行是(9),最后一行是(10) 9.[程序] main() {int i,p[3][3]={1,2,3,4,5,6,7,8,9},*p1[3],(*p2)[3]; for(i=0;i<3;i++) p1[i]=p[i]; p2=p; for(i=1;i<3;i++) printf("\n%d,%d",*(*(p1+i)+1)+1,*(*++p2+1)+1); } 10.[程序] main() {int i,j,a[3][3]={1,1},*p1,*p2,*p3; p1=a[0];p2=a[0]+1;p3=a[0]+2; for(i=2;i<9;i++) func(p1++,p2++,p3++); for(i=0;i<3;i++) for(j=0;j<3;j++) {printf("%d,",a[i][j];printf("\n");} } func(int *q1,int *q2,int *q3) {*q3=*q1+*q2;} 程序运行时输出的第一行是(13),第二行是(14),第三行是(15) 11.函数g的功能是计算级数的值,当通项 【程序】 #include <math.h> float g(float x, float eps); main() {float x,eps; scanf("%f%f",&x,&eps); printf("\n%f,%f",x,g(x,eps)); } float g(float x,float eps) {int n=1;float s,t; s=1;t=1; do {t=t*( 16 ); s=s+(n*n+1)*t; ( 17 ) }while( ( 18 )>eps); return s; } 12.函数delete功能是:在字符串str中删除所有出现的子串str1 [程序] char *delstr(char *str,char *str1) {char *p,*p1,*q1;int i; if(*str=='\0'||*str=='\0') return str; p=str; while(*p!='\0') {p1=p,q1=str1; while(*p1==*q1&&*q1!='\0')( 19 ) if(p!=p1&&*q1=='\0') {for(i=0;*q1!='\0';i++,p1++) ( 20 )=*p1; ( 21 )='\0'; } p++; } ( 22 ); } 13.设结点的数据结构定义如下: typedef struct p{ int x,y; struct p *next; }PNODE; 函数padd功能是:由pa、pb分别指向的两个已经存在的链表,生成一个pc指向 的新链表,并返回该新链表第一个结点的地址.两个已存在的链表均是按结点的y 值升序排列的有序表,新生成链表的结点仍按y的值升序排列,新链表的生成规则是: 当在pa和pb链表中发现y值相同的结点时,则在pc链表中增加一个新结点,新结点的x 取值为pa,pb指向的链表中对应的两个结点的x值之和,新结点的y取值为pa或pb链表对应 结点的y值 【程序】 PNODE *padd(PNODE *pa,PNODE *pb) {PNODE *pcr,*pt,*pc; pc=NULL; while( 23 ) {if(pa->y==pb->y) {pt=( 24 )malloc(sizeof(PNODE)); pt->x=pa->x+pb->x; pt->y=pa->y;pt->next=NULL; if(pc==NULL) pc=pcr=pt; else {pcr->next=pt;( 25 );} pa=pa->next;pb=pb->next; } else if( 26 ) pb=pb->next; else pa=pa->next; } return pc; } 14.函数replace的功能是:在ffp指向的二进制数据文件中查找第一个出现的整型oldv 的值,并用整型newv的值替换,如果找到并替换则函数返回1,否则返回0 #include <stdio.h> main() {int st1[10]={10,11,12,13,14,15,16,17,18,19},st2[10]; FILE *fp;int i; fp=fopen("stud.dat","wb"); fwrite(st1,sizeof(int),10,fp); fclose(fp); fp=fopen("stud.dat","rb+"); replace(fp,14,99)?printf("found and replaced");printf("not found"); ( 27 ) fread(st2,sizeof(int),10,fp); fclose(fp); for(i=0;i<10;i++) printf("%d",st2[i]); } replace(FILE *ffp, int oldv, int newv) {int x,i,t=0; rewind(ffp); while( 28 ) {fread(&x,sizeof(int),1,ffp); if(x==oldv) {t=1; fseek(ffp,( 29 ),SEEK_CUR); fwrite(&newv,sizeof(int),1,ffp); ( 30 ); } } return t; } 21.A 22.D 23.A 24.B 25.B 26.C 27.D 28.A 29.C 30.C (1)60 (2)48 (3) 3235 (4)20 (5)15 (6)hane (7)3,4,5 (8)1,1 (9)4,1 (10)x=10 (11)6,6 (12)9,9 (13)1,1,2 (14)3,5,8 (15)13,21,34 (16)x/(2*n) (17)n++ (18)fabs(t) (19)p1++,q1++ (20)*(p+i() (21)*(p+i) (22)return str (23)pa && pb (24)PNODE * (25)pcr=pt (26)pa->y>pb->y (27)rewind(fp) (28)!feof(ffp) (29) |