




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章一、選擇題1.B2.D3.B4.C5.A6.C7.D8.C9.A10.C11.B12.B13.C14.B15.D16.B17.B18.B二﹑填空題1.變量2.區分、不同3.退格、換行、橫向跳格、雙引號4.雙精度、長整型、字符、字符串、八進制整型、轉義字符5.main6.順序、選擇、循環三、判斷題1.錯2.對3.對4.錯5.錯6.錯7.錯8.對9.對10.對11.對12.對四、問答題1.寫出下面表達式的值(1)36(2)5,4(3)9,9,272.下列表達式是否正確?若正確,表達式的值是什么?21/221/2.021.0/221%221.0%221%2.018%1515%183%151010.50000010.5000001錯誤錯誤31533.(1)C語言程序是由文件組成(2)每個C程序文件由函數組成(3)C程序從main函數開始執行(4)每個函數由函數說明部分和函數體組成。4.在TC的主菜單中選擇Run菜單,選擇下拉菜單中的Run命令(或直接按“Ctrl-F9”),就開始進行源程序的編譯、連接并運行。如沒有嚴重的語法錯誤,系統自動生成對應的目標文件和可執行文件,并以擴展名.OBJ和.EXE存盤。5.分別為“.C”、“.OBJ”和“.EXE”。6.(1)程序由三種基本結構組合而成結構化程序設計時,不論程序大小、簡單還是復雜,規定程序主要由三種基本結構組成,它們分別是順序結構、選擇結構和循環結構。可以證明,任何一個復雜的問題的程序設計都可以由這三種基本結構組成。而且要求每一個模塊有以下特點:只有一個入們;只有一個出口;程序結構中沒有死循環。(2)模塊化設計較復雜和大型程序應按功能分割成一些功能模塊,并將這些模塊按層次關系進行組織(3)程序設計采用自頂向下、逐步細化的原則8.有“解釋方式”和“編譯方式”兩種五、編程題編寫程序,在屏幕上輸出如下信息:
====================Iamastudent.====================main()
{printf("===================\n");
printf("=Iamastudent.=\n");
printf("===================\n");
}
第2章一、選擇題1.C2.C3.D4.A5.D6.C7.A8.C9.C10.B11.B12.A13.C14.D15.D二﹑填空題1.分號花括號或{}2.換行3.不做任何操作4.%d%c%s5.16.703887.%09.2f%0.2或%4.2f8.是9。-13110.getchar()函數將用戶放入的字符回顯屏幕上,放入結束后,按回車鍵才能響應、getch()函數將用戶放入的字符不回顯屏幕上,放入結束后,不需按回車鍵立即響應三、判斷題1.錯2.對3.對4.對5.對6.對7.錯8.對9.錯10.錯四、問答題3.寫出下列程序的運行結果(1)*2000――*\n(2)X=%d,Y=%d(3)X=100,Y=-1004.程序改錯把\n去掉(2)把3%d改為%f(3)把x,y,z改為%x,%y,%z(4)s=x*y;v=s*c(5)(s=%f””v=%d\n”,s,v)5.a=3,b=5<cr>c=-3,d=12.102<cr>inpute=Af=8<cr>五、編程題1.編寫程序,把560分鐘換算成小時和秒。#include<stdio.h>main(){ints;floath;h=560/60.0;s=560*60;printf("560分鐘換算成小時是:%f,換算成秒是:%d.\n",h,s);}2.鍵盤輸入一個整數的值,求它的平方、平方根,輸出結果時要求有文字提示,并取小數點后二位小數(求平方根函數為sqrt(x),包含在<math.h>中)。#include<math.h>#include<stdio.h>main(){intx,y;floatz;printf("輸入一個整數:");scanf("%d",&x);y=x*x;z=sqrt(x);printf("%d的平方是%d,平方根是%.2f.\n",x,y,z);}3.已知一個圓球的半徑,求該圓球的體積。#include<stdio.h>#definePI3.14main(){floatr,v;printf("輸入圓球的半徑:");scanf("%f",&r);v=PI*r*r*r*4/3;printf("圓球的體積:%f.\n",v);}4.鍵盤輸入若干個學生3門課程的成績,計算每個學生的總分和平均成績。要求利用goto編寫無窮循環程序。#include<stdio.h>main(){floatx1,x2,x3,s,avg;printf("輸入學生3門課程的成績:");scanf("%f,%f,%f",&r1,&x2,&x3);s=x1+x2+x3;avg=s/3;printf("總分:%f,平均成績:%f.\n",s,avg);}5.編程進行攝氏溫度和華氏溫度相互轉換,攝氏溫度和華氏溫度之間的轉換公式如下:攝氏溫度=5/9(華氏溫度-32),即C=(F-32)*5/9。#include<stdio.h>main(){floatf,c;printf("輸入華氏溫度:");scanf("%f",&f);c=(f-32)*5/9;printf("攝氏溫度為:%f.\n",c);}6.從鍵盤輸入直角三角形的斜邊c與一條直角邊a的長,計算并輸出另一條直角邊b的長。#include<stdio.h>#include<math.h>main(){floata,b,c;printf("輸入直角三角形的斜邊c與一條直角邊a的長:");scanf("%f,%f",&c,&a);b=sqrt(c*c-a*a);printf("另一條直角邊b的長:%f.\n",b);}7.編寫程序,輸出下面圖形。*************************#include<stdio.h>main(){printf("*\n");printf("***\n");printf("*****\n");printf("*******\n");printf("*****\n");printf("***\n");printf("*\n");}第3章一、選擇題1.A2.B3.B4.B5.C6.D7.B8.B9.C10.D11.A12.C13.D14.B15.A16.D17B18C19A20D21C22D二﹑填空題1.102.X>2&&X<10X<10||X>203.00114.退出SWITCH語句當所有CASE分條件都不滿足,則執行其后語句5.前面最近的三、判斷題1.錯2.錯3.錯4.對5.錯6.對7.對8.對9.對10.對四、問答題寫出下面邏輯表達式的值真1(2)真1(3)假0(4)(A)真1(B)真1(C)假0(D)真14、閱讀程序,寫出程序運行結果ABother五、編程題1.對一批貨物征收稅金。價格在1萬元以上的貨物征稅5%,在5000元以上,1萬元以下的貨物征稅3%,在1000元以上,5000千元以下的貨物征稅2%,1000元以下的貨物征稅1%。編一個程序,輸入貨物價格,輸出相應的稅金。#include<stdio.h>intmain(void){intn;floatx,y,p;printf("輸入貨物價格:");scanf("%f",&x);if(x>=10000)p=0.05;elseif(x>=5000)p=0.03;elseif(x>=1000)p=0.02;elsep=0.01;y=x*p;printf("應繳稅金:%f:",y);}2.輸入實型變量x和y,若x>y則輸出x-y的值,否則輸出y-x的值。main(){floatx,y,z;printf("輸入兩個數x,y:");scanf("%f,%f",&x,&y);if(x>y)z=x-y;elsez=y-x;printf("結果:%f\n",z);}3.用if和switch語句分別編寫程序,實現從鍵盤輸入數字1、2、3或4中某個數時,輸出excellent、good、pass或fail中的某一個,輸入其他字符時輸出error。#include<stdio.h>intmain(void){intx;printf("輸入1~4整數:");scanf("%d",&x);if(x==1)printf("excellent");elseif(x==2)printf("good");elseif(x==3)printf("pass");elseif(x==4)printf("fail");elseprintf("error");}#include<stdio.h>intmain(void){intx;printf("輸入1~4整數:");scanf("%d",&x);switch(x){csae1:printf("excellent");break;csae2:printf("good");break;csae3:printf("pass");break;csae4:printf("fail");break;default:printf("error");}}4.鍵盤輸入一個字符,如果是字母,則將其ASCII值加5,使其在字母字符“a~z”之間變換并輸出。例如,字母“a”變成“f",字母“z”變成字母“e”;如果是數字,則將其ASCII值減2,使其在數值字符“0~9”之間變換并輸出。例如,字符“9”變成字符“7”,字符“1”變成字符“9”。#include<stdio.h>intmain(void){charc;printf("輸入一字符:");scanf("%c",&c);if(c>='A'&&c<='Z'){c=c+5;if(c>'z')c=c-26;}if(c>='a'&&c<='z'){c=c+5;if(c>'z')c=c-26;}if(c>='0'&&c<='9'){c=c-2;if(c<'0')c=c+10}printf("結果:%c\n",c);}5.己知銀行整存整取存款不同期限的年息利率分別為:1.98%期限一年2.15%期限二年年息利率2.25%期限三年2.45%期限五年2.65%期限八年編寫程序,輸入存錢的本金和期限,求到期時能從銀行得到的利息與本金的合計。#include<stdio.h>#include<math.h>intmain(void){intn;floatx,y,p;printf("輸入存錢的本金和期限:");scanf("%f,%d",&x,&n);switch(n){case1:p=0.0198;break;case2:p=0.0215;break;case3:p=0.0225;break;case5:p=0.0245;break;case8:p=0.0265;break;}y=x*power((1+p),n);printf("到期利息與本金的和:%f:",y);}第4章一、選擇題1.A2.D3.B4.C5.D6.C7.C8.A9.C10.A11.B12.D13.A14.D15.D16.A二﹑填空題1.當型直到型WHILEFORDO_WHILE2.直到先循環后判斷3.當先判斷后循環4.循環賦初值循環控制條件循環變量埴值6.逗號表達式7.不是8.一個循環中又包含一個完整的循環9.每一層循環次數的乘積10.退出當前循環(跳到當前循環結構的后續語句)結束本次循環(跳過本次循環結束前的語句)三、判斷題1.錯2.對3.對4.錯5.對6.對7.錯8.對9.對10.錯11.錯四、寫出下列程序運行結果1.25811142.1371531633.****五、編程題1.編程計算1至50中是7的倍數的數值之和。main(){ints=0,i;for(i=0;i<50;i++);if(i%7==0)s=s+i;printf("1至50中是7的倍數的數值之和是:%d\n",s);}2.從鍵盤輸入的字符中統計數字字符的個數,用換行符結束循環。#include<stdio.h>intmain(void){charc;intn=0;printf("輸入正文文本,按回車結束輸入:\n");while((c=getchar())!=10)if(c>=48&&c<=57)n++;printf("輸入的文本中數字字符的個數:%d\n",n);}3.輸入一批正整數,輸出其中的最大值和最小值,輸入數字“0”結束循環。#include<stdio.h>intmain(void){intx,max,min,i=0;printf("輸入正整數,輸入“0”束輸入:\n");while(1){scanf("%d",&x);if(x==0)break;if(i==0){max=x;min=x;}if(x>max)max=x;if(x<min)min=x;i++;}printf("其中的最大值=%d;最小值=%d\n",max,min);}4.輸入一個整數,將其數值按小于10,10-99,100-999,1000以上分類并顯示。例如:輸入358時,顯示358is100to999。#include<stdio.h>intmain(void){intx,;printf("輸入一個正整數:");scanf("%d",&x);if(x<10)printf("%dis<10\n",x);elseif(x<100)printf("%dis10to99\n",x);elseif(x<1000)printf("%dis100to999\n",x);elseprintf("%dis>=1000\n",x);}5.編程實現屏幕輸出“九九乘法表”,要求以三角形形式輸出。(提示:外循環變量i從1開始到9,內循環變量j從1開始到i)。#include<stdio.h>intmain(void){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%1d*%1d=%2d\t",i,j,i*j);printf("\n");}}6.求3到M之間的全部素數,M為任意整數。main(){intm,i;scanf("%d",&m);for(i=3;i<=m;i++);for(j=2;i%j&&j<i;j++);if(j==i)printf("%d",i);}7.用公式e=1+1/1!+1/2!+1/3!+……+1/n!求e的近似值,精度為1/n!<10-6。main(){inti=1;floatp,t,e;t=1,e=0;p=1;while(t>=1e-6){e=e+t;p=p*i;i++;t=1/p;}printf("e=%10.6f\n",e);}8.從鍵盤輸入一位整數,當輸入數字0葉程序結束;當輸入1~7時,顯示下面對應的英文星期名稱縮寫。1:MON2:TUE3:WED4:THU5:FRI6:SAT7:SUN#include<stdio.h>intmain(void){intx,max,min,i=0;printf("輸入1~7整數,輸入“0”束:\n");while(1){scanf("%d",&x);if(x==0)break;switch(x){csae1:printf("MON");break;csae2:printf("THU");break;csae3:printf("WED");break;csae4:printf("THU");break;csae5:printf("FRI");break;csae6:printf("SAT");break;csae7:printf("SUN");break;}}}第5章一、選擇題1.C2.B3.D4.C5C6.D7.D8.C9.D10.C11.C12.C13.C14.D15.B16.C17.A18.A19.B20.C二﹑填空題1.相同數據類型數據行順序行順序2.數據名3.行列4.隨機值05.‘|0’6.97.字符和字符串8.要STRING.H9.前地址三、判斷題1.錯2.錯3.對4.對5.對6.對7.錯8.對9.對10.錯四、問答題1.什么是數組,為什么要引入數組?數組是一種自定義數據類型,它是相同數據類型的數據有序集合,數組中的分量稱為數組元素,對數組元素的操作處理通過數組下標進行。正是因為數組元素具有序號這個特性,就可以解決許多基本數據類型無法解決的一些實際問題。2.數組的初始化有哪幾種方式?1)定義數組時如果沒有進行初始化,則數組元素的值為隨機值。但如果在定義數組時規定其存儲類別為static或extern,則編譯系統自動將沒有初始化的數組元素賦默認初值為0。2)在定義數組時對所有數組元素初始化。3)可以只對數組中的部分元素初始化。3.a[3],a[2+3],a[9-9],a[3/1.0],a[3.4]4.1791755.i=10+k;i>=j;i--a[i+1]=a[i]五、編程題1.用冒泡排序法對輸入的20個數進行降序排序并存入數組中。然后輸入一個數,查找該數是否在數組中存在,若存在,打印出該數在數組中對應的下標值。#defineN20main(){inta[N],i,j,t,x;printf("\n請輸入%d個待排序的數據,每個數據都以回車結束:\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++)/*共進行n-1趟排序*/for(j=N-1;j>i;j--)if(a[j-1]<a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}printf("\n降序排序后數據:\n");for(i=0;i<N;i++)printf("%d,",a[i]);printf("\n輸入要查找的數:");scanf("%d",&x);for(i=0;i<N;i++)if(a[i]==x){printf("\n要查找的數在數組中的下標是:%d\n",i);break;}if(i>=N)printf("\n要查找的數不在數組中\n");}2.求一個3×3矩陣對角線元素之和。#include<stdio.h>main(){intnum[3][3]={{1,2,3},{4,5,6},{7,8,9}};inti,s=0;for(i=O;i<3;i++)s=s+num[i][i];printf("對角線和:%d\n",s);}3.編寫程序,打印楊輝三角形(要求打印10行)。11112113311464115101051……#defineN11main(){inta[N][N]={0,0},i,j;for(i=1;i<N;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<N;i++)for(j=2;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<N;i++){for(j=1;j<=i;j++)printf("%d\t",a[i][j]);printf("\n");}}4.將一個數組中的元素逆序存放,如原來數組的元素是23,59,26,48,14。要求改為:14,48,26,59,23。#defineN5main(){inta[N],i,t;printf("\n請輸入%d個數據,每個數據都以回車結束:\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N/2;i++){t=a[i];a[i]=a[N-i];a[N-i]=t;}printf("逆序存放結果:");for(i=0;i<N;i++)printf("%d\t",&a[i]);printf("\n");}5.輸入一個字符串,統計數字、空格、字母和其它字符各自出現的次數。#include<string.h>main(){chars[100];intn1=0,n2=0,n3=0,n4=0,i;printf("\n請輸入字符串:");scanf("%s",s);for(i=0;i<strlen(s);i++){if(s[i]>='0'&&s[i]<='9')n1++;elseif(s[i]=='')n2++;elseif((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))n3++;elsen4++;}printf("字符串中數字%d,空格%d,字母%d,其它字符%d\n",n1,n2,n3,n4);}6.編一3×5矩陣的轉置程序,利用新的數組存放轉置后的矩陣。#include<stdio.h>main(){intnum[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};inti,j,t;for(i=0;i<3;i++){for(j=0;j<5;j++)printf("%d",num[i][j]);printf("\n");}printf("\n");for(i=0;i<3;i++)/*行、列互換*/for(j=i+1;j<5;j++){t=num[i][j];num[i][j]=num[j][i];num[j][i]=t;}for(i=0;i<3;i++){for(j=0;j<5;j++)printf("%d",num[i][j]);printf("\n");}}7.編寫程序求兩個3×5矩陣相加,相加的結果放到第三個矩陣中。main(){inta[3][5]={{18,5,34,2,3},{17,19,13,14,36},{1,21,6,49,29}};intb[3][5]={{19,7,5,5,0},{10,1,2,4,10},{12,11,5,6,7}};intc[3][5];inti,j,k;for(i=0;i<3;i++)for(j=0;j<5;j++)c[i][j]=a[i][j]*b[i][j];printf("矩陣c元素的值:\n");for(i=0;i<3;i++){for(j=0;j<5;j++)printf("%6d",c[i][j]);printf("\n");}}第六章一、選擇題1.B 2.C 3.C 4.B 5.B6.C 7.A 8.B 9.D 10.B11.D 12.D 13.D 14.A二、填空題1.把實參值轉換類型2.值傳遞3.全局4.voidfun(doubleb[10][20])5.106.–f、fun(10)7.1368.2469.2510.1111.使用尖括號表示在包含文件目錄中去查找,而不在源文件目錄去查找;使用雙引號則表示首先在當前的源文件目錄中查找,若未找到才到包含目錄中去查找12.printf("%d\n",m)三、判斷題1.錯 2.對 3.錯 4.錯 5.錯6.對 7.錯 8.對 9.錯 10.錯11.錯 12.錯四、編程題1.求方程ax2+bx+c=0的根,用三個函數分別求當b2-4ac大于0、等于0和小于0時的根,并輸出結果。從主函數輸入a、b、c的值。#include<stdio.h>#include<math.h>main(){floata,b,c,d;printf(“請輸入方城系數a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);d=b*b-4*a*c;if(d>1e-6)f1(a,b,c);elseif(fabs(d)<1e-6)f2(a,b,c);elsef3(a,b,c);}voidf1(floata,floatb,floatc){floatx1,x2;x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf(“x1=%fx2=%f\n”,x1,x2);}voidf2(floata,floatb,floatc){floatx;x=(-b))/(2*a);printf(“x1=x2=%f\n”,x);}voidf3(floata,floatb,floatc){floatp,q;p=-b/(2*a);q=sqrt(b*b-4*a*c);printf(“x1=%f+%fix2=%f-%fi\n”,p,q,p,q);}2.編寫一個判素數的函數,在主函數中輸入一個整數,輸出是否是素數的信息。#include<stdio.h>intprime(intn){inti,k;k=sqrt(n);for(i=2;i<=k,i++)if(n%i==0)break;if(i>=k+1)return1;elsereturn0;}main(){intn;printf("n=");sacnf("%d",&n);if(prime(n)==1)printf("此數是素數");elseprintf("此數不是素數");}3.用二維數組存儲矩陣,編寫一個函數實現矩陣的轉置(行列互換),在主函數中輸入矩陣,調用函數進行轉置,然后輸出。voidchange(inta[3][],intb[4][]){inti,j;for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];}main(){intx[3][4],y[4][3];inti,j,k;printf("請輸入3*4矩陣數據:");for(i=0;i<3;i++)for(j=0;j<4;j++){scanf("%d",&k);x[i][j]=k;}change(x,y);for(i=0;i<4;i++){for(j=0;j<3;j++)printf("%d\t",y[i][j]);printf("\n");}}4.編寫一函數,求一數組中的最大元素及其下標。在主函數中輸入數組元素。intmax(inta[]){inti,n;n=0;for(i=0;i<10;i++)if(a[n]<a[i])n=i;returnn;}main(){intx[3];inti,m,k;printf("請輸入10個整數:");for(i=0;i<10;i++)scanf("%d",&x[i]);m=max(x,&k);printf("max=%di=%d\n",x[m],m);}5.編寫一函數,模擬字符串strcpy函數實現字符串的復制功能。ntstrcpy(cahrs1[],chars2[]){inti=0;while(s2[i]!='\0'){s1[i]=s2[i];i++;}s1[i]='\0';returni;}6.用遞歸法求2n,遞歸公式如下:2n=12n=1(n=0)2n-1*2(n>0){longf;if(n==0)f=1;elsef=power(n-1)*2;returnf;}main(){intn;longy;printf("請輸入一整數:");scanf("%d",&n);y=power(n);printf("2^%d=%ld",n,y);}7.用遞歸法將一個任意位整數n轉換成字符串。例如,若輸入1234,應輸出字符串“1234”。chars[10];inti=0;str(intn){if(n==0)s[i]='\0';else{str(n/10);s[i]=(n%10)+48;i++;}}main(){intn;printf("請輸入一整數:");scanf("%d",&n);str(n);printf("%s\n",s);}8.試定義一個帶參數的宏SWAP(x,y),對x,y值進行交換,并寫出程序,輸入兩個數作為使用宏時的實參,輸出已交換的兩個值。#defineSWAP(a,b)t=b;b=a;a=tmain(){inta,b,t;printf(“請輸入兩個數a,b:”);scanf(“%d,%d”,&a,&b);SWAP(a,b);printf(“a=%d,b=%d”,a,b);}
第七章習題答案一、選擇題1.C 2.C 3.C 4.B 5.B6.A 7.C 8.C 9.B 10.B11.D 12.A 13.C 14.B二、填空題1.floatx,*px=&x;2.a[0]+i、a[i]3.p=(int*)malloc(n*3);、free(p);4.125.2、26.37.ello8.*(p+7)、int*z10.命令行參數的個數三、判斷題1.錯 2.錯 3.錯 4.錯 5.錯6.錯 7.對 8.對 9.錯 10.錯四、編程題1.定義兩個整型變量a、b,再定義兩個整型指針變量p和q,使指針p和q指向變量a和b,用指針p和q計算a、b的和。main(){inta=10,b=5;int*p,*q;p=&a;q=&b;printf("a+b=%d",*p+*q);}2.用指向數組的指針編寫冒泡法排序程序。3.寫一函數slength用來求出字符串的長度,并用main函數調用此函數。intstrlen(char*s){inti=0;while(s[i]!='\0')i++;returni;}main(){chars[40];printf("請輸入一字符串:");scanf("%s",s);printf("字符串長度=%d\n",strlen(s));}4.編寫一個計算兩個矩陣和的函數,在main函數中輸入兩個矩陣數據,調用此函數,然后輸出結果。要求用指針作為函數參數。voidadd(inta[3][2],intb[3][2],intc[3][2]){inti,j;for(i=0;i<3)for(j=0;j<2;j++)c[i][j]=a[i][j]+b[i][j];}main(){intx[3][2],y[3][2],z[3][2];inta,b;printf("請輸入矩陣1:\n");for(i=0;i<3){scanf("%d,%d",&a,&b);x[i][0]=a;x[i][1]=b;}printf("請輸入矩陣2:\n");for(i=0;i<3){scanf("%d,%d",&a,&b);y[i][0]=a;y[i][1]=b;}add(x,y,z);printf("兩矩陣和:\n");for(i=0;i<3){for(j=0;j<2;j++)printf("%d\t",z[i][j]);printf("\n");}}5.編寫將BASIC賦予*p后逐個取出字符進行縱向顯示BASIC的程序。main(){char*p="BASIC";while(*p!='\0'){printf("%c\n",*p);p++;}}6.設二維數組x[4][5],試用數組指針的方法求每行元素的和。main(){intx[4][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};int*p[4],i,j,s[4]={0,0,0,0};for(i=0;i<4;i++)p[i]=x[i];for(i=0;i<4;i++)for(j=0;j<5,j++)s[i]=s[i]+*(p[i]+j);for(i=0;i<4;i++)printf("%d\n",s[i]);}7.通過用main函數的參數接收命令行參數,編寫兩個數的簡單計算程序。假設程序文件名為math.c,在命令行下輸入“math10*2”,執行結果輸出20。#include<stdlib.h>#include<stdio.h>main(intargc,char*argv[]){doublex,y,z;charc;if(argc<3){printf("命令格式錯誤!使用格式為:add數值1運算符數值2");exit(0);}x=atof(argv[1]);c=argv[2][0];y=atof(argv[3]);switch(c){case'+':z=x+y;break;case'-':z=x-y;break;case'*':z=x*y;break;case'/':z=x/y;break;}printf("%f%c%f=%f\n",x,c,y,z);}
第八章習題答案一、選擇題1.A 2.B 3.A 4.85 5.A6.A 7.D 8.B 9.A10.C 11.D二、填空題1.結構體類變量名.成員2.各成員所需內存數之和、成員中占內存最大所需內存數3.最后一次被賦值的成員4.65.de6.267.28.不需占用連續的存儲單元、插入和刪除結點不需移動結點10.1、7、111.1、0、56三、判斷題1.錯 2.對 3.錯 4.錯 5.錯6.對 7.對 8.對 9.錯 10.錯11.錯 12.對四、編程題1.定義一個表示復數的數據結構,然后編寫兩個負數的加法程序。#include<stdio.h>structxs{floatp,q;};main(){structxsx1,x2,x3;printf("請輸入一個虛數:");scanf("%f%f",&x1.p,&x1.q);printf("請輸入一個虛數:");scanf("%f%f",&x2.p,&x2.q);x3.p=x1.p+x2.p;x3.q=x1.q+x2.q;printf("%f%fi",x3.p,x3.q);}2.定義一個描述日期的結構體,輸入兩個日期計算兩日期之間的天數。structdate{intmonth;intday;intyear;};main(){structdatedate1,date2;intn;printf("日期1(yyyy-mm-dd):");scanf("%d-%d-%d",&date1.year,&date1.month,&date1.day);printf("日期2(yyyy-mm-dd):");scanf("%d-%d-%d",&date2.year,&date2.month,&date2.day);n=(date2.year-date1.year)*365;n=n+(date2.month-date1.month)*30;n=n+(date2.day-date1.day);printf("n=%d\n",n);}說明:為了簡化程序,程序中沒有考慮閏年和月份天數的差異。3.建立一個職工檔案,它包括職工的工作證號、姓名、性別、出生時間、參加工作時間、文化程度、工資等內容,最后輸出:1)職工的平均年齡和平均工資;2)各文化程度職工人數的分布情況。#include<string.h>#include<dos.h>structperson{charbh[11];charxm[10];charxb[3];structdatebirthday,joindate;chardegree[10];floatpay;}per;main(){inti,j,count[]={0,0,0,0},age_avg=0;structdatenow;floatpay_avg=0;chardegree[4][10]={"小學","初中","高中","大學"};getdate(&now);for(i=0;i<10;i++){printf("工作證號:");scanf("%s",per.bh);printf("姓名:");scanf("%s",per.xm);printf("性別:");scanf("%s",.xm);printf("參加工作時間");scanf("%d-%d-%d",&per.joindate.da_year,&per.joindate.da_mon,&per.joindate.da_day);printf("出生時間");scanf("%d-%d-%d",&per.birthday.da_year,&per.birthday.da_mon,&per.birthday.da_day);printf("文化程度:");scanf("%s",per.degree);printf("工資");scanf("%f",&per.pay);pay_avg=pay_avg+per.pay;age_avg=age_avg+age(now,per.birthday);for(j=0;j<4;j++)if(strcmp(per..degree,degree[j])count[j]++;}printf("平均年齡:%d平均工資%f\n",age_avg,pay_avg);for(i=0;i<4;i++)printf("%s:%d\n",degree[i],count[i]);}intage(structdatedate1,structdatedate2){intn;n=date2.da_year-date1.da_year;if(date2.da_mon<date1.da_mon&&(date2.da_mon=date1.da_mon&&date2.da_day<date1.da_day))n=n-1;returnn;}4.使用結構體編寫班級同學通訊錄,包括同學的姓名、家庭住址、聯系電話、郵政編碼。structperson{charxm[10];charaddress[20];chartel[15];charpost[7];}stu[50];intsn=0;voidinput(){printf("姓名:");scanf("%s",stu[sn].xm);printf("家庭住址:");scanf("%s",stu[sn].address);printf("聯系電話:");scanf("%s",stu[sn].tel);printf("郵政編碼:");scanf("%s",stu[sn].post);sn++;}voidview(){inti;for(i=0;i<sn;i++){printf("姓名:%s\n",stu[sn].xm);printf("家庭住址:%s\n",stu[sn].address);printf("聯系電話:%s\n",stu[sn].tel);printf("郵政編碼:%s\n",stu[sn].post);getch();}}main(){charcho;while(1){printf("1.輸入\n");printf("2.瀏覽\n");printf("3.退出\n");printf("請選擇(1-3):");cho=getch();switch(cho){case'1':input();case'2':view();case'3':exit(0);}}}5.編寫一個對候選人得票的統計程序。候選人姓名和得票數定義成結構體。#include<string.h>structeperson{charname[10];intcount;}leader[3]={"Li",0,"Zhang",0,"Wang",0};main(){intI,j;charleader_name[10];for(i=1;i<=10;i++){scanf("%s",leader_name);for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}for(i=0;i<3;i++)printf("%s\t%d\n",leader[i].name,leader[i].count);}6.一個口袋有紅、黃、綠、白、藍五種顏色的球若干,每次從口袋中取出三個球,問得到三種不同顏色球的可能取法,并輸出每種組合的三種顏色名稱(用枚舉類型表示顏色)。main(){enumball{read,yellow,green,white,blue}b1,b2,b3;charcolor[5][7]={"read","yellow","green","white","blue"};intn=0;for(b1=read;b1<=blue;b1++)for(b2=b1+1;b2<=blue;b2++)for(b3=b2+1;b3<=blue;b3++){printf("%s\t%s\t%s\n",color[b1],color[b2],color[b3]);n++;}printf("n=%d",n);}7.在鏈表中查找數據域的值為整數a的結點,并在該結點前插入一個新結點,新結點的值為b,若為空鏈,則建立鏈表,若未找到值為a的結點,則將新結點插在鏈尾。structstudent_node_type{intnum;intscore;structstudent_node_type*next;};structstudent_node_type*head;insert(){intnum;structstudent_node_type*p1,*p2,*q;q=(structstudent_node_type*)malloc(sizeof(structstudent_node_type));printf("請輸入查找的學號:");scanf("%d",&num);printf("請輸入新學生數據:");printf("學號成績\n");scanf("%d%d",&q->num,&q->score);q->xh=xs.xh;q->score=xs.score;p1=head;if(p1==NULL){q->next=NULL;head=q;}else{while(p1!=NULL){if(p1->num==num)break;p2=p1;p1=p1->next;}if(p1!=NULL){q->next=p2->next;p2->next=q;}else{p2->next=q;q->next=NULL;}}}create_link_table(){inti,n;structstudent_node_type*head,*p,*q;printf("請輸入學生記錄數:");scanf("%d",&n);printf("學號成績\n");for(i=0;i<n;i++){p=(structstudent_node_type*)malloc(sizeof(structstudent_node_type));p->next=NULL;if(head==NULL)head=p;if(q==NULL)q=p;else{q->next=p;q=p;}scanf("%d%%d",&p->num,&p->score);}return(head);/*返回頭指針*/}print_link_table(){structstudent_node_type*p;p=head;printf("學號成績\n");while(p!=NULL){printf("%d%7d\n",p->num,p->score);p=p->next;}}main(){create_link_table();insert();print_link_table();}
第九章習題答案一、選擇題1.C 2.C 3.B 4.A 5.D6.D 7.D 8.A 9.C 10.A二、填空題1.ASCII碼、二進制2.鍵盤3.文件結構體數據在內存中的首地址4.文件頭5.文件尾6.07.使fp指向文件中的位置指針指向文件開頭,并清除文件結束標志和錯誤標志8.fseek(fp,25,1)9.110.fopen11.!feof(fp)三、判斷題1.對 2.錯 3.錯 4.錯 5.對6.對 7.錯 8.錯四、編程題1.從鍵盤讀入文本(用$作為輸入結束標志),寫入到out.txt文件中。#include<stdio.h>main(){FILE*fp;charch;if((fp=fopen("out.txt","w"))==NULL){prin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年數字內容創作者考試試卷及答案
- 2025年小學數學期末考試題及答案
- 2025年物業管理與服務行業能力考試卷及答案
- 2025年數據分析與處理技能測試題及答案
- 2025年獸醫學專業核心知識考試題及答案
- 2025年汽車工程技術專業考試題及答案
- 2025年跨文化交際能力評估試卷及答案
- 2025年跨境電商業務管理考試試卷及答案
- 2025年健康管理師考試試卷及答案指導
- 2025年環境工程技術人員考試題及答案
- 香港證券及期貨從業資格考試溫習手冊版HK
- 2025年中考物理知識點歸納(挖空版)
- 2024年安徽省初中學業水平考試生物試題含答案
- 2024年浙江省中考英語試題卷(含答案解析)
- 2024年演出經紀人考試必背1000題及完整答案(各地真題)
- 團員組織關系轉接介紹信(樣表)
- GB/T 18926-2008包裝容器木構件
- 漢語拼音音節表帶聲調
- 假發行業英語術語整理
- 中國銀行營業網點基礎服務禮儀規范
- 一份很詳細的模具報價單
評論
0/150
提交評論