2023年電大計算機科學與技術c語言各章練習題答案_第1頁
2023年電大計算機科學與技術c語言各章練習題答案_第2頁
2023年電大計算機科學與技術c語言各章練習題答案_第3頁
2023年電大計算機科學與技術c語言各章練習題答案_第4頁
2023年電大計算機科學與技術c語言各章練習題答案_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

各章練習題答案C語言概述簡答題答:C語言單詞分為保存字、標記符、字面常量、運算符和分隔符5類。答:首字符必須是英文字母或下劃線;其余位置上的字符必須是英文字母、十進制數(shù)字符號或下劃線。答:它們的首字符不同,此外各自尚有具體的格式規(guī)定。其中,數(shù)值字面常量以數(shù)字、正負號或小數(shù)點(如.01表達0.01)開頭,字符字面常量必須用單引號括起來,字符串字面常量必須用雙引號括起來,標記符首字符必須是英文字母或下劃線。答:分類如下。數(shù)值常量3個:25-8+3.42字符常量3個:'4''D''+'字符串7個:"x1""-28""y=m+1""a12.c""else""+""intx;"標記符7個:x2ncountmainHlistxyMaxA_1保存字3個:intvoidif運算符1個:+分隔符0個:非法數(shù)據(jù)1個:3ab以上共計25個。答:C語句除空語句外,按照語句功能,可分為以下8類:類型定義語句、變量定義語句、函數(shù)原型語句、表達式語句、復合語句、選擇語句、循環(huán)語句和跳轉語句。在以上8類語句中,前3類屬于說明性語句,后5類屬于執(zhí)行性語句。答:其格式為:#include<頭文獻>或#include“頭文獻"。對于每條預解決包含命令,在預解決階段將把該命令置換為所指定“頭文獻”中的所有內容,換句話說,是用該“頭文獻”保存的所有內容代替該預解決包含命令行。對于上述給出的兩種包含命令格式,系統(tǒng)解決時的查找頭文獻的途徑有所不同。對于第一種格式(即尖括號格式),將從C語言系統(tǒng)層次目錄中查找頭文獻,若查找不到則給犯錯誤信息;對于第二種格式(即雙引號格式),假如頭文獻名沒有給出磁盤號和途徑名,則一方面從當前工作目錄(即包含該命令的程序文獻所屬的目錄)中查找頭文獻,若查找不到,再接著從C語言系統(tǒng)層次目錄中查找頭文獻,若還是查找不到則給犯錯誤信息。在第二種格式中,假如頭文獻名帶有磁盤號和途徑名,則只在該指定途徑中查找頭文獻,若查找不到則給犯錯誤信息。(關于第二種格式中頭文獻名帶有磁盤號和途徑名的情況,教材的敘述是錯誤的)答:第一步需要上機建立相應的工作區(qū)和項目并建立、輸入和編輯該程序中的相應文獻,通常一方面建立主文獻;第二步對每個程序文獻進行編譯生成各自的目的代碼文獻,通常主文獻被一方面編譯并生成目的文獻;第三步使主目的文獻與同一程序中的其他目的代碼文獻以及有關C語言系統(tǒng)庫函數(shù)文獻相連接,生成一個可執(zhí)行文獻;第四步運營最后生成的可執(zhí)行文獻。選擇題1.B 2.C 3.A 4.D 5.A 6.B 7.D?8.C上機實驗題程序代碼:#include<stdio.h>voidmain(){?intx,y; x=5;y=6;?printf("x+y=%d,",x+y);?printf("x*y=%d\n",x*y);}運營結果:x+y=11,x*y=30程序代碼:#include<stdio.h>intcube(int);voidmain(){ printf("cube(3)=%d\n",cube(3)); printf("cube(5)=%d\n",cube(5)); printf("cube(8)=%d\n",cube(8));}intcube(intx){returnx*x*x;}運營結果:cube(3)=27cube(5)=125cube(8)=512程序代碼:A.主程序文獻代碼:#include<stdio.h>#include"abc.cpp"voidmain(){ doublea,b,c; doubleaverageValue; a=2;b=3;c=4;?averageValue=AVE(a,b,c); printf("averageValue:%lf\n",averageValue);?averageValue=AVE(a+1,b+2,c+5);?printf("averageValue:%Lf\n",averageValue);}B.abc.cpp文獻代碼:(新建時選擇“File|New|C++SourceFile”。注意去掉“Addtoproject…:”前面的勾,以后新建其他程序文獻或頭文獻時還要勾上)doubleAVE(doublex,doubley,doublez){?return(x+y+z)/3;}運營結果:averageValue:3.000000averageValue:5.666667程序代碼:A.主程序文獻代碼:#include<stdio.h>#include"example.h"voidmain(){ inta,b,c; printf("請輸入任意三個整數(shù):"); scanf("%d%d%d",&a,&b,&c); printf("求和:%d\n",Sum(a,b,c));?printf("乘積:%d\n",Product(a,b,c));}B.example.h頭文獻代碼:(新建時選擇“File|New|C/C++HeaderFile”。注意勾上“Addtoproject…:”前面的勾)intSum(int,int,int);intProduct(int,int,int);C.另一個程序文獻的代碼:(新建時選擇“File|New|C++SourceFile”。注意勾上“Addtoproject…:”前面的勾)intSum(inta,intb,intc){?returna+b+c;}intProduct(inta,intb,intc){ returna*b*c;}運營結果隨輸入不同而不同,請自行記錄

