指針 習(xí)題九及參考答案_第1頁
指針 習(xí)題九及參考答案_第2頁
指針 習(xí)題九及參考答案_第3頁
指針 習(xí)題九及參考答案_第4頁
指針 習(xí)題九及參考答案_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

習(xí)題九單選題已知:int*p,a;則語句"p=&a;"中的運(yùn)算符"&"的含義是()。A)位與運(yùn)算B)邏輯與運(yùn)算C)取指針內(nèi)容D)取變量地址2、已知:inta,x;則對的的賦值語句是()。A)a=(a[1]+a[2])/2B)a*=*a+1;C)a=(x=1,x++,x+2);D)a="goog";3、已知:inta,*p=&a;則下列函數(shù)調(diào)用中錯誤的是()。A)scanf("%d",&a);B)scanf("%d",p);C)printf("%d",a);D)printf("%d",p);4、main(argc,argv)中形式參數(shù)argv的對的闡明形式應(yīng)當(dāng)為()。A)char*argv[]B)charargv[][]C)charargv[]D)char*argv5、闡明語句"int(*p)();"的含義是()。p是一種指向一維數(shù)組的指針變量p是一種指針變量,指向一種整型數(shù)據(jù)p是一種指向函數(shù)的指針,該函數(shù)的返回值是一種整型以上都不對6、設(shè)有闡明int(*ptr)[M];其中的標(biāo)記符ptr是()。M個指向整型變量的指針指向M個整型變量的函數(shù)指針一種指向有M個整型元素的一維數(shù)組的指針含有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型變量7、已知:double*p[6];它的含義是()。A)p是指向double型變量的指針B)p是double型數(shù)組C)p是指針數(shù)組D)p是數(shù)組指針8、已知函數(shù)闡明語句:void*f();則它的含義是()。A)函數(shù)f的返回值是一種通用型的指針B)函數(shù)f的返回值能夠是任意的數(shù)據(jù)類型C)函數(shù)f無返回值D)指針f指向一種函數(shù),該函數(shù)無返回值9、已知:chars[10],*p=s,則在下列語句中,錯誤的語句是()。A)p=s+5;B)s=p+s;C)s[2]=p[4];D)*p=s[0];10、已知:charb[5],*p=b;則對的的賦值語句是()。A)b="abcd"B)*b="abcd"C)p="abcd"D)*p="abcd"11、下列對字符串的定義中錯誤的是()。A)charstr[7]="FORTRAN"B)charstr[]="FORTRAN"C)char*str="FORTRAN"D)charstr[]={'F','O','R','T','R','A','N','\0'}12、已知:chars[20]="programming",*ps=s;則不能引用字母o的體現(xiàn)式是()。A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps13、已知:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則不能表達(dá)數(shù)組a中元素的體現(xiàn)式是()。A)*pB)a[10]C)*aD)a[p-a]14、已知:char**s;對的的語句是()。A)s="computer";B)*s="computer";C)**s="computer";D)*s='A’;15、已知:charc[8]="beijing",*s=c;inti;則下面的輸出語句中,錯誤的是()。A)printf(%s\n",s);B)printf("%s\n",*s);C)for(i=0;i<7;i++)D)for(i=0;i<7;i++)printf("%c",c[i]);printf("%c",s[i]);16、已知:inti=0,j=1,*p=&i,*q=&j;錯誤的語句是()。A)i=*&j;B)p=&*&i;C)j=*p++;D)i=*&q;17、已知:char*p,*q;選擇對的的語句()。A)p*=3;B)p/=q;C)p+=3;D)p+=q;18、已知:inta,*p=&a;則為了得到變量a的值,下列錯誤的體現(xiàn)式為();A)*&pB)*pC)p[0]D)*&a19、C語言主函數(shù)main()最多允許有()個參數(shù)。A)1B)2C20、已知:inta[4][3]={1,2,3,4,5,6,7,8,9,10};int(*ptr)[3]=a,*p=a[0];則下列能夠?qū)Φ谋磉_(dá)數(shù)組元素a[1][2]的體現(xiàn)式是()。A)*((ptr+1)[2])B)*(*(p+5))C)(*ptr+1)=2D)*(*(a+1)+2)二、填空題1、下面的函數(shù)是求兩個整數(shù)之和,并通過行參傳回成果。intadd(intx,inty,________z)(int*){________=x+y;}(*z)2、下面程序通過指向整型的指針將數(shù)組a[3][4]的內(nèi)容按3行4列的格式輸出,請給printf()填入適宜的參數(shù),使之通過指針p將數(shù)組元素按規(guī)定輸出。#include"stdio.h"inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a;main(){inti,j;for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%4d",___________);(*p+i*4+j)}}3、下面程序的功效是:從鍵盤上輸入一行字符;存入一種字符數(shù)組中,然后輸出該字符串。#include"stdio.h"main(){charstr[81],*sptr;inti;for(i=0;i<80;i++){str[i]=getchar();if(str[i]=='\n')break;}str[i]=___________;('\0')sptr=str;while(*sptr)putchar(*sptr_______);(++)}4、下面的程序?qū)崿F(xiàn)從10個數(shù)中找出最大和最小值。#include"stdio.h"intmax,min;find_max_min(int*p,intn){int*q;max=min=*p;for(q=________;________;q++)(q=pq<p+n)if(________)max=*q;(*q>max)elseif(________)min=*q;(*q<min)}main(){inti,num[10];printf("input10numbers:\n")for(i=0;i<10;i++)scanf("%d",&num[i]);find_max_min(num,10);printf("max=%d;min=%d\n",max,min);}三、編程題1、編寫一函數(shù),其功效是交換兩個變量x、y的值。編程序?qū)崿F(xiàn)對數(shù)組a[100],b[100]調(diào)用此函數(shù),交換a、b中含有相似下標(biāo)的數(shù)組元素的值,且輸出交換后的a、b數(shù)組。/*p279_1.c*/#include"stdlib.h"voidswap(int*pa,int*pb){intt;t=*pa;*pa=*pb;*pb=t;}main(){inta[100],b[100],i;for(i=0;i<100;i++)/*產(chǎn)生數(shù)組a和b*/{a[i]=random(100);b[i]=random(100);}printf("beforeswapA:\n");/*輸出交換前數(shù)組a*/for(i=0;i<100;i++)printf("%3d",a[i]);printf("\n");printf("beforeswapB:\n");/*輸出交換前數(shù)組b*/for(i=0;i<100;i++)printf("%3d",b[i]);printf("\n");for(i=0;i<100;i++)/*a、b數(shù)組元素交換*/swap(&a[i],&b[i]);printf("afterswapA:\n");/*輸出交換后數(shù)組a*/for(i=0;i<100;i++)printf("%3d",a[i]);printf("\n");printf("afterswapB:\n");/*輸出交換后數(shù)組b*/for(i=0;i<100;i++)printf("%3d",b[i]);printf("\n");}_2、用數(shù)組方案和指針方案分別編寫函數(shù)insert(s1,s2,f),其功效是在字符串s1中的指定位置f處插入字符串s2。解1:/*P279_2A.c*/#include"string.h"insert(char*sa,char*sb,intn){charsf[80],*p,*q;inti=0;for(p=sa+n;*p!='\0';p++)sf[i++]=*p;sf[i]='\0';for(p=sa+n;*sb!='\0';p++,sb++)*p=*sb;for(q=sf;*q!='\0';p++,q++)*p=*q;*q='\0';}main(){chars1[80]="dsahfdjkahfke";chars2[40]="sdajkhew";intn;puts(s1);puts(s2);n=strlen(s1);printf("Inputn(0----%d):\n",n);scanf("%d",&n);insert(s1,s2,n);puts(s1);}解2:/*P279_2B.C*/#include"string.h"insert(charsa[],charsb[],intn){charsf[80];inti=0,k=0;while(sa[n+i]!='\0')sf[i]=sa[n+i++];sf[i]='\0';i=0;while(sb[i]!='\0')sa[n+i]=sb[i++];while(sf[k]!='\0')sa[n+i++]=sf[k++];sa[n+i]='\0';}main(){chars1[80]="dsahfdjkahfke";chars2[40]="sdajkhew";intn;puts(s1);puts(s2);n=strlen(s1);printf("Inputn(0----%d):\n",n);scanf("%d",&n);insert(s1,s2,n);puts(s1);}解3#include"string.h"main(){chars1[80],s2[30];intn;gets(s1);gets(s2);printf("Inputn(n<strlen(s1):\n");doscanf("%d",&n);while(n>=strlen(s1));insert(s1,s2,n);puts(s1);}insert(char*p1,char*p2,intk){chartem[80];strcpy(tem,p1+k);/*保存第k個字符開始的字符*/*(p1+k)='\0';/*使第k個字符之前的字符為一種獨立字符串*/strcat(p1,p2);/*將p2復(fù)制到p1之后*/strcat(p1,tem);/*再將保存再tem中的字符串連接到p1末尾*/}3、用指針編寫比較兩個字符串s和t的函數(shù)strcmp(s,t)。規(guī)定s<t時返回-1,s=t時返回0,s>t時,返回1。解1:/*P279_3.C*/intstrcmp(char*s1,char*t1){while(*s1!='\0'&&*t1!='\0'){if(*s1>*t1)return1;if(*s1<*t1)return-1;if(*s1++==*t1++)continue;}if(*s1>*t1)return1;if(*s1==*t1)return0;if(*s1<*t1)return-1;}main(){intk;chars[80]="123456";chart[40]="123456";puts(s);puts(t);k=strcmp(s,t);if(k==1)printf("s>t:%d\n",k);if(k==0)printf("s==t:%d\n",k);if(k==-1)printf("s<t:%d\n",k);解2:/*P279_3b.c*/#include"string.h"intsstrcmp(char*s,char*p){while(*s!='\0'&&*p!='\0'&&*s++==*p++);if(*s>*p)return1;elseif(*s==*p)return0;elsereturn-1;}main(){chara[80],b[80];intk;gets(a);gets(b);k=sstrcmp(a,b);if(k==1)printf("a>b\n");if(k==0)printf("a==b\n");if(k==-1)printf("a<b\n");}4、編寫程序,其中涉及一種函數(shù),此函數(shù)的功效是:對一種長度為N的字符串從第K個字符起,刪除M個字符,構(gòu)成長度為N-M的新字符串(其中N、M<=80,K<=N)。規(guī)定輸入字符串"Wearepooppoorstudents.",運(yùn)用此函數(shù)進(jìn)行刪除"poor"的解決,并輸出解決后的字符串。/*P279_4.C*/#include"stdio.h"main(){inta[10],b[10],*pa,*pb,i;pa=a;pb=b;for(i=0;i<3;i++,pa++,pb++){*pa=i;*pb=2*i;printf("%d\t%d\n",*pa,*pb);}printf("\n");pa=&a[0];pb=&b[0];/*輸出00*/for(i=0;i<3;i++)/*12*/{*pa=*pa+i;*pb=*pb+i;/*24*/printf("%d\t%d\n",*pa++,*pb++);/*輸出00*/}/*23*/}_/*46*/5、輸入一行字符串,將其中的字符從小到大排列后輸出。解1:/*p279_5A.c*/#include"string.h"sort(char*s,intn){inti,j;char*p,ch;for(i=0;i<n;i++){p=s+i;for(j=i;j<n;j++)if(*(s+j)<*p)p=s+j;ch=*p;*p=*(s+i);*(s+i)=ch;}}main(){chara[80];intk;printf("Entryastringfora:");gets(a);k=strlen(a);sort(a,k);puts(a);}解2:/*p279_5b.c*/#include"string.h"sort(char*s,intn){inti,j,k;charp,ch;for(i=0;i<n;i++){k=i;for(j=i;j<n;j++)if(s[j]<s[k])k=j;ch=s[i];s[i]=s[k];s[k]=ch;}}main(){chara[80];intk;printf("Entryastringfora:");gets(a);k=strlen(a);sort(a,k);puts(a);}6、輸入若干行字符串,求出每行的串長。當(dāng)串中保含"stop"時,停止輸入,并打印出最長的行的內(nèi)容。解1:/*P279_6A.c*/main(){chars[80],*p,*q,*f,cc;printf("Inputastring:\n");scanf("%s",s);for(p=s;*p!='\0';p++){f=p;for(q=p;*q!='\0';q++)if(*f>*q)f=q;cc=*f;*f=*p;*p=cc;}printf("%s\n",s);}_解2:/*P279_6B.c*/#include"string.h"main(){chars[25][80],*p;inti,k,m=0;for(i=0;i<25;i++){gets(s[i]);if(strcmp(s[i],"stop")==0)break;k=strlen(s[i]);printf("%d:%d\n",i,k);if(k>m){p=s[i];m=k;}}printf("%s",p);}7、將空格分開的字符串稱為單詞。輸入多行字符串,直到輸入"stop"單詞時才停止。最后輸出單詞的數(shù)量。解1:#include"string.h"main(){chars[200];longn=0;inti,m;gets(s);while(strcmp("stop",s)!=0){m=strlen(s);for(i=0;i<m;i++){if(s[i]!=''&&s[i+1]=='')n++;if(s[i]!=''&&s[i+1]=='\0')n++;if(s[i]==''&&s[i+1]=='')continue;

