![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
江蘇計算機二級C語言練習(xí)模擬試題 |
第二部分 :c程序設(shè)計 21.執(zhí)行"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.設(shè)有"int a;",以下不能正確表達數(shù)學(xué)關(guān)系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.以下關(guān)于if語句的錯誤描述是(25) A.條件表達式可以是任意的表達式 B.條件表達式只能是關(guān)系表達式或邏輯表達式 C.條件表達式的括號不可以省略 D.與else配對的if語句是其之前最近的未配對的if語句 26.設(shè)有如下函數(shù)定義,則返回的函數(shù)值是(26) main() {int x,*y;y=fun(&x);...} int *fun(int *a) {int *t;*a=99;t=a;return t;} A.無確切的值 B.形參a的地址 C.主函數(shù)中變量x的地址 D.fun函數(shù)中變量t的地址 27.以下程序段的輸出結(jié)果是___(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.設(shè)有基類型相同的兩個指針變量,則不能對他們進行____(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.外部變量可以在函數(shù)以外的任何位置定義 C.內(nèi)部變量的生存期只限于本次函數(shù)調(diào)用,無法將內(nèi)部變量的值保存至函數(shù)的下一次調(diào)用 D.用static說明一個外部變量是為了限制其他編譯單位的引用 二:填空題 1.若有"int a=5;a+=a-=-a*a;",則a的值是___(1)___ 2.以下程序的輸出結(jié)果是___(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.以下程序的輸出結(jié)果是(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) 則執(zhí)行語句"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); } 程序輸出結(jié)果是(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); } 程序輸出結(jié)果是____(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.函數(shù)g的功能是計算級數(shù)的值,當(dāng)通項 【程序】 #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.函數(shù)delete功能是:在字符串str中刪除所有出現(xiàn)的子串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.設(shè)結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下: typedef struct p{ int x,y; struct p *next; }PNODE; 函數(shù)padd功能是:由pa、pb分別指向的兩個已經(jīng)存在的鏈表,生成一個pc指向 的新鏈表,并返回該新鏈表第一個結(jié)點的地址.兩個已存在的鏈表均是按結(jié)點的y 值升序排列的有序表,新生成鏈表的結(jié)點仍按y的值升序排列,新鏈表的生成規(guī)則是: 當(dāng)在pa和pb鏈表中發(fā)現(xiàn)y值相同的結(jié)點時,則在pc鏈表中增加一個新結(jié)點,新結(jié)點的x 取值為pa,pb指向的鏈表中對應(yīng)的兩個結(jié)點的x值之和,新結(jié)點的y取值為pa或pb鏈表對應(yīng) 結(jié)點的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.函數(shù)replace的功能是:在ffp指向的二進制數(shù)據(jù)文件中查找第一個出現(xiàn)的整型oldv 的值,并用整型newv的值替換,如果找到并替換則函數(shù)返回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) |