基本數(shù)據(jù)類型與表達式2.1選擇題1.D?2.A?3.B 4.B?5.D 6.C 7.C?8.A 9.C 10.D11.B 12.C 13.A2.2把下列數(shù)學算式或不等式表達成C表達式1.2.0*x*(1+x*x/3.0)2.(1+exp(x))/(1-exp(x))3.(-b+sqrt(b*b-4.0*a*c))/2/a4.1/(3.0*x*log(2.0*x+k))5.pow(sin(x+3.14159/4),3)/(3+pow(cos(x-3.14159/4),3))6.pow(1+exp(x+1),n)/77.0<=x&&x<=208.(a*x-b*y)!=c9.(4*x+7*y-2)==3*a*b10.(3.0*x+2)!=0&&fabs((2.0*x*x+1)/(3.0*x+2))<=5/*(3.0*x+2)先判斷避免去0*/11.a(chǎn)ge>=55||pay>=82012.!strcmp(place,"江蘇")&&!strcmp(sex,"女")/*strcmp函數(shù)詳見教材第127頁*/13.('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z')14.s[2]=='0'&&(s[1]=='x'||s[1]=='X')/*s[1]、s[2]為數(shù)組元素,詳見第4章*/2.3求出下列邏輯表達式的相反式1.!x2.x!=03.x<104.p==NULL||x==465.x<=0||x>=106.ch!='d'&&ch!='D'7.!p||p->data==x/*p->data是對結構成員的間接訪問,詳見教材第193頁7.3*/8.i>=n&&a[i]%3?。?/*a[i]為數(shù)組元素,詳見第4章*/2.4根據(jù)下列題目規(guī)定編寫出相應程序1.(題目中僅規(guī)定兩邊之和大于等于第三邊是不對的。兩邊之和等于第三邊只能連成直線(根據(jù)公式計算面積也為0),不能組成三角形。邊長也不應為負數(shù)。故應規(guī)定兩邊之和大于第三邊,且任一邊長大于0。但是目前沒有學習第3章的if語句,程序自身無法控制在碰到不能構成三角形的情況時如何解決,需要用戶輸入時自行掌握。)#include<stdio.h>#include<math.h>voidmain(){?doublea,b,c,s;?printf("請輸入三角形三條邊長:"); scanf("%lf%lf%lf",&a,&b,&c); s=(a+b+c)/2; printf("該三角形面積為:%lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}2.(每年都是上一年的110%,即1.1倍,5年后則將是1.1的5次方。其實只有5次方,為什么一定要用pow(1.1,5)呢^_^?1.1*1.1*1.1*1.1*1.1效率多高!但是要注意人數(shù)是沒有零頭的,所以要ceil()一下。之所以用ceil()而不是floor()是為了保證完畢任務,一個都不能少,呵呵。本題這樣算出來的是4832人。但是更嚴格的做法就是要每年都ceil()一下,否則中間某個年份招生人數(shù)就有零頭了,本題這樣算出來的是4836人。只是那樣的話就成了:ceil(ceil(ceil(ceil(ceil(3000*1.1)*1.1)*1.1)*1.1)*1.1)暈吧,哈哈。要想不暈,得學好第3章的循環(huán)語句。)#include<stdio.h>#include<math.h>voidmain(){ printf("5年后計劃招生%lf人。\n",ceil(3000*pow(1.1,5)));}3.(算術平均值:求和之后除以n,幾何平均值:乘積的n次方根(即1.0/n次方)。為了防止數(shù)值過大溢出(超過整數(shù)類型的范圍),所以對第一個數(shù)就使用了強制類型轉換為double。此外本題計算乘積的4次方根,規(guī)定輸入的四個整數(shù)假如全都不為0,則應有0、2或4個為正,否則乘積為負,無實數(shù)4次方根。)#include<stdio.h>#include<math.h>voidmain(){?inta,b,c,d;?printf("請輸入4個整數(shù):"); scanf("%d%d%d%d",&a,&b,&c,&d);?printf("算術平均值:%lf,幾何平均值:%lf。\n",??((double)a+b+c+d)/4, ?pow((double)a*b*c*d,1.0/4));}4.(唯一規(guī)定:a和b不能是相反數(shù),即a不等于-b。拜托,拜托!)#include<stdio.h>#include<mat(yī)h.h>voidmain(){?doublea,b; printf("請輸入a和b的值:"); scanf("%lf%lf",&a,&b); printf("x=%lf,y=%lf\n",? 2*a*sin(a)/3/(a+b),? 2*b*cos(b)/3/(a+b));}上機實驗題1.#include<stdio.h>#include<stdlib.h>#include<time.h>constintN=10;voidmain(){?inti,x,y,z,c=0; srand(time(0)); for(i=1;i<=N;i++){??x=rand()%90+10;//[0+10,89+10]? y=rand()%90+10;//[0+10,89+10]? printf("%d+%d=",x,y);? scanf("%d",&z); if(x+y==z)c++;//本題回答對的?} printf("最后得分:%d\n",c*10);}2.(與教材不同,使用了'\t'。這是制表符,相稱于按Tab鍵排版。由于使用了'\t',所以%10.2lf也省略為%.2lf,即不限定寬度,只限定小數(shù)位數(shù)為2位。注意教材上第一個printf語句中,"cos"誤為"con"了。請嘗試將while改為for、do~while。)#include<stdio.h>#include<math.h>constdoubleRAD=3.14159/180;voidmain(){?inti=0;?printf("\ti\tsin\tcos\n"); while(i<=90){ printf("\t%d\t%.2lf\t%.2lf\n",i,sin(i*RAD),cos(i*RAD));? i+=5;?}}3.(正整數(shù)范圍大約21億多,故輸入的數(shù)以9位或以下(小于10億)為宜,牢記牢記!)#include<stdio.h>voidmain(){?intnum,rem; printf("輸入一個整數(shù):"); scanf("%d",&num);?do{? rem=num%10;//得到個位的值? /*去掉個位,這樣下次的個位就是現(xiàn)在的十位。??每次如此,即可逐次得到從個位到最高位的各位*/ ?num/=10; //輸出現(xiàn)在的個位。由于從個位開始逐位輸出,所以順序反過來了 printf("%d",rem);??/*循環(huán)必須用do~while,這樣當num為0時也會循環(huán)一次,輸出一個0。 開始不為0時,當去掉最高位后num自然也就是0了,結束循環(huán)*/?}while(num>0);??printf("\n");}4.(呵呵,for語句與教材的不同。其中表達式1可以省略,這不奇怪;每次循環(huán)ch++和d1++都執(zhí)行一次,所以表達式2只需要判斷ch<='F',這也不奇怪。兩條printf合成一句,大多數(shù)同學也會。但是ch++和d1++怎么和printf合并成表達式3?因素在于由于是后綴++,所以給printf()的值事實上都是d1和ch,值給了printf()之后才增長1,所以++事實上仍然是在printf()輸出之后做的。)#include<stdio.h>voidmain(){ charch='A',d1='a';?for(;? ch<='F'; ?printf("%c:%d,%c:%d\n",ch++,ch,d1++,d1));}5.(比教材多了一點換行,程序排版好看點。注意有整數(shù)除法,所以y不能為0,并且輸入除法答案的時候要舍去小數(shù)部分??!)#include<stdio.h>voidmain(){ intx,y,z,c=0; printf("輸入兩個整數(shù):"); scanf("%d%d",&x,&y); printf("%d+%d=",x,y);scanf("%d",&z);if(x+y==z)c++; printf("%d-%d=",x,y);scanf("%d",&z);if(x-y==z)c++; printf("%d*%d=",x,y);scanf("%d",&z);if(x*y==z)c++; printf("%d/%d=",x,y);scanf("%d",&z);if(x/y==z)c++; printf("%d%%%d=",x,y);scanf("%d",&z);if(x%y==z)c++; printf("\n共5道題,答對%d道題\n",c);}?流程控制語句3.1選擇題1.A 2.B?3.C?4.D 5*.C?6.B?7.C?8.B 9.A?10.D(問題一:第5小題。一般而言,循環(huán)體每次執(zhí)行完之后都會執(zhí)行<表達式3>,然后再計算<表達式2>,判斷是否中止循環(huán),即使在循環(huán)體中碰到continue也不會跳過<表達式3>的執(zhí)行。但是,假如在循環(huán)體中執(zhí)行break則會立即終止循環(huán),也就是說<表達式3>會被跳過,在這種情況下,循環(huán)體就被多執(zhí)行了一次。)3.2寫出下列程序運營結果并上機驗證1.(第一個if改用條件表達式,注意最后一個printf之前的一行,每執(zhí)行一個賦值語句,相關變量的值就被改變了,變量的新值參與下一個賦值語句中的運算,所以執(zhí)行了a+=b;b+=a;之后,b和a的值不等。)#include<stdio.h>voidmain(){?inta=2,b=5,c;?c=(a+b>10)?(a*b):(3*a+2*b);?if(c>=20)printf("%d",c*c); elseif(a>b)printf("%d",3*(a+b)); elseprintf("%d",4*c-5); printf("\n"); a+=b;b+=a;c+=a+b; printf("a=%d,b=%d,c=%d\n",a,b,c);}2.(注意三處:x+=2、switch(x-1)、除了case10之后有break,別的沒有break。)#include<stdio.h>voidmain(){ intx; for(x=5;x<12;x+=2){//x:57911??switch(x-1){ ?case4:printf("%d\n",x);//x:5? case7:printf("%d\n",2*x+1);//x:5? case10:printf("%d\n",3*x-1);break;//x:511 default:printf("default\n");//x:79? }?}}3.(規(guī)定輸入的數(shù)在第96頁)#include<stdio.h>voidmain(){?ints0,s1,s2,x; s0=s1=s2=0; printf("從鍵盤輸入一組整數(shù)(以-1結束):\n");?scanf("%d",&x);?while(x!=-1){//-1結束 ?switch(x%3){??case0:s0+=x;break;//能被3整除的數(shù)之和??case1:s1+=x;break;//除以3余1的數(shù)之和 ?case2:s2+=x;break;//除以3余2的數(shù)之和? } scanf("%d",&x);?}?printf("s0=%d,s1=%d,s2=%d\n",s0,s1,s2);}4.(學會數(shù)數(shù),呵呵。)#include<stdio.h>voidmain(){ intc1=0,c2=0,c3=0; inti,j,k;?for(i=0;i<5;i++){ for(j=i;j<5;j++)c1++;//循環(huán)5+4+3+2+1=15次? for(k=5;k>=i;k--)c2++;//循環(huán)6+5+4+3+2=20次 c3++;//5次?} printf("%d%d%d\n",c1,c2,c3);}5.#include<stdio.h>constintB=2;voidmain(){?inti=0,p=1,s=1;?while(s<100){//s>=100循環(huán)才結束??i++;p*=B;s+=p;??//循環(huán)次數(shù)??i p?s??//1 ??1?2?3 ?//2????2?4?7??//3? ??3 8?15 ?//4 ? 4 16?31??//5 ? ?5 32 63 ?//6?? ?6 64 127?} printf("i=%d\n",i); printf("s=%d\n",s);}6.(對正整數(shù)10~16分解質因數(shù)。)#include<stdio.h>voidmain(){ inti; for(i=10;i<=16;i++){? intj=2,k=i;//j從最小的質數(shù)2開始??printf("%d:",i);? do{? /*在下面的循環(huán)中,假如k能被j整除,則j必為k的質因數(shù)。由于j是從最小的質數(shù)2開始逐個增長的,只要可以整除k的j都會完全被while循環(huán)分解(k/=j),所以當j增長到合數(shù)j'時,j'的各個質因數(shù)(均小于j')都已經(jīng)被分解完畢,故而此時的k已經(jīng)不能被j'整除了。j必為k的質因數(shù)。合數(shù)就是可以被1和自身之外的數(shù)整除的數(shù),即:j'=p1*p2*p3*…*pn,其中pi為質數(shù),且pi<j',i=1,2,3,…,n,n>1。*/???while(k%j==0){printf("%d",j);k/=j;}?? j++;? }while(k>=j);??printf("\n"); }}7.(不要光靠數(shù)數(shù)啊,呵呵。)#include<stdio.h>constintT=6;voidmain(){ inti,j,k=0; for(i=1;i<=T;i+=2)//i:135??for(j=2;j<=T;j++)//j:23456 if(i+j==T)printf("+");//(i,j):(1,5)(3,3)?? elseif(i*j==T)printf("*");//(i,j):(1,6)(3,2) ? elsek++;//共循環(huán)3*5=15次,上面兩種情況4次,這里11次 printf("\nk=%d\n",k);}8.(對照第6小題。這里的while循環(huán)和第6小題的while很像吧?不錯,這里的i和第6小題的j類似,是用來尋找質因數(shù)的。只是由于while的條件表達式不同,尋找的是x和y兩者的公共質因數(shù)i。p將所有的公共質因數(shù)i乘起來,得到的是兩者的最大公約數(shù)。最小公倍數(shù)本應當是兩數(shù)乘積除以最大公約數(shù),但是由于在while循環(huán)中x和y已經(jīng)各自除以所有的公共質因數(shù),也就是說x和y各自都已經(jīng)除以一次最大公約數(shù)了,總共除了兩次,所以最后反而要乘回來一次。因此printf中的附加參數(shù)是p*x*y。)#include<stdio.h>voidmain(){?intx,y;?inti=2,p=1; printf("請輸入兩個正整數(shù)x和y:"); scanf("%d%d",&x,&y);?do{??while(x%i==0&&y%i==0){???p*=i;? x/=i; ??y/=i; }? i++;?}while(x>=i&&y>=i); printf("x和y的最小公倍數(shù)為%d\n",p*x*y);}3.3指出下列程序功能并上機驗證1.(程序功能:計算數(shù)學公式,其中n從鍵盤輸入,規(guī)定n>=2。本程序用到了函數(shù)定義的知識。)#include<stdio.h>doublef1(intn){//函數(shù)f1:規(guī)定一個整型參數(shù),計算結果(返回值)為實數(shù) inti;?doublesign=1,s=1; for(i=2;i<=n;i++){//從2開始累加至n ?s+=sign/(i*i);//sign含義見下。s每次加上(-1)i/i2 ?sign*=-1;//sign每次都乘以-1,初值為1=(-1)2,故sign=(-1)i?}?returns;//返回計算結果s}voidmain(){?inta; printf("輸入一個大于等于2的整數(shù):");?doscanf("%d",&a);while(a<=1);//輸入的數(shù)a不大于等于2則要重新輸入 printf("%lf\n",f1(a));//調用f1(a)計算,并將計算結果輸出}2.(與第2章上機實驗題第3小題功能相同,請參照閱讀。注意48是'0'的ASCII碼,由于'0'~'9'在ASCII碼表中連續(xù)排列,所以數(shù)字0~9加上48就成為相應的數(shù)字字符。)#include<stdio.h>voidmain(){?intx;?printf("輸入一個整數(shù):");?scanf("%d",&x); while(x){ ?intk=x%10;? printf("%c",k+48); x=x/10;?}?printf("\n");}3.(答案很簡樸!看到最后兩行printf就行了,呵呵。考試考這題多好?。『瘮?shù)f2求兩數(shù)的最小公倍數(shù),與本章練習題3.2的第8小題的算法同樣。函數(shù)f1求兩數(shù)的最大公約數(shù),雖然f2中求最小公倍數(shù)的同時也得到了最大公約數(shù)p,但f1的效率高得多。f1采用的算法稱為輾轉相除法,又稱歐幾里得算法,具體描述見教材第82頁對程序3-12的說明。輾轉相除法的證明:設a整除以b的余數(shù)為r,即a=q*b+r,其中q為整數(shù)。將a和b的最大公約數(shù)寫作gcd(a,b),b和r的最大公約數(shù)則為gcd(b,r)。由于r=a-q*b,而a、b均能被gcd(a,b)整除,所以r顯然也能被gcd(a,b)整除。既然b和r都能被gcd(a,b)整除,則gcd(a,b)是b和r的公約數(shù),所以gcd(a,b)不也許大于b和r的最大公約數(shù)gcd(b,r)。反過來,由于b和r均能被gcd(b,r)整除,而a=q*b+r,所以a也能被gcd(b,r)整除。既然a和b都能被gcd(b,r)整除,則gcd(b,r)是a和b的公約數(shù),從而不也許大于a和b的最大公約數(shù)gcd(a,b)。繞了半天,我們得到gcd(a,b)<=gcd(b,r)并且gcd(b,r)<=gcd(a,b),那么就只能有:gcd(a,b)=gcd(b,r)。即,a和b的最大公約數(shù)必然也是它們的余數(shù)和它們的最大公約數(shù)。這樣,可以進行輾轉相除,迅速將參與運算的兩個數(shù)變小,不久得到結果。)#include<stdio.h>intf1(inta,intb){ intr;?while(b!=0){? r=a%b; a=b;b=r;?} //此時有b=0。由于循環(huán)結束前進行了a=b;b=r;的賦值,所以實際是最后一次求得的?//余數(shù)r=0,也就是最后一次循環(huán)時(執(zhí)行a=b;b=r;前)有a=n*b,其中n為整數(shù)。?//這時的a和b的最大公約數(shù)自然是b,也就是執(zhí)行了a=b;后的a是最大公約數(shù)。 returna;}intf2(inta,intb){ inti=2,p=1; do{ ?while(a%i==0&&b%i==0){? p*=i;a/=i;b/=i;??}??i++;?}while(a>=i&&b>=i);?returnp*a*b;}voidmain(){?inta,b; printf("輸入兩個正整數(shù):"); doscanf("%d%d",&a,&b);while(a<=0||b<=0);?printf("%d和%d的最大公約數(shù):%d\n",a,b,f1(a,b)); printf("%d和%d的最小公倍數(shù):%d\n",a,b,f2(a,b));}4.(教材錯誤:ff函數(shù)中的scanf語句應在switch語句之前。程序功能:出10道20以內整數(shù)加減乘除運算題,記錄用戶得分。每做對一題得10分。)#include<stdio.h>#include<stdlib.h>#include<time.h>constintN=10;intff(intx,inty,charop);voidmain(){?inti,a,b,c=0,d;?charop;?srand(time(0)); for(i=0;i<N;i++){? a=rand()%20+1; b=rand()%20+1;??d=rand()%4;? if(d==0)op='+'; elseif(d==1)op='-'; elseif(d==2)op='*'; ?elseop='/';??if(ff(a,b,op))c++; }?printf("得分:%d\n",c*10);}intff(intx,inty,charop){?intz; printf("%d%c%d=",x,op,y); scanf("%d",&z);//判斷對op指定的運算,用戶給出的答案是否對的。返回判斷結果(邏輯值)?switch(op){?case'+':returnx+y==z;//都return了,就不用break了?case'-':returnx-y==z; case'*':returnx*y==z; case'/':returnx/y==z;?//盡管本程序可以不要default,但ff也許用于別處,op也許會被指定錯誤的值?//檢查非法參數(shù)取值,這是好習慣。但是簡樸地exit在大程序中是不好的解決?default:{printf("運算符錯!\n");exit(1);} }}3.4根據(jù)下列題目規(guī)定編寫程序并上機得到運營結果1.(不要用pow函數(shù)啊,同志!整數(shù)的整數(shù)次方,還是這個好。假如只求一兩個高次冪,則有更高效的辦法而不要象下面那樣逐次乘上去。此外高次冪要小心溢出整數(shù)范圍。后記:糗事一件,居然開始的時候習慣性地把p*=3寫成p*=i了,最終結果就成了1。哈哈,我還納悶,這個程序怎么會錯呢?)#include<stdio.h>voidmain(){ inti,p=1,sum=0;?for(i=0;i<=10;i++){? sum+=p;??p*=3;?}?printf("%d\n",sum);}2.(見注釋。)#include<stdio.h>voidmain(){?inti,sum;?for(i=0,sum=0;sum<1000;){? i+=2; sum+=i*i; }?//循環(huán)結束時,sum已經(jīng)大于等于1000,即多加了一項//所以最大的n應是前一項,即i-2?printf("%d\n",i-2);}3.(注意printf里x<=0為假時的求值表達式。對于多項式計算,反復用高項系數(shù)乘以自變量加低項系數(shù),可以極大地減少乘法次數(shù)。即,對于多項式,可以寫成:((...((an*x+an-1)*x+an-2)*x...+a2)*x+a1)*x+a0假如按本來的多項式計算,不作任何優(yōu)化,則需要n+(n-1)+...+2+1=(n+1)n/2次乘法;而改造后只需要n次乘法。當n較大時兩者的差異是明顯的。)#include<stdio.h>#include<math.h>constdoublea=1.0;voidmain(){?doublex; printf("請輸入一個實數(shù)x:"); scanf("%lf",&x); printf("y=%lf\n",??(x<=0)????sqrt(a*a+x*x) :((3*a*a*x+4)*a*x-1) );}4.(一般教材當然認為這種題目應當用雙重循環(huán),對a、b的所有也許取值情況所有判斷一下不定方程是否成立。對于復雜一點的方程也許不得不如此,但是這兒用那種辦法顯然笨死了!對每個a的取值,計算相應的b,然后看b是否符合條件這不就夠了嗎?記住由于求b用了整數(shù)除法,所以得到的b只是真正的解的整數(shù)部分。所以在判斷b是否在15~36之間的同時還要檢查b是不是真的是原方程的解。由于本方程很簡樸,所以直接重新計算一下就行了。此外,假如用b作為循環(huán)變量,只需要從15循環(huán)到36,循環(huán)22次,比用a更快。)#include<stdio.h>#include<math.h>voidmain(){?inta; for(a=6;a<=30;a++){??intb=(126-2*a)/5;//復合語句開頭也可以定義變量??if(15<=b&&b<=36&&(2*a+5*b)==126)? printf("(%d,%d)",a,b); }?printf("\n");}?數(shù)組和字符串4.1選擇題1.B?2.C?3.B?4.D 5.A 6.C?7.A?8.D 9.B?10.D4.2寫出下列程序運營結果并上機驗證1.(i1:a中奇數(shù)個數(shù);i2:a中偶數(shù)個數(shù)。此題即形考冊作業(yè)2第三大題第1小題。)#include<stdio.h>voidmain(){?inta[10]={12,39,26,41,55,63,72,40,83,95}; inti,i1=0,i2=0; for(i=0;i<10;i++) ?(a[i]%2)?i1++:i2++;?printf("%d%d\n",i1,i2);}2.(將a中元素逆序后輸出。)#include<stdio.h>#defineN8voidmain(){ inta[N]={36,25,48,14,55,40,32,66};?inti,x;?for(i=0;i<N/2;i++){//逆序? x=a[i];a[i]=a[N-1-i];a[N-1-i]=x; } for(i=0;i<N;i++)printf("%d",a[i]);//輸出 printf("\n");}3.(記錄數(shù)組a中所有元素有多少個小于b中各元素(且不小于b中該元素之前的各元素),并輸出。此程序粗看非常無聊,實則在生活中可以找出很多實例:例如買鞋子——a是一堆人,他們的腳有大有??;b是鞋子尺碼,只有幾種,并且從小到大排列。鞋子當然不能買小了,應當稍大一點,但是又不能太大。那么,對于a中所有的人,b中各種尺碼的鞋子應當買多少雙呢?用這個程序就可以記錄出來,結果是分別應當購買c[i]雙尺碼為b[i]的鞋子。)#include<stdio.h>#defineN10#defineM4voidmain(){ inta[N]={76,83,54,62,40,75,90,92,77,84}; intb[M]={60,76,90,101}; intc[M]={0};?inti,j; for(i=0;i<N;i++){ ?j=0; ?while(a[i]>=b[j])j++; c[j]++;?} for(i=0;i<M;i++)printf("%d",c[i]);?printf("\n");}4.(在二維數(shù)組a中找最大元素,輸出其值和下標。此題功能與形考冊作業(yè)2第三大題第5小題的相同,只是a中數(shù)據(jù)不同。)#include<stdio.h>voidmain(){ inta[3][4]={{1,2,7,8},{5,6,11,12},{9,10,3,4}};?intx=a[0][0];?intii=0,jj=0;?inti,j; for(i=0;i<3;i++) ?for(j=0;j<4;j++)?? if(a[i][j]>x){x=a[i][j];ii=i;jj=j;}?printf("a[%d,%d]=%d\n",ii,jj,a[ii][jj]);}5.(通過比較找出最大字符串,將其存到s1中;同時找出最小字符串,將其存到s2中。第二個if前加else可提高一點效率,由于假如a[i]已經(jīng)比s1大了,自然就不也許比s2小,只需要在a[i]不大于s1時才有必要和s2比較。此題功能與形考冊作業(yè)2第三大題第2小題的相同,但本題采用數(shù)組,需要反復調用strcpy復制字符串,效率較低。)#include<stdio.h>#include<string.h>voidmain(){ chara[5][10]={"student","worker","soldier","peasant","cadre"};?chars1[10],s2[10];?inti;?strcpy(s1,a[0]);strcpy(s2,a[0]);?for(i=1;i<5;i++){??if(strcmp(a[i],s1)>0)strcpy(s1,a[i]); elseif(strcmp(a[i],s2)<0)strcpy(s2,a[i]);?} printf("%s%s\n",s1,s2);}4.3指出下列函數(shù)功能并上機調試和驗證(本題需要一點函數(shù)的知識。數(shù)組作為函數(shù)參數(shù)聲明時不需要指定第一維大小)1.(將一維整型數(shù)組a的前n個元素中大于等于60的數(shù)換到小于60的數(shù)后面保存。)voidf1(inta[],intn){?inti=0,j=n-1,x; do{ while(a[i]<60)i++;//找到第一個大于等于60的數(shù) while(a[j]>=60)j--;//找到最后一個小于60的數(shù)? //假如大于等于60的數(shù)在前面則換到后面去 ?if(i<j){x=a[i];a[i]=a[j];a[j]=x;i++;j--;} }while(i<j);//循環(huán),直到大于等于60的數(shù)所有在小于60的數(shù)之后}2.(輸出雙精度數(shù)數(shù)組a的前n個元素中不小于平均值的元素,然后回車。此題與形考冊作業(yè)3第四大題第6小題類似,但本函數(shù)并未記錄和返回符合條件的元素個數(shù),而是輸出它們。)voidf2(doublea[],intn){ inti;doublesum=0;?for(i=0;i<n;i++)sum+=a[i];?sum/=n;?for(i=0;i<n;i++) ?if(a[i]>=sum)printf("%2.0lf",a[i]); printf("\n");}3.(記錄并輸出一維字符數(shù)組a中逗號、分號、左右圓括號、左右方括號、左右花括號的個數(shù)并輸出。函數(shù)最后一句多了個%)voidf3(chara[]){ inti,c[5]={0}; for(i=0;a[i];i++)??switch(a[i]){ case',':c[0]++;break; case';':c[1]++;break; ?case'(': case')':c[2]++;break;??case'[': ?case']':c[3]++;break; case'{':? case'}':c[4]++;break; } for(i=0;i<5;i++)printf("%d",c[i]);?printf("\n");}4.(用選擇排序法按照字符串長度進行升序排序。本函數(shù)中反復調用strlen求字符串長度,要花費較多時間,可考慮用一個整型數(shù)組保存字符串長度以減少對strlen的調用。)voidf4(chara[][N],unsignedintm){?unsignedinti,j,k,w;?for(i=1;i<m;i++){ ?charx[N];??w=i-1;k=strlen(a[i-1]); ?for(j=i;j<m;j++)? if(strlen(a[j])<k){k=strlen(a[j]);w=j;}??strcpy(x,a[i-1]);strcpy(a[i-1],a[w]);strcpy(a[w],x);?}}4.4根據(jù)下列題目規(guī)定編寫程序并上機調試和運營1.(又是斐波納契數(shù)列!由于要逆序顯示,所以要在算出最后一項后再開始顯示,可以用數(shù)組先保存計算結果。當然,也可以使用第6章學到的遞歸函數(shù)。)#include<stdio.h>voidmain(){ intfibonacci[20]={0,1},i; for(i=2;i<sizeof(fibonacci)/sizeof(fibonacci[0]);i++)? fibonacci[i]=fibonacci[i-1]+fibonacci[i-2];?for(i=sizeof(fibonacci)/sizeof(fibonacci[0]);i--;) printf("%d",fibonacci[i]);?printf("\n");}2.(長度不超過50個字符,大小就最多為51。)#include<stdio.h>voidmain(){?charline[51];?inti,count[10]={0}; printf("請輸入一行字符串(不超過50個字符):\n"); gets(line);//允許空格 for(i=0;line[i];i++){ intdigit=line[i]-'0';??if(digit>=0&&digit<=9)//是十進制數(shù)字字符???count[digit]++;?} for(i=0;i<10;i++)??printf("%d",count[i]); printf("\n");}3.(無語??慈尾欢?再次無語??词尾欢窟€是先看看第3章吧。)#include<stdio.h>voidmain(){?inta[][4]={ {3,0,4,5},? ?{6,2,1,7}, ????{4,1,5,8}};?intb[][4]={ {1,4,0,3},?? ? {2,5,1,6},?? ??{0,7,4,4},? ? {9,3,6,0}}; //乘積矩陣行數(shù)等于第一個矩陣的行數(shù),列數(shù)等于第二個矩陣的列數(shù) intc[sizeof(a)/sizeof(a[0])][sizeof(b[0])/sizeof(b[0][0])]; inti,j,k; for(i=0;i<sizeof(a)/sizeof(a[0]);i++)? for(j=0;j<sizeof(b[0])/sizeof(b[0][0]);j++)? for(c[i][j]=0,k=0;k<sizeof(b)/sizeof(b[0]);k++) ???c[i][j]+=a[i][k]*b[k][j];?for(i=0;i<sizeof(a)/sizeof(a[0]);i++,printf("\n"))? for(j=0;j<sizeof(b[0])/sizeof(b[0][0]);j++) ?printf("%10d",c[i][j]);}4.(此題題意不明:什么叫做“每個同學的總成績和平均值”?“每個同學的總成績”應當是指對于每個學生將其各門課程成績累加起來的數(shù)值??墒恰捌骄怠蹦??是指每一個同學的總成績按課程門數(shù)M平均,還是所有同學的總成績加起來按學生人數(shù)N平均?此外此程序中scanf的第一個參數(shù)里%d前面必須有空格,后面不能有空格,否則仿佛會有問題。想念C++里的cin>>,多么方便?。?include<stdio.h>#defineN3#defineM2voidmain(){ inta[N][M]; inti,j,sum;?for(i=0;i<N;i++){? printf("請輸入第%d位同學所有%d門功課的成績:",i+1,M); ?for(j=0;j<M;j++)?? scanf("%d",a[i]+j); } printf("\n");?for(sum=0,i=0;i<N;i++){? intsumi=0;//該生總成績? for(j=0;j<M;j++)? ?sumi+=a[i][j];??printf("第%d位同學%d門課程總成績%d分,平均%5.2lf分\n",i+1,M,sumi,(double)sumi/M); ?sum+=sumi;//各生成績匯總?}?printf("\n所有同學平均總成績%5.2lf分\n",(float)sum/N);}