if(s[i]==''&&s[i+1]!='')continue;}gets(s);}printf("n=%ld\n",n);}解2/*P280_7*/#include"string.h"main(){chars[80],*p=s;intn=0;printf("Inputastring:\n");gets(s);while(strcmp(s,"stop")!=0){p=s;while(*p!='\0'){if(*p==32||*p=='\0')n++;p++;}if(strlen(s)>0)n++;printf("Inputastring:\n");gets(s);}printf("wordsnumber:%d\n",n);}8、將輸入的兩行字符串連接后,將串中的空格全部移到串首后輸出。/*P280_8*/#include"string.h"main(){chars[80],*p=s,s1[80];intn,n1=0;printf("Inputastring:\n");scanf("%s",s);while(strcmp(s,"stop")!=0){n=0;p=s;while(*p!='\0'){n++;p++;}if(n>n1){n1=n;strcpy(s1,s);}printf("Inputastring:\n");scanf("%s",s);}printf("%s:%d\n",s1,n1);}_9、輸入字符串,請分別統(tǒng)計字符串中所包含的各個不同的字符及其各個字符的數(shù)量。如:輸入字符串:abcedabcdcd則輸出:a=2b=2c=3d=3e=1解1:/*P280_9A*/#include"string.h"main(){chars1[80],s2[40],*p1=s1,*p2=s2;printf("Input2string:\n");gets(s1);gets(s2);while(*p1!=0)p1++;while(*p2!='\0')*p1++=*p2++;*p1='\0';while(p1!=s1){if(*p1!=32){p1--;continue;}else{p2=p1;while(p2!=s1){*p2=*(p2-1);p2--;}*p2='';p1--;}}puts(s1);}解2:/*P280_9b*/#include"stdlib.h"#include"string.h"inta[27];main(){inti=0;chars[80],*p=s;printf("Enterstrint:");gets(s);while(*p!='\0'){if(*p>='A'&&*p<='Z')*p=*p+32;if(*p>='a'&&*p<='z')a[*p-'a']++;elsea[26]++;p++;}for(i=0;i<26;i++)prin

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論