指針卷.doc_第1頁
指針卷.doc_第2頁
指針卷.doc_第3頁
指針卷.doc_第4頁
指針卷.doc_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

一、 指針作業(yè)一、 選擇題:1. 設(shè)*p, i ; 以下正確的語句是 (C ). A)*p=10; B) i=p; C) i=*p; D) p=2*p+1;2. 設(shè)char s10; int i; 以下正確的表達式是 (B )。 A) i+2; B) *(s+i); C) *(&s+i); D) *(s+)+i)3. 設(shè)char s10; *p=s; 以下不正確的表達式是 (B )。 A) p=s+5; B)s=p+s; C) s2=p4; D)*p=s0;4. 設(shè)char*s;以下正確的表達式是 (B )。 A) s= “computer” B) *s=“computer”; C) *s=“computer” D)*s=c;5. 設(shè)有語句:int a10=0,1,2,3,4,5,6,7,8,9,*p=a;,以下對a數(shù)組的元素正確的引用是 ( D )。 A) ap-a B) *9&ai) C)pi D)*(*a(a+i)6. 設(shè)有說明int(*ptr)M;其中ptr是 (C )。 A)M個指向整型變量的指針 B) 指向M個整型變量的函數(shù)指針 C) 一個指向具有M個整型元素的一維數(shù)組的指針 D) 具有M個指針元系的一維指針數(shù)組,每一個元素只能指向整型量7. 選擇i的正確結(jié)果 (B )。 int i; char*s=”a045+045”b”; for (i=0;*s+;i+);A) 5 B) 8 C) 11 D) 128. 如下程序的執(zhí)行結(jié)果是 (A )。 #include main() int i; char *s=”ann35b”; for(i=0;*s+;i+); printf(“i=%dn”,i); A) i=5 B) i=6 C) i=7 D) i=89.如下程序的執(zhí)行結(jié)果是 (C )。 #include main() int i; char *s=”an”; for(i=0;si!=n;i+) printf(“%c,*(s+i); A) a B) a C) a D) a10. 如下程序的執(zhí)行結(jié)果是 (B )。 #includ main() int i; char *s=”; for(i=0;si!=0;i+) printf(“%c”,*(s+i); A) ” B) a” C) “” D)不正確11.如下程序的執(zhí)行結(jié)果是 ( A )。 #includ main() int i; char*s=”; for(i=0;si!=0;i+) printf(“%c”,*(s+i); A) ” B) a” C) “” D)不正確12. 如下執(zhí)行的程序結(jié)果是 (B )。 #include main() static int a=1,2,3,4,5,6; int*p; p=a; *(p+3)+=2; ptintf(“%d,%dn”,*p,*(p+3); A) 1, 3 B) 1, 6 C) 3, 6 D) 1, 413. 如下程序的執(zhí)行結(jié)果是 ( C )。 #include main() static int a4=(1,3,5,7,9,11,13,15,17,19,21,23); int(*p)4,i=1,j=2; p=a; printf(“%dn”,*(*(p+i)+j); A) 9 B) 11 C) 13 D) 1714.以下count函數(shù)的功能是統(tǒng)計substr在母串str中出現(xiàn)的次數(shù),請選擇正確的編號填空。 count(ahsr*str,car*substr) int i,j,k,num=0; for (i=0;_B_;i+) for(_B_,k=0;substrk=strj;k+,j+) if(substr_=0) num+; break; return(num); A) stri=substri B) stri!=0 C) stri=0 D) strisubstriA) j=j+1 B) j=I C) j=0 D)j=1A) k B) k+ C) k+1 D) +k15. 以下delspace函數(shù)的功能是刪除字符串s中的所有空格(包括Tab)、回車符和換行符)。請選擇正確的編號填空。 delspace(car*s) int i,t; char c80; for (i=0,t=0;_;i+) if(delspace(_) ct+=si; ct=0; strcpy(s,c); A) si B) !si C) si=0 D) si=0A) s+i B) *ci C) *(s+i) D) *(c+i)16. 以下delunu函數(shù)的功能是刪除字符串s中的數(shù)字字符。請選擇正確的編號填空。 delnum(char*a) int i,j; for(i=0.j=0;si!=0;i+) if(_) sj=si; j+; _; A) sj9 B) si9C) sj9 D) si9 A) sj=0 B) si=0C) sj+=”0 D) si+=017. 以下comp函數(shù)的功能是按詞典順序比較兩個字符串s和t的大小,如果s大于t,則返回正值,等于則返回0,小則返回負值。請選擇正確的編號填空。 comp(char *s,char *t) for(;*s=*t; ) if(*s=0) return(0); return(*s=*t); A) s+ B) t+ C) s+;t+ D) s+,t+18. 以下conj函數(shù)的功能是將兩個字符串s和t連接起來,請選擇正確的編號填空。 conj(char *s,char *t) char *p=s; while(*s) ; while(*t) *s= ; s+; t+; *s=0 A) s- B) s+ C) s D) *s A) *t B) t C) t- D) *t+ A) return(s) B) return(t) C) return(p) D) return(p-t)二、填空題1. 定義int a=1,2,3,4,5,6,*p=a;表達式(*+p)+的值是 。2. 以下程序的執(zhí)行結(jié)果是 n1=1,n2=6 。 #include main() int a=1,2,3,4,5,6; int *p; int i; p=a; *(p+3)+=2; printf(“nl=%d,n2=%dn”,*p,*(p+3); 3. 以下程序的執(zhí)行結(jié)果是 10 。 #include main() Int *p,*q,i=10; q=&i; p&q; printf(“%dn”,*p); 4. 以下程序的執(zhí)行結(jié)果是 i=10 j=2 。 #include main() int i,j; int *p,*q; i=2; j=10; p=&i; q=&j; *p=10; *q=2; printf(“i=%d,j=%dn”,i,j); 5. 以下程序的執(zhí)行結(jié)果是 5, 2 。 #include main() int i; int *p; p=&i; *p=2; p+; *p=5; printf(“%d,”,*p); p-; printf(“%dn”,*p); 6. 以下程序的執(zhí)行結(jié)果是 i=15 。 #include main() Int *p,i; i=5; p=&i; i=*p+10; printf(“i=%dn”,i); 7. 以下程序的執(zhí)行結(jié)果是 ch=f #include main() char s=”abcdefg”; char *p; p=s; printf(“ch=%cn”,*(p+5); 8. 以下程序的執(zhí)行結(jié)果是 24 。 #include main() int a=2,3,4; int s,i,*p; s=1; p=a; for(i=0;i3;i+) s*=*(p+i); printf(“s=%dn”,s); 9. 以下程序的執(zhí)行結(jié)果是 654321 。 #include main() int a=1,2,3,4,5,6,*p; for (p=&a5;p=a;p-) printf(“%d”,*p); printf(“n”); 10. 以下程序的執(zhí)行結(jié)果是 12 。 #include main() int a12=1,2,3,4,5,6,7,8,9,10,11,12,*p4,i; for (i=0;i4;i+) pi=&ai*3; printf(“%dn”,p32); 11. 以下程序的執(zhí)行結(jié)果是 6358 。 #include main() char ch25=“6934”,”8254”,*p2; int i,j,s=0; for (i=0;i2;i+) pi=chi; for (i=0;i0&pij=9;j+=2) s=10*s+pij-0; printf(“%dn”,s); 12. 以下程序的執(zhí)行結(jié)果是 xbcdBCD 。 #include main() char *p1,*p2,str20=”xyz”; p1=”abcd”; p2=”ABCD”; strcpy(str+1 ,strcat(p1+1,p2+1); printf(“%s”,str); 13. 以下程序的執(zhí)行結(jié)果是 a=9,b=6,c=3 。 swap(pt,pt2) int*pt1,*pt2; int i; i=*pt1; *pt1=*pt2; *pt2=i; exchange(q1,q2,q3) int*q1,*q2,*q3; if(*q1*q2)swap(q1,q2); if(*q1*q3)swap(q1,q3); if(*q2*q3)swap(q2,q3); main() int a,b,c; int*p1,*p2,*p3; p1=&a; p2=&b; p3=&c; *p1=3; *p2=6; *p3=9; exchange(p1,p2,p3); printf(“a=%d,b=%d,c=%dn”,a,b,c; 14. 設(shè)包含如下程序的文件名為myprog.c, 編譯后健入命令:myprog one two three, 則執(zhí)行結(jié)果是 one two three 。 #include main(int arec,char *argv) int i; for (i=1;iarec;i+) printf(“%s%”,argvi,(iarec-1)?”:n); 15. 下面的函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2拼接到字符串str1后面的功能,請在程序的空白處填入一條語句或一個表達式。 char *strcat(str1.str2); char*str1,*str2; char*t=str1; while(_*str1_) strl+; while(_*str1+=*str2+_); return(t); 16. 下面的程序可以統(tǒng)計命令行第一參數(shù)中出現(xiàn)的字母的個數(shù),請在程序中空白處填入一條語句或一個表達式。 #include #include main(argc,argv) int argc; char* argv; char*str; int count=0; if (argc2) exit(1); str= argv1 ; while (*str) if (isapha( *str+ ) count+; printf(“n字母個數(shù):%dn”,count); 三、程序題1. 編寫一個程序,接受用戶輸入的一行字符,以回車健結(jié)束,分別統(tǒng)計其中的大寫字母、小寫字母、空格、數(shù)字和其他字符的個數(shù)。源程序如下: #include main() int n1=0,n2=0,n3=0,n4=0,n5=0,i; char *p,str80; printf(“輸入一行字符: “); i=0; while(stri=getchar()!=”n)i+; p=str; while(*p!=n) if(*p=A&*p=a&*p=0&*p=9) n4+; else n5+; p+; printf(“大 寫 字 母 數(shù):%d 小 寫 字 母 數(shù):%d空 格 數(shù):%d數(shù) 字 數(shù):%d其 他 數(shù):%dn”,n1,n2,n3,n4,n5); 1.2. 編寫一個程序,打印出下面的圖形。 * * * * * * * *2. 源程序如下: #include main() int i,j; char*s; s=” * “; printf(“%sn”,s); for for(j=1;j=4-i;j+)printf(“”); for(j=1;j=2;i;j+)printf(“*”); for(j=1;j=2*i+1;j+)printf(“”); for(j=1;j=2;i;j+)printf(“*”); for(j=1;j=4-i;j+)printf(“”); printf(“n”); for(i=1;i=13;i+)printf(“*”); printf(“n”);3. 編寫一個程序判定一個字符在一個字符串中出的次數(shù),如果該字符不出現(xiàn)則返回0。源程序如下: #include #include char_count(char*s,char letter); main() char*str,c; printf(“輸入一字符串:”); gets(str); printf(“輸入一字符串:”); scanf(“%c”,&c); printf(“該字符在字符串中出現(xiàn):%d次n”,char_count(str,c); char_cont(char*s,char letter) int count=0; while(*s) i(*s+= =letter) count+; return(count); 4. 編寫一個程序,計算用戶輸入的起始時間終止時間之間相距的天數(shù)。二、 結(jié)構(gòu)體和聯(lián)合體一、選擇題1. 在說明一個結(jié)構(gòu)體變量時系統(tǒng)分配給它的存儲空間是(D )。A) 該結(jié)構(gòu)中第一個成員所需存儲空間B) 該結(jié)構(gòu)體中最后一個成員所需存儲空間C) 該結(jié)構(gòu)體中占用最大空間的成員所需存儲空間D) 該結(jié)構(gòu)體中所有成員所需存儲空間的總和2. 在說明一個聯(lián)合體變量時系統(tǒng)分配給它的存儲空間是(C )。A) 該聯(lián)合體中第一成員所需存儲空間B) 該聯(lián)合體中最后一個成員所需存儲空間C) 該聯(lián)合體中占用最大存儲空間的成員所需存儲空間D) 該結(jié)構(gòu)體中所有成員所需存儲空間的總和3. 聯(lián)合體類型在任何給定時刻, ( A )。A) 所有成員一直駐留在結(jié)構(gòu)中 B) 只有一個成員駐留在結(jié)構(gòu)中C) 部分成員駐留在結(jié)構(gòu)中 D) 沒有成員駐留在結(jié)構(gòu)中4. 使用聯(lián)合體union的目的是 (A )。 A) 將一組數(shù)據(jù)作為一個整體,以便于其中的成員共享一存儲空間 B) 將一組具有相同數(shù)據(jù)類型的數(shù)據(jù)作為一個整體,以便于其中的成員共享同一存儲空間 C) 將一組相關(guān)數(shù)據(jù)作為一個整體,以便于在程序中使用 D) 將一組具有相同數(shù)據(jù)類型的數(shù)據(jù)作為一個整體,以便于在程序中使用5. 以下typedef的敘述不正確的是(B )。 A) 用typedef可以定義各種類型名,但不能用來定義變量 B) 用typedef可以增加新的類型 C) 用typedef只是將已存在的類型用一個新的名稱來代表 D) 使用typedef便于程序的通用6. 以下關(guān)于枚舉的敘述不正確的是(D )。 A) 枚舉變量只能取對應(yīng)枚舉類型的枚舉元素表中的元素 B) 可以在定義枚舉類型時對枚舉元素進行初始化 C) 枚舉元素表中的元素有先后次序,可以進行比較 D) 枚舉元素的值可以是整數(shù)或字符串7. 在以下程序段中,枚舉變量c1和c2的值分別是 (D )和 ( )。 main() enum color(red,yellow,blue=4,green,while)c1,c2; c1=yellow; c2=white; printf(“%d,%dn”,c1,c2); A.) 1 B) 3 C) 5 D) 68. 若有以下程序說明和語句: struct worker int no; char*name; work,*p=&work;則以下引用方式不正確的是 ( D)。 A) work.no B) (*p).no C) p-no D) work-no9. 以下程序執(zhí)行后的正確結(jié)果是 (B )。 struct tree int x; char*s; t; func(stuct tree t) (t.x=10 t.x=”computer”; return(0); main() t.x=1; t.s=”minicomputer”; func(t); printf(“%d,%sn”,t,x,t,s); A) 10,computer B) 1,minicomputer C) 1,computer D) 10,minicomputer10. 有如下定義: struct date int year,month,day; ; struct worklist char name20; char sex; strct date birthday; person;對結(jié)構(gòu)體變量penson的出生年份進行賦值時,下面正確的賦值語句是 (C)。 A) year=1958 B) birthday.year=1958 C) peson.birthday.yeqr=1958 D) person.year=195811. 在如下結(jié)構(gòu)體中,不正確的是 ( B )。 A) struct student B) struct stud20 int no; int no; char name10; char name10; float score; float score; C) struct student D) struct int no; int no; char name10; char name10; float score; float score; stud20; stud100;12. 以下函數(shù)定義不正確的是 ( D )。 A) stuct tree func(s) B) int*func(s) stuct tree s; char s; C) sturct tree*func(s) D) int *func(s) char*s; char*s10; 13. 正確的K值是 ( C )。 enum a,b=5,c,d=4,ek; k=e; A) 3 B) 4 C) 5 D) 614. 以下程序的執(zhí)行結(jié)果是 ( B )。 main() union int x; struct char c1; char c2; b; a; a.x=0x1234 printf(“%x,%xn”,a.b.c1,a.b.c2); A) 12,34 B) 34,12 C) 12,00 D) 34,0015. 以下程序的執(zhí)行結(jié)果是 (B )。 main() union char s2; int i; a; a.i=0x1234; printf(“%x,%xn”, a.s0,a.s1); A) 12,34 B) 34,12 C) 12.00 D) 34,00二、填空題1. 以下程序執(zhí)行的結(jié)果是 24 。 typedef struct long x2; int y4; char z8; MYTYPE; MYTYPE a; main() printf(“%dn”,sizeof(a); 2. 有如下定義: struct int x; char*y; tab21,”ab”,2,”cd”,*p=tab;則:表達式*py的結(jié)果是( a ),表達式*(+p)-y的結(jié)果是( c )。3. 有如下定義: struct int x; int y; s2=1,2,3,4,*p=s;則:表達式+p-x的結(jié)果是( 2 ),表達式 (+p) -x的結(jié)果是( 3 )。4. 以下程序的執(zhí)行結(jié)果是 10,X 。 struct stru int x; char c; ; main() struct stru a=10,x; func(a); printf(“%d,%cn”,a.x.a.c); func(struct stru b) b.x=0; b.c=y; 5. 以下程序的執(zhí)行結(jié)果是 20.y 。 struct stru int x; char c; ; main() struct stur a=10,x,*p=&a; func(p); printf(“%d,%cn”,a.x,a.c); func(struct stru*b) b-x=20; b-c=y; 6. 以下程序的執(zhí)行結(jié)果是 39,0,38,0 。 main() union int i2; long k; char c4; r,*p=&r; p-i0=0x39; p-ii=ox38; printf(“%x, %x, %x, %xn”, p-c1,p-c2,p-c3); 7. 以下程序的執(zhí)行結(jié)果是 8 。 typedef union long x2; int y4; char z8; MYTYPE a; main() printf(“%dn”,sizeof(a); 8. 以下程序的執(zhí)行結(jié)果是 1,2,30,41 。 sturct st int x; int*y; *p; int s=10,20,30,40; struct st a=1,&s0,2&s1,3,&s2,4,&s3; main() p=a; printf(“%d,”,p-x); printf(“%d,”,(+p)-x); printf(“%d,”,*(+p-y); printf(“%dn”, +(*(+p)-y); 9. 以下程序的執(zhí)行結(jié)果是 4,8 。 #includestdio.h) main() union EXAMPLE struct int x;int y; in; int a; int b; e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf(“%d,%dn”,e.in.x,e.in.y); 10. 以下程序的執(zhí)行結(jié)果是 4 。 #includestdio.h) main() struct equip unsigned a:2; unsigned b:3; unsigned c:1; unsigned d:4; unsigned e:3; unsigned unused:3; ; union struct equip eq; unsigned i; abc; abc.i=255; printf(“%dn”,abc.eq.d+1); 三、 程序題(涉及數(shù)據(jù)結(jié)構(gòu),暫時不做)1. 說明一個枚舉類型enum month, 它的枚舉元素為Jan,Feb,Dec。編寫一個顯示上一個月名稱的函數(shù)last_month(),例如輸入jan,則顯示dec,再編寫一個函數(shù)printfmon(),對指定的類型為enum month的變量打印出它的枚舉元素,即三個字母,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論