指針5.1選擇題1.B?2.A?3.C 4.C 5.D 6.A 7.B 8.C 9.B?10.D11.A?12.C?13.B?14.D 15.B(15用到了C++中的new進行動態(tài)分派,newint表達動態(tài)分派一個int變量)5.2寫出下列程序運營結果并上機驗證1.(記錄并輸出數(shù)組a中2、3、5的倍數(shù)各有多少。注意三個if語句之間不能用else連起來,必須各自分開獨立成句。由于一個數(shù)也許同時是2、3、5中一個或多個數(shù)的倍數(shù),需要分別判斷。)#include<stdio.h>voidmain(){ inta[8]={25,18,36,42,17,54,30,63}; int*p=a;?intc2,c3,c5;? c2=c3=c5=0;?while(p<a+8){ ?if(*p%2==0)c2++; if(*p%3==0)c3++;??if(*p%5==0)c5++; ?p++;?} printf("%d%d%d\n",c2,c3,c5);}2.(輸出數(shù)組中第6~3項的值、它們的和以及平均值。)#include<stdio.h>voidmain(){?inta[8]={46,38,72,55,24,63,50,37};?ints=0;?int*p=a+2; while(p<a+6)s+=*p++; while(--p>=a+2)printf("%5d",*p); printf("\n");?printf("%5d%5.1lf\n",s,s/4.0);}3.(按照字典順序查找最大字符串并輸出。其間每當找到一個更大的字符串a[i]時,都會輸出a[0]~a[i-1]中最大的字符串。)#include<stdio.h>#include<string.h>voidmain(){?char*a[5]={"computer","telephone","typewriter","television","fridge"}; char*p=a[0];?inti; for(i=1;i<5;i++)??if(strcmp(a[i],p)==1){printf("%s",p);p=a[i];} printf("\n%s\n",p);}4.(無語。)#include<stdio.h>voidmain(){?intx=20,y=40,*p;?p=&x;?printf("%d",*p); *p=x+10;?p=&y; printf("%d\n",*p);?*p=y+20; printf("%d%d\n",x,y);}5.(計算i2+1,i=0,1,2,...,8。并逆序輸出其中不小于25的值。)#include<stdio.h>#include<stdlib.h>#defineNN8voidmain(){?inti,*p; int*x=malloc(sizeof(int)); int*a=calloc(NN,sizeof(int)); *x=25; for(i=0;i<NN;i++)a[i]=i*i+1;//1251017263750 p=a+NN-1;?do{? if(*p>=*x)printf("%d",*p--); ?elsebreak; }while(1);?printf("\n"); free(x);?free(a);}5.3指出下列函數(shù)功能并上機調試和驗證1.(隨機生成和輸出m個0~99的整數(shù),計算其總和和平均值并輸出。其中m由用戶輸入。)#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain(){?inti,m,*a,s=0; srand(time(0)); printf("從鍵盤上輸入一個整型數(shù)組的長度:");?scanf("%d",&m); a=calloc(m,sizeof(int)); for(i=0;i<m;i++){ ?a[i]=rand()%100;? s+=a[i];? printf("%d",a[i]);?}?printf("\n總和:%d;平均值:%5.2lf\n",s,s*1.0/m);}2.(又是不可思議的事情!我在已有的工程項目中,把本來的程序文獻內容所有刪除,然后輸入下面的代碼,居然報錯,說宏N為重定義(macroredefinition,也就是說VC編譯時認為在下面的#define之前已經(jīng)在某處定義了宏N),刪掉那一行居然就沒警告了,通過實驗,發(fā)現(xiàn)此時N的值為10。盡管不知道確切的因素,但是我試著選擇了Build菜單下的Clean菜單項,將所有編譯、鏈接生成的文獻所有清除,然后重新編譯鏈接,果然就沒問題了,特記于此,如有類似情況不妨試一下Clean。此外,可看看下面程序中關于calloc的注釋。)#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN30voidmain(){ inti,m;?charx[N];?char(*a)[N]; printf("從鍵盤上輸入待解決字符串的個數(shù):");?scanf("%d",&m); //盡管結果同樣,但是從calloc參數(shù)的含義來講,應當寫成calloc(m,sizeof(a[0])) a=calloc(m*N,sizeof(char)); printf("從鍵盤上輸入%d個字符串:\n",m); for(i=0;i<m;i++)scanf("%s",a[i]);//不支持包含空格 printf("從鍵盤上輸入待查找的一個子串:");?scanf("%s",x); for(i=0;i<m;i++) ?if(strstr(a[i],x)!=NULL)printf("%s\n",a[i]);}函數(shù)6.1選擇題1.B?2.A 3.D 4.C?5.A 6.B?7.D一、顯然第2小題選項和題干對不上。題干中的intw[][N]應改為charw[][N]二、第6小題中提到了“末尾遞歸”,這是遞歸的特例:只在函數(shù)返回前的最后一步進行遞歸調用。末尾遞歸又稱“尾遞歸”。假如遞歸函數(shù)中只存在尾遞歸,則一般來說可以比較容易地改成循環(huán)程序,在兩次循環(huán)之間修改各變量(遞歸函數(shù)形參)的值即可。由于遞歸函數(shù)效率較低,所以只要能改成循環(huán)等非遞歸方式實現(xiàn)而不會使程序變得更難懂的,都應當避免使用遞歸方式實現(xiàn)。6.2寫出下列程序運營結果并上機驗證1.(同名覆蓋。注意同名變量b。)#include<stdio.h>intc=15;voidmain(){?inta=10,b=20; printf("%d%d%d\n",a,b,c); {? intb=a+15;??a=b/3;c=2*(a+b);??printf("%d%d%d\n",a,b,c);?} printf("%d%d%d\n",a,b,c);}2.(實參與形參的關系:實虛結合、按值傳遞。)#include<stdio.h>intf1(intx,inty){?x=x+y;y=x+y;?printf("x=%3d,y=%3d\n",x,y);?returnx+y;}voidmain(){ intx=5,y=8;?intz=f1(x,y);?printf("x=%3d,y=%3d,",x,y); printf("z=%3d\n",z);}3.(指針形參(含數(shù)組形參)的用途:高效傳遞大量數(shù)據(jù)(如下例中函數(shù)f2的形參a)、通過指針訪問甚至修改其指向的對象數(shù)據(jù)(如下例中函數(shù)f2的形參s)。)#include<stdio.h>voidf2(inta[],intn,int*s);voidmain(){?inta[5]={2,7,5,4,9};?intx; f2(a,5,&x); printf("%d\n",x);}voidf2(inta[],intn,int*s){ inti; *s=0;?for(i=0;i<n;i++)*s+=a[i];}4.(返回值類型為指針的指針函數(shù)。注意不能返回自動局部變量的地址,由于返回后就超過其作用域和生存期,從而使返回的地址無效。寄存器變量本就沒有地址可言,自然不存在返回其地址的問題。)#include<stdio.h>#include<stdlib.h>#include<string.h>char*f3(constchar*x,constchar*y);voidmain(){?char*a="apple"; charb[10]="pear"; char*p;?p=f3(a,b);?printf("%s\n",p); free(p);}char*f3(constchar*x,constchar*y){?char*p=malloc(strlen(x)+strlen(y)+2); strcpy(p,x); strcat(p,"");?strcat(p,y);?returnp;}5.(二維數(shù)組參數(shù)。)#include<stdio.h>intf4(inta[][4],intm,intn){?inti,j,max=a[0][0]; for(i=0;i<m;i++)? for(j=0;j<n;j++) if(a[i][j]>max)max=a[i][j];?returnmax;}voidmain(){?inta[3][4]={???{25,38,46,72},?? {35,20,50,66},?? {18,74,38,69}?};?intx=f4(a,3,4); printf("x=%d\n",x);}6.3指出下列函數(shù)功能并上機調試和驗證1.(計算并返回)intfun1(intn){ inti,p=1,s=0; for(i=1;i<=n;i++){??p*=i;s+=p; } returns;}2.(插入排序法升序排序。類似形考冊作業(yè)3第三大題第5小題,只是此處為升序排序,那兒是降序排序。)voidfun2(int*a,intn){?inti,j,x; for(i=1;i<n;i++){ ?x=a[i]; ?for(j=i-1;j>=0;j--) if(x<a[j])a[j+1]=a[j];//將x<a[j]改為x>a[j]則為降序排序? elsebreak; a[j+1]=x;?}}3.(將字符串b的內容復制到字符指針a所指向的存儲空間中并返回。)char*fun3(char*a,constchar*b){?while(*b)*a++=*b++; *a=0; returna;}4.(本題與形考冊作業(yè)3第四大題第4小題雖然寫法有著微小的差別,但功能完全相同,都是把練習題3.2第8小題中求最小公倍數(shù)的算法改寫為遞歸形式。比起非遞歸形式,顯然難讀了很多,效率也低了。調用本函數(shù)求a和b的最小公倍數(shù)時,形參k的實參應當固定給2,即應當調用:Multiple(a,b,2)。為了保證對的調用,不妨將本函數(shù)聲明為static,限制其他程序員在其程序文獻中調用,而在本函數(shù)的程序文獻中此外定義一個全局函數(shù)供其他程序員使用。如下:intLeastCommonMultiple(inta,intb){returnMultiple(a,b,2);})intMultiple(inta,intb,intk){ if(a>=k&&b>=k){? if(a%k==0&&b%k==0)returnk*Multiple(a/k,b/k,k); ?elsereturnMultiple(a,b,k+1); }?elsereturna*b;}5.(問題一:第一次調用時返回與x的十進制形式各位數(shù)字順序相反的數(shù)。即,假如x為123,則函數(shù)最終返回321。以后的各次調用,最終返回結果與之前的調用有關,不能擬定。第一次調用時,x不斷地在遞歸過程中去掉低位(Contrary(x/10)),而這被去掉的低位則加到了y的后面(y=y*10+x%10),下次遞歸時x的較高一位也會被再次加到y(tǒng)后面,也就是說較高位會排到低位的后面,從而把x的各位數(shù)字順序反了過來。由于y為靜態(tài)變量,所以第二次調用開始時,y不為0。x的新實參值各位將加在y本來的值之后,假如y或者x較大還也許由于超過無符號整型數(shù)的范圍而產(chǎn)生溢出,因此結果值難以預計。問題二:y及返回值類型與參數(shù)類型不一致,更容易導致溢出。應統(tǒng)一為unsignedint。綜上,應修改如下:unsignedintContrary(unsignedintx){ staticunsignedinty=0;?if(x){? y=y*10+x%10; returnContrary(x/10); }else{? unsignedinttemp=y(tǒng);? y=0; returntemp; }}最后,這顯然又是一個末尾遞歸,可以改成非遞歸形式如下:unsignedintContrary(unsignedintx){ unsignedinty=0;?while(x){ y=y(tǒng)*10+x%10;??x/=10; }?returny;})intContrary(unsignedintx){?staticinty=0;?if(x){??y=y*10+x%10;? Contrary(x/10); } returny;}6.4根據(jù)下列題目規(guī)定編寫程序并上機調試和運營1.intfun1(inta[],intn){ if(n==0)return0; returna[n-1]*a[n-1]+fun1(a,n-1);}2.(參見4.2第1小題及形考冊作業(yè)2第三大題第1小題。)voidfun2(inta[],intn,int*c1,int*c2){?for(*c1=*c2=0;n--;)??(a[n]%2)?(*c1)++:(*c2)++;//(*c1)和(*c2)括號不能省略!}3.(參見3.3第3小題函數(shù)f1。)intfun5(intm,intn){?intr;?while(n!=0){? r=m%n; ?m=n;n=r; }?returnm;}?結構與聯(lián)合7.1選擇題1.C 2.D?3.A 4.A 5.B?6.D?7.C?8.B 9.A?10.C本大題有如下問題:一、第1小題使用了C++語法:在C++中則可直接使用結構名。而在C語言中,結構名除非使用typedef定義為類型別名了,否則必須在其前面加關鍵字struct,形考冊作業(yè)4第一大題第1小題正是考核此點。所以本題中結構定義應改為:structA{inta,b;structA*c;};二、第3小題D*前應當有struct,因素同上。此外,不知道為什么,在VC98中采用默認設立,通過實際編譯的結果是聯(lián)合成員b和c的地址偏移為8,也就是說在成員a之后有4個字節(jié)空閑沒用。所以實際的結構大小為24。但是估計此處對的答案應當是20三、第5小題中“類型為Worker”也應改為“類型為structWorker”四、第10小題涉及鏈表的插入操作。p->next=f執(zhí)行后,則可以看作形成了以p為表頭指針的鏈表,其表頭為p所指向的結點,之后是通過指針域鏈接的本來的鏈表。所以要將新的表頭指針p賦值給f,使f指向新的表頭結點。7.2寫出下列程序運營結果并上機驗證1.#include<stdio.h>structAAA{?inta[10];?intn;};structAAAx;voidmain(void){?inti; intb[6]={20,35,46,18,24,52}; x.n=6; for(i=0;i<x.n;i++)x.a[i]=b[i];//將b拷貝到x.a開頭?x.a[x.n]=37;x.n++;//增長一個數(shù) for(i=0;i<x.n;i++)printf("%d",x.a[i]);//輸出?printf("\n");}2.#include<stdio.h>#include<stdlib.h>#include<string.h>structCCC{ char*a; intn;};voidm

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論