![主題作業(yè)三:函數(shù)與結構_第1頁](http://file4.renrendoc.com/view/a190ee79c737963476af2763919e2b7a/a190ee79c737963476af2763919e2b7a1.gif)
![主題作業(yè)三:函數(shù)與結構_第2頁](http://file4.renrendoc.com/view/a190ee79c737963476af2763919e2b7a/a190ee79c737963476af2763919e2b7a2.gif)
![主題作業(yè)三:函數(shù)與結構_第3頁](http://file4.renrendoc.com/view/a190ee79c737963476af2763919e2b7a/a190ee79c737963476af2763919e2b7a3.gif)
![主題作業(yè)三:函數(shù)與結構_第4頁](http://file4.renrendoc.com/view/a190ee79c737963476af2763919e2b7a/a190ee79c737963476af2763919e2b7a4.gif)
![主題作業(yè)三:函數(shù)與結構_第5頁](http://file4.renrendoc.com/view/a190ee79c737963476af2763919e2b7a/a190ee79c737963476af2763919e2b7a5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
主題作業(yè)三:函數(shù)與結構數(shù)組變量名也是指針數(shù)組變量名也是指針訪問結構指針所指向的結構的成員變量時用->,訪問結構的成員變量時用.成員s是數(shù)組,不能直接賦值(但是初始化數(shù)組的時候可以,例如chars[10]=”abc”;那是由編譯器在編譯階段完成的)一.單選題針對如下定義,合法的表達式是__C___。structnode{chars[10];intk;}p[5];A.p.k=2B.p[0]->k=2C.(p->s)[0]=‘a(chǎn)’p[0].s=“a”p指向a[1];然后p+1指向a[2],即元素9的位置;然后(int*)(p+1)則是將指針強制轉換為一個整數(shù)指針,位置不動,還是9的位置;p指向a[1];然后p+1指向a[2],即元素9的位置;然后(int*)(p+1)則是將指針強制轉換為一個整數(shù)指針,位置不動,還是9的位置;+2操作則把上面的整數(shù)指針向后移動2個,即指向11的位置;staticstruct{ intx,y[3];}a[3]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p;p=a+1;表達式*((int*)(p+1)+2)的值為__D___。A.3B.7C.1011->的優(yōu)先級高于++,該表達式等價于++(p->str)所以,++作用于p的成員變量str上。執(zhí)行后的結果是:指針p不變,但是它指向的結構的成員str加1對于以下結構定義,++p->str中的++加在__A->的優(yōu)先級高于++,該表達式等價于++(p->str)所以,++作用于p的成員變量str上。執(zhí)行后的結果是:指針p不變,但是它指向的結構的成員str加1 struct{intlen; char*str; }*p;A、指針str上B、指針p上C、str指的內容上D、以上均不是根據(jù)聲明int(*p)[10],p是一個__A___。A.指針B.數(shù)組C.函數(shù)D.數(shù)組元素第4題解答:注意:int(*p)[10]和int*p[10]是完全不一樣的int*p[10]定義了一個數(shù)組,其元素類型為int*;此時sizeof(p)為40。int(*p)[10]定義了一個指針,其類型是長度為10的整型數(shù)組;此時sizeof(p)為4。若下面程序中所有的變量均已聲明或定義,則下列選項中的變量能夠在fun()中使用的是__第4題解答:注意:int(*p)[10]和int*p[10]是完全不一樣的int*p[10]定義了一個數(shù)組,其元素類型為int*;此時sizeof(p)為40。int(*p)[10]定義了一個指針,其類型是長度為10的整型數(shù)組;此時sizeof(p)為4。#include<stdio.h>voidfun(intx){staticinty;變量遵循先聲明再引用的原則x作為函數(shù)fun的形式參數(shù)變量,已經(jīng)聲明為int型,可以使用變量遵循先聲明再引用的原則x作為函數(shù)fun的形式參數(shù)變量,已經(jīng)聲明為int型,可以使用y是函數(shù)fun的局部靜態(tài)變量,也已經(jīng)聲明,也可以使用z在fun之后定義,之前沒有聲明,不能使用a,b則是函數(shù)main的局部變量,fun不能使用。注意:這里的先后順序只得是編譯器編譯語句的順序,不是語句運行的先后順序。因為if/switch分支、for/while循環(huán)等流程控制語句可能動態(tài)的控制程序語句的執(zhí)行次序,所以語句的執(zhí)行次序不是固定的。return;}intz;voidmain(){inta,b;fun(a);……}A.x,yB.x,y,zC.a(chǎn),b,y,zD.a(chǎn),b,x,y,z填空題對于下面的定義,(s[0].b)/(++p)->a的值為__0___。s[0]為{2,4},s[1]為{6,8}。s[0].b為4s[0]為{2,4},s[1]為{6,8}。s[0].b為4p初始指向s[0],++p指向s[1],故(++p)->a的值為6因為4/6為0,所以。。。。inta;intb;}s[2]={2,4,6,8},*p=s;結構數(shù)組a[3]在內存中也可以看做是一個長度為12的整數(shù)數(shù)組:1,2,3,…,11,12。p的初始地址為a+3,那么p-1指向a[2],即元素9的位置(int*)將p-1強制轉換為一個整型指針,但是還是指向9的位置。所以-1作用在整型指針(int*)(p-1)上,得到9的前面一個整數(shù)元素的地址,即8的地址。結構數(shù)組a[3]在內存中也可以看做是一個長度為12的整數(shù)數(shù)組:1,2,3,…,11,12。p的初始地址為a+3,那么p-1指向a[2],即元素9的位置(int*)將p-1強制轉換為一個整型指針,但是還是指向9的位置。所以-1作用在整型指針(int*)(p-1)上,得到9的前面一個整數(shù)元素的地址,即8的地址。staticstruct{intx,y[3];}a[3]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a+3;intz;z=*((int*)(p-1)-1);下列代碼段將會打印出__COND___。c是一個指針數(shù)組,c[0]指向字符串”c是一個指針數(shù)組,c[0]指向字符串”FIRST”,c[1]指向字符串“SECOND”,c[2]指向字符床“THIRD”。*(c+1)為c[1],所以i*(c+1)+2指向字符SECOND中的C.printf(“%s”,*(c+1)+2);參考第8題的解釋下列程序段的輸出結果是_fgh____。參考第8題的解釋參考第8題的解釋。*(st+2)等價于st[2]。因為*優(yōu)先級高于+,所以**st+1等價于st[0][0]+1即,參考第8題的解釋。*(st+2)等價于st[2]。因為*優(yōu)先級高于+,所以**st+1等價于st[0][0]+1即,’O’+1,即’P’printf("%s",*(st+1)+1);下列代碼段的輸出為_FOUR,P____。char*st[]={"ONE","TWO","FOUR","K"};P指向a+1,所以*p為a[1]。**p為a[1]所指向的字符串的第一個字符,即P指向a+1,所以*p為a[1]。**p為a[1]所指向的字符串的第一個字符,即’4’。所以**p-1為’3’下列代碼段的輸出__45,3___。char*a[]={“678”,”45”},**p=a+1;a[0]指向第0行。a[1]指向第1行,即元素3的位置。那么a[1]+1指向元素3的后面的一個位置,即4的位置。a[0]指向第0行。a[1]指向第1行,即元素3的位置。那么a[1]+1指向元素3的后面的一個位置,即4的位置。對于數(shù)組a,*(a[1]+1)的值為__4___。inta[3][2]={1,2,3,4,5,6};f(-1)f(0)f(1)f(2)f(3)-1-1-3-7-17對于以下遞歸函數(shù)f,調用f(3)的返回值是__f(-1)f(0)f(1)f(2)f(3)-1-1-3-7-17f(intn){return((n>0)?2*f(n-1)+f(n-2):-1);}初始化:k為0,初始化:k為0,調用f(2):k從0變到1,函數(shù)返回2+0=2調用f(3):k從1變到2,函數(shù)返回3+1=4下列代碼段將會打印出__4___。 inti; intf(intx) { staticintk=0; x+=k++; returnx; } i=f(2); i=f(3);f(0)f(1)f(2)f(3)33618f(0)f(1)f(2)f(3)33618f(f(1))=f(3)=18下列代碼段將會打印出___18__。 intf(intx) { return((x>0)?x*f(x-1):3);} printf(“%d”,f(f(1)));typedefTOldTNew[10];定義了一個新的類型,名稱為TNew,它是一個長度為10的數(shù)組,其中每一個元素類型為Told。對于該題,Told為int*,TNew為AIP。而typedefTOldtypedefTOldTNew[10];定義了一個新的類型,名稱為TNew,它是一個長度為10的數(shù)組,其中每一個元素類型為Told。對于該題,Told為int*,TNew為AIP。而typedefTOld(*PNew)[10];則定義了一個新的類型的指針。該語句等價于:typedefTOldTNew[10];typedefTNew*PNew;假定可執(zhí)行程序文件名字為prog,則運行命令:proghelloworld后的輸出為_____。輸出為:prog#world#argc為3,輸出為:prog#world#argc為3,argv[0],[1],[2]分別為“prog”,“hello”和”world”intmain(intargc,char*argv[]){ printf("%s#%s#",argv[0],argv[argc-1]); return0; }展開宏FB(k+1,k-1)后得到:(k+1*k-1+1)所以該語句為:k=(k+1*k-1+1)-9=-3下列程序段的輸出是___展開宏FB(k+1,k-1)后得到:(k+1*k-1+1)所以該語句為:k=(k+1*k-1+1)-9=-3#defineFB(a,b)(a*b+1)intk=3;k=FB(k+1,k-1)-9;printf("%d",k);a[3][3]的元素排列為:123a[3][3]的元素排列為:123456789*(*a+i)等價于*(a[0]+i)等價于a[0][i]。所以第一個for循環(huán)后,s為1+2+3=6**(a+i)等價于*a[i]等價于a[i][0];所以第二個for循環(huán)后,s為6+1+4+7=18下列程序的輸出為_6#18#____。 #include<stdio.h> main() { ints=0,i,a[3][3]={1,2,3,4,5,6,7,8,9};s+=a[0][i] for(i=0;i<3;i++)s+=a[0][i] s+=*(*a+i); printf("%d#",s);s+=a[i][0] for(i=0;i<3;i++)s+=a[i][0] s+=**(a+i); printf("%d#",s); }f(0)f(1)f(2)f(3)f(4)f(5)112357下列程序的輸出是__5___f(0)f(1)f(2)f(3)f(4)f(5)112357intf(intx){if(x<=1)return1;af(1)j=2af(1)j=2af(2);af(2)j=3af(3);af(3)輸出3#,返回3af(2)j=3輸出3#。返回3af(1)j=3輸出3#。返回3main()k=1af(1);main()j=3輸出3}voidmain(){printf("%d",f(4));}下列程序的輸出是__3#3#3#3___。#include<stdio.h> intmain(void) { intk=1; inta_function(intj); k=a_function(k); printf("%d",k); } inta_function(intj) { if(j<3){ j++; j=a_function(j); } printf("%d#",j); return(j); }下列程序的輸出為__a=1,b=4___。#include<stdio.h>voidmelon(intg,int*h);intmain(void)melon(a,&b)執(zhí)行后,a的值不變melon(a,&b)執(zhí)行后,a的值不變,b的值增加了a+1,即b變?yōu)?。 melon(a,&b); printf("a=%d,b=%d",a,b);}voidmelon(intb,int*c){ b++; *c=*c+b;}下列程序的輸出為_225____。#include<stdio.h>#include<math.h>intprime(intn)Prime(n)判斷n是否為素數(shù),是返回1,否則返回0Prime(n)判斷n是否為素數(shù),是返回1,否則返回0inti,m;if(n==1)return0;m=sqrt(n);for(i=2;i<=m;i++)if(n%i==0)break;returni>m;}voidmain()計算并輸出num所有的素數(shù)因子num計算并輸出num所有的素數(shù)因子num=20,i=2,print2num=10,i=2,print2num=5,i=2跳出whilenum=5,i=3,num=5,i=4,num=5,i=5,print5num=1,i=5,跳出循環(huán)num=20;for(i=2;i<=num;i++){while(prime(i)&&(num%i==0)){ printf("%d",i); num/=i; }}}下列程序的輸出為__1,2___。函數(shù)f里交換指針,但是交換的結果并不能返回給調用者,函數(shù)f里交換指針,但是交換的結果并不能返回給調用者,也就是說,在調用者看來,都是無用功,等于啥也沒做。voidf(int*x,int*y){int*p;p=x;x=y;y=p;}voidmain(){intx=1,y=2;f(&y,&x);printf("%d,%d",x,y);}若輸入thisisatest.<ENTER>,則下列程序的輸出_ThisIsATest.____。#include<stdio.h>#defineTRUE1#defineFALSE0intchange(char*c,intstatus);voidmain(){intflag=TRUE; charch;do{ch=getchar(); flag=change(&ch,flag); putchar(ch);}while(ch!=’.’);printf(“\n”);Status的意義是:是否要求變成大寫字母Status的意義是:是否要求變成大寫字母intchange(char*c,intstatus){碰到空格了,后面的第一個字符要求大寫也就是單詞的第一個字母大寫碰到空格了,后面的第一個字符要求大寫也就是單詞的第一個字母大寫if(status&&*c<=’z’&&*c>=’a’)*c+=’A’-‘a(chǎn)’;returnFALSE;}下列程序的輸出為__5#0#___。#include<stdio.h>intf(intm)執(zhí)行f(4)時,m=4。執(zhí)行后,staticintk變成了k=5,函數(shù)返回5。執(zhí)行f(4)時,m=4。執(zhí)行后,staticintk變成了k=5,函數(shù)返回5。所以main中s=5。再執(zhí)行f(2)時,m=2,k=5,所以f返回0。所以輸出為5#0#staticintk=0;ints=0;for(;k<=m;k++)s++;returns;}voidmain(){ints=1;s=f(4);printf("%d#%d#",s,f(2));}下列程序的輸出為_-1#-1#-2#____。#include<stdio.h>intfun(intx){f(-1),f(0),f(1)f(2)f(3)-10-1-1-2f(-1),f(0),f(1)f(2)f(3)-10-1-1-2if(x<=0)t=x;elset=fun(x-1)+fun(x-2);returnt;}voidmain(){inti;for(i=1;i<=3;i++)printf("%d#",fun(i));}下列程序將會打印出__9#1#___。#include<stdio.h>宏定義展開msadd(a+b,b)宏定義展開msadd(a+b,b)a+b*a+b+b*b=9mssub(a+b,b)a+b*a+b-b*b=1#definemy_square_sub(a,b)(a*a-b*b)intmain(){ inta=1,b=2; printf("%d#",my_square_add(a+b,b)); printf("%d#",my_square_sub(a+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度美縫材料研發(fā)與施工一體化合同
- 2025年度新能源電動汽車充電設施建設與運營合同-@-3
- 2025年度建筑工程材料設備采購補充合同范本
- 農(nóng)墾鋪面轉讓合同范本
- 2025年度新型建筑材料購銷合同范本二零二五年度
- 關于餐飲服務員合同范例
- 中國擠奶機行業(yè)發(fā)展運行現(xiàn)狀及投資策略研究報告
- 豐田買車銷售合同范本
- 做生意合伙合同范本
- 凈化車間竣工合同范本
- 蔬菜采購項目投標書
- 肩周炎康復護理
- 2022年安徽管子文化旅游集團有限公司招聘筆試試題及答案解析
- SAPPM設備管理解決方案
- Q-HN-1-0000.08.004《風力發(fā)電場電能質量監(jiān)督技術標準》
- 多指畸形-課件
- 5G NSA站點開通指導書(臨時IP開站)
- 宗教與社會課件
- 3人-機-環(huán)-管理本質安全化措施課件
- 生殖醫(yī)學中心建設驗收標準分析-講座課件PPT
- DB44∕T 1811-2016 石灰?guī)r山地造林技術規(guī)程
評論
0/150
提交評論