C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程-習(xí)題答案_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程-習(xí)題答案_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程-習(xí)題答案_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程-習(xí)題答案_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程-習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

習(xí)題答案第1章填空題應(yīng)用程序ONEFUNC.C中只有一個(gè)函數(shù),這個(gè)函數(shù)的名稱是__main。一個(gè)函數(shù)由__函數(shù)頭__和__函數(shù)體__兩部分組成。在C語(yǔ)言中,輸入操作是由庫(kù)函數(shù)__scanf完成的,輸出操作是由庫(kù)函數(shù)_printf_完成的。通過(guò)文字編輯建立的源程序文件的擴(kuò)展名是_.c__;編譯后生成目標(biāo)程序文件,擴(kuò)展名是__.obj__;連接后生成可執(zhí)行程序文件,擴(kuò)展名是_.exe_;運(yùn)行得到結(jié)果。C語(yǔ)言程序的基本單位或者模塊是__函數(shù)__。C語(yǔ)言程序的語(yǔ)句結(jié)束符是_;___。編寫(xiě)一個(gè)C程序,上機(jī)運(yùn)行要經(jīng)過(guò)的步驟:______________________________。在一個(gè)C語(yǔ)言源程序中,注釋部分兩側(cè)的分界符分別為_(kāi)/*__和__*/__。C語(yǔ)言中的標(biāo)識(shí)符只能由三種字符組成,它們是字母、數(shù)字和下劃線。且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言中的標(biāo)識(shí)符可分為關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶標(biāo)識(shí)符3類。選擇題一個(gè)C程序的執(zhí)行是從(A)。A)本程序的main函數(shù)開(kāi)始,到main函數(shù)結(jié)束B(niǎo))本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束C)本程序的main函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束D)本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序main函數(shù)結(jié)束以下敘述不正確的是(C)。A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成B)一個(gè)C源程序必須包含一個(gè)main函數(shù)C)在C程序中,注釋說(shuō)明只能位于一條語(yǔ)句的后面D)C程序的基本組成單位是函數(shù)C語(yǔ)言規(guī)定:在一個(gè)源程序中,main函數(shù)的位置(C)。A)必須在程序的開(kāi)頭 B)必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)的后面C)可以在程序的任意位置 D)必須在程序的最后C編譯程序是(A)。A)將C源程序編譯成目標(biāo)程序的程序B)一組機(jī)器語(yǔ)言指令C)將C源程序編譯成應(yīng)用軟件D)C程序的機(jī)器語(yǔ)言版本要把高級(jí)語(yǔ)言編寫(xiě)的源程序轉(zhuǎn)換為目標(biāo)程序,需要使用(D)。A)編輯程序 B)驅(qū)動(dòng)程序 C)診斷程序 D)編譯程序以下敘述中正確的是(C)。A)C語(yǔ)言比其他語(yǔ)言高級(jí)B)C語(yǔ)言可以不用編譯就能被計(jì)算機(jī)識(shí)別執(zhí)行C)C語(yǔ)言以接近英語(yǔ)國(guó)家的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言作為語(yǔ)言的表達(dá)形式D)C語(yǔ)言出現(xiàn)的最晚,具有其他語(yǔ)言的一切優(yōu)點(diǎn)以下敘述中正確的是(A)。A)C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方B)花括號(hào)“{”和“}”只能作為函數(shù)體的定界符C)構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名D)分號(hào)是C語(yǔ)句之間的分隔符,不是語(yǔ)句的一部分以下敘述中正確的是(B)。A)C語(yǔ)言的源程序不必通過(guò)編譯就可以直接運(yùn)行B)C語(yǔ)言中的每條可執(zhí)行語(yǔ)句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令C)C源程序經(jīng)編譯形成的二進(jìn)制代碼可以直接運(yùn)行D)C語(yǔ)言中的函數(shù)不可以單獨(dú)進(jìn)行編譯用C語(yǔ)言編寫(xiě)的代碼程序(B)。A)可立即執(zhí)行 B)是一個(gè)源程序C)經(jīng)過(guò)編譯即可執(zhí)行 D)經(jīng)過(guò)編譯解釋才能執(zhí)行以下敘述中正確的是(C)。A)在C語(yǔ)言中,main函數(shù)必須位于程序的最前面B)C語(yǔ)言的每行中只能寫(xiě)一條語(yǔ)句C)C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句D)在對(duì)一個(gè)C程序進(jìn)行編譯的過(guò)程中,可以發(fā)現(xiàn)注釋中的拼寫(xiě)錯(cuò)誤下列4組選項(xiàng)中,均不是C語(yǔ)言關(guān)鍵字的選項(xiàng)是(A)。A)defineB)getcC)includeD)whileIFcharscanfgotypeprintfcasepow下列4組選項(xiàng)中,均是C語(yǔ)言關(guān)鍵字的選項(xiàng)是(B)。A)autoB)switchC)signedD)ifenumtypedefunionstructincludecontinuescanftypeC語(yǔ)言中的標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符(C)。A)必須為字母B)必須為下劃線C)必須為字母或下劃線D)可以是字母、數(shù)字和下劃線中任一種字符編程題參照本章例題,編寫(xiě)一個(gè)C程序,要求輸出如下字符。***************************************************************************WelcometoExpo2010!Shanghai2010#include<stdio.h>voidmain(){ printf(“***************************************************************************\n”); printf(“WelcometoExpo2010!\n”);printf(“Shanghai2010\n”);printf(“***************************************************************************\n”);}設(shè)計(jì)一程序,輸入3個(gè)整數(shù),計(jì)算并顯示輸出這3個(gè)整數(shù)之和。#include<stdio.h>voidmain(){ inta,b,c; printf(“inputa,b,c:\n”); scanf(“%d%d%d”,%a,%b,%c);printf(“thesumofa,b,cis%5d\n”,a+b+c);}第2章2.1填空題C程序中數(shù)據(jù)有常量和變量之分,其中,用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的,稱為符號(hào)常量。C語(yǔ)言規(guī)定在程序中對(duì)用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型,對(duì)變量必須做到先定義,后使用。C語(yǔ)言中,用關(guān)鍵字float定義單精度實(shí)型變量,用關(guān)鍵字double定義雙精度實(shí)型變量,用關(guān)鍵字char定義字符型變量。在C語(yǔ)言中,以16位PC機(jī)為例,一個(gè)char型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為1;一個(gè)int型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為2,則int型數(shù)據(jù)的取值范圍為-32768~32767。一個(gè)float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個(gè)double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為8。單精度型實(shí)數(shù)的有效位是6-7位,雙精度型實(shí)數(shù)的有效位是15-16位。設(shè)C語(yǔ)言中的一個(gè)基本整型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),若欲將整數(shù)135791正確無(wú)誤地存放在變量a中,應(yīng)采用的類型說(shuō)明語(yǔ)句是longinta=15791;。C的字符常量是用單引號(hào)括起來(lái)的1個(gè)字符,而字符串常量是用雙引號(hào)括起來(lái)的字符序列。C語(yǔ)言中,用“\”開(kāi)頭的字符序列稱為轉(zhuǎn)義符。轉(zhuǎn)義符“\n”的功能是回車(chē)換行;轉(zhuǎn)義符“\r”的功能是回車(chē)。若有定義:charc=‘\010’;則變量c中包含的字符個(gè)數(shù)為1負(fù)數(shù)在計(jì)算機(jī)中是以補(bǔ)碼形式表示。C語(yǔ)言中,&作為雙目運(yùn)算符是表示的是按位與,而作為單目運(yùn)算符時(shí)表示的是取地址。在C語(yǔ)言的賦值表達(dá)式中,賦值號(hào)左邊必須是變量。自增運(yùn)算符++、自減運(yùn)算符--,只能用于變量,不能用于常量或表達(dá)式。++和--的結(jié)合方向是“自右左至左”。若a是int型變量,則執(zhí)行下面表達(dá)式后a的值為2。 a=25/3%3寫(xiě)出下列數(shù)所對(duì)應(yīng)的其它進(jìn)制數(shù)(D對(duì)應(yīng)十進(jìn)制,B對(duì)應(yīng)二進(jìn)制,o對(duì)應(yīng)八進(jìn)制,H對(duì)應(yīng)十六進(jìn)制)32D=100000B=40O=20H75D=1001011B=113O=4BH假設(shè)已指定i為整型變量,f為float變量,d為double型變量,e為long型變量,有式子10+'a'+i*f-d/e,則結(jié)果為double型。若有定義:intx=3,y=2;floata=2.5,b=3.5;則下面表達(dá)式的值為1。 (x+y)%2+(int)a/(int)b5/3的值為1,5.0/3的值為1.666667。若有以下定義,intm=5,y=2;則執(zhí)行表達(dá)式y(tǒng)+=y-=m*=y后的y值是-16。若a是int型變量,則表達(dá)式(a=4*5,a+2),a+6的值為26。若x和n均為int型變量,且x的初值為12,n的初值為5,則執(zhí)行表達(dá)式x%=(n%=2)后x的值為:0。若有定義語(yǔ)句:inte=1,f=4,g=2;floatm=10.5,n=4.0,k;,則執(zhí)行表達(dá)式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是13.7。2.2選擇題逗號(hào)表達(dá)式"(a=3*5,a*4),a+15"的值是(C)。A)15B)60C)30D)不確定若有以下定義和語(yǔ)句:charc1='a',c2='f';printf("%d,%c\n",c2-c1,c2-'a'+'B');

則輸出結(jié)果是:(D)A)2,MB)5,!C)2,ED)5,Gsizeof(float)是(B)。A)一個(gè)雙精度型表達(dá)式 B)一個(gè)整型表達(dá)式C)一種函數(shù)調(diào)用 D)一個(gè)不合法的表達(dá)式若有以下定義,則能使值為3的表達(dá)式是(D)。intk=7,x=12;A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)在C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是(A)。A)% B)/ C)< D)!下面4個(gè)選項(xiàng)中,均是合法整型常量的選項(xiàng)是(A)。A)160B)-0xcdfC)-01D)-0x48a-0xffff01a986,0122e50110xe06680x下面4個(gè)選項(xiàng)中,均是不合法浮點(diǎn)數(shù)的選項(xiàng)是(B)。A)160.B)123C)-.18D)0.122e4.2123e4.234E3.e50.01e3下面正確的字符常量是(C)。A)”C”B)”\\”C)’W’D)’’在C語(yǔ)言中,int、char和short三種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)(D)。A)由用戶自己定義B)均為2個(gè)字節(jié)C)是任意的D)由所用機(jī)器的機(jī)器字長(zhǎng)決定假設(shè)所有變量均為整型,則表達(dá)式(a=2,b=5,b++,a+b)后x的值為(B)。A)7 B)8 C)6 D)2假設(shè)所有變量均為整型,則表達(dá)式x=(i=4,j=16,k=32)后x的值為(C)。A)4 B)16 C)32 D)52若有代數(shù)式,則正確的C語(yǔ)言表達(dá)式是(D)。A)fabs(x*3+log(x)) B)fabs(pow(x,3)+log(x))C)abs(pow(x,3.0)+log(x)) D)fabs(pow(x,3.0)+log(x))設(shè)變量n為float類型,m為int類型,則以下能實(shí)現(xiàn)將n中的數(shù)值保留小數(shù)點(diǎn)后兩位,第三位進(jìn)行四舍五入運(yùn)算的表達(dá)式是(B)。A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0以下不正確的敘述是(D)。A)在C語(yǔ)言中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低B)在C語(yǔ)言中,APH和aph是兩個(gè)不同的變量C)若a和b類型相同,在執(zhí)行了賦值表達(dá)式a=b后b中的值將放入a中,而b中的值不變D)當(dāng)從鍵盤(pán)輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量只能輸入實(shí)型數(shù)值以下正確的敘述是(D)。A)在C語(yǔ)言中,每行中只能寫(xiě)一條語(yǔ)句B)若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)C)在C程序中,無(wú)論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無(wú)誤地表示D)在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符2.3編程題編寫(xiě)一程序,求出給定半徑r的圓的面積和周長(zhǎng),并輸出計(jì)算結(jié)果。其中,r的值由用戶輸入,用實(shí)型數(shù)據(jù)處理。#include<stdio.h>#definePI3.14159voidmain(){floatr,c,s;printf("inputthe半徑");scanf("%f",&r);c=2*PI*r;s=PI*r*r;printf("周長(zhǎng)為%5.2f,面積為%5.2f\n",c,s);}已知華氏溫度和攝氏溫度之間的轉(zhuǎn)換關(guān)系是:C=5/9*(F-32)。編寫(xiě)一程序,將用戶輸入的華氏溫度轉(zhuǎn)換為攝氏溫度,并輸出結(jié)果。#include<stdio.h>voidmain(){floatc,f;printf("inputthe華氏溫度");scanf("%f",&f);c=5.0/9*(f-32);printf("華氏溫度為%5.2f,攝氏溫度為%5.2f\n",f,c);}習(xí)題三填空題程序的三種基本結(jié)構(gòu)是順序、選擇、循環(huán)。執(zhí)行(a=3.0+5,a*4),a+=-6;變量a及表達(dá)式的值分別為2.0,2.0下列語(yǔ)句被執(zhí)行后的執(zhí)行結(jié)果是1\abc\def。inta=1;printf(“%d\\%s\\%s”,a,”abc”,”def”);getchar()函數(shù)的作用是從鍵盤(pán)上接收一個(gè)字符。運(yùn)行以下程序后,用戶輸入123456abc,輸出結(jié)果為123,45,6。voidmain(){inta,b;charc;scanf("%3d%2d%3c",&a,&b,&c); printf("%d,%d,%c",a,b,c);}下面程序的輸出結(jié)果是1112。#include<stdio.h>voidmain(){inti=10;{/*inti=20;*/i++;printf(“%d”,i++);}printf(“%d\n”,i);}下面程序運(yùn)行后,從鍵盤(pán)輸入30,則程序的輸出結(jié)果是a=31,Ha=1f,Oa=37。voidmain(){inta;scanf(”%d”,&a);a++;printf(“a=%d,Ha=%x,Oa=%o”,a,a,a);}下面程序的輸出結(jié)果是a=-3b=’D’“END”。voidmain(){inta,b=68;a=-3;printf(“\ta=%d\n\tb=\’%c\’\n\”end\”\n”,a,b);}下面程序的輸出結(jié)果是13.7000000。#include<stdio.h>#include<math.h>main(){inta=1,b=4,c=2;floatx=10.5,y=4.0,z;z=(a+b)/c+sqrt((double)y)*1.2/c+x;printf(“%f\n”,z);}下面程序運(yùn)行后,若輸入a=2,b=3結(jié)果是x1=6.00x2=0.67。voidmain(){floata,b,x1,x2;scanf(“a=%f,b=%f“,&a,&b);x1=a*b;x2=a/b;printf(“x1=%5.2f\nx2=%5.2f\n”,x1,x2);}選擇題指出下面正確的輸入語(yǔ)句是(B)。A)scanf(“a=b=%d”,&a,&b);B)scanf(“a=%d,b=%f”,&m,&f);C)scanf(“%3c”,c);D)scanf(“%5.2f”,&f);執(zhí)行scanf(“%d%c%f”,&a,&b,&c)語(yǔ)句,若輸入1234a12f56則變量a,b,c的值為(C)A)a=1234b=’a’c=12.56B)a=1b=’2’c=341256C)a=1234b=’a’c=12.0D)a=1234b=’a12’c=56.0執(zhí)行scanf(“a=%d,b=%d”,&a,&b)語(yǔ)句,若要使變量a和b的值分別為3和4,則正確的輸入方法為(C)。A)3,4B)a:3b:4C)a=3,b=4D)3設(shè)b=1234,執(zhí)行printf(“%%d@%d”,b)語(yǔ)句,輸出結(jié)果為:(D)。A)1234B)%1234C)%%d@1234D)若x是int型變量,y是float型變量,所用scanf語(yǔ)句為scanf(“x=%d,y=%f”,&x,&y);正確的輸入操作是(A)。A)x=10,y=66.6<回車(chē)>B)1066.6<回車(chē)>C)10<回車(chē)>66.6<回車(chē)>D)x=10<回車(chē)>y=66.6<回車(chē)>設(shè)a,b均是int型變量,則以下不正確的函數(shù)調(diào)用為(D)。A)getchar();B)putchar(‘\108’);C)scanf(“%d,%2d”,&a,&b);D)putchar(‘\’);下列程序的執(zhí)行結(jié)果是(C)。#include<stdio.h>voidmain(){inta=5;floatx=3.14;a*=x*(‘E’-‘A’);printf(“%f\n”,(float)a);}A)62.800000B)62C)62.000000D)若輸入2.50,下列程序的執(zhí)行結(jié)果是(A)。voidmain(){floatr,area;scanf(“%f”,&r);printf(“area=%f\n”,area=1/2*r*r);}A)0B)3.125C)3.13D)編程題編寫(xiě)程序,從鍵盤(pán)上輸入2個(gè)整數(shù)給變量a和b,交換a、b值然后輸出。//參考程序#include<stdio.h>voidmain(){inta,b,temp;scanf("%d%d",&a,&b);printf("\n交換前:a=%d,b=%d\n",a,b);temp=a;a=b;b=temp;printf("交換后:a=%d,b=%d\n",a,b);}試編寫(xiě)一個(gè)程序,任意輸入一個(gè)小寫(xiě)字母,分別按八進(jìn)制、十進(jìn)制、十六進(jìn)制、字符格式輸出。//參考程序:#include<stdio.h>voidmain(){charc;printf("請(qǐng)輸入1個(gè)小寫(xiě)字母:\n");scanf("%c",&c);printf("八進(jìn)制:%o\n十進(jìn)制:%d\n",c,c);printf("十六進(jìn)制:%x\n字符:%c\n",c,c);}輸入一個(gè)華氏溫度,要求輸出攝氏溫度,輸出要有文字說(shuō)明,取2位小數(shù)。公式為://參考程序:#include<stdio.h>voidmain() { floatc,f; printf(“請(qǐng)輸入一個(gè)華氏溫度:\n”);scanf(“%f”,&f);c=5.0/9*(f-32);printf(“華氏溫度F=%.2f\n”,f);printf(“攝氏溫度c=%.2f\n”,c);}設(shè)圓半徑r=3,圓柱高h(yuǎn)=4,求圓周長(zhǎng)、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說(shuō)明,取小數(shù)點(diǎn)后2位數(shù)字。請(qǐng)編程序。//參考程序:#include<stdio.h>#definePI3.1415926voidmain() {floatr,h,c,s1,s2,v1,v2; printf(“請(qǐng)輸入圓半徑,圓柱高:”);scanf(“%f,%f”,&r,&h);c=2*PI*r;s1=PI*r*r;s2=4*PI*r*r;v1=4/3*PI*r*r*r;v2=s1*h;printf(“r=%.2f,h=%.2f\n”,r,h);printf(“圓周長(zhǎng)=%.2f,圓面積=%.2f\n”,s1,s2);printf(“圓體積=%.2f,圓柱體積=%.2f\n”,v1,v2);}習(xí)題四填空題表示條件:10<x<100或x<0的C語(yǔ)言表達(dá)式是10<x&&x<100||x<0。若要求在if后一對(duì)圓括號(hào)中表示a不等于0的關(guān)系,則能正確表示這一關(guān)系的表達(dá)式為a。若已知a=10,b=20,則表達(dá)式!a<b的值為1。當(dāng)a=3,b=2,c=1時(shí),表達(dá)式f=a>b>c的值是0。設(shè)y為int型變量,請(qǐng)寫(xiě)出描述“y是奇數(shù)”的表達(dá)式y(tǒng)%2!=0。設(shè)x,y,z為int型變量,請(qǐng)寫(xiě)出描述“x或y中有一個(gè)小于z”的表達(dá)式x<z&&y>=z||x>=z&&y<z。已知a=7.5,b=2,c=3.6,表達(dá)式a>b&&c>a||a<b&&!c>b的值是1。假設(shè)a=5,b=2,c=4,以下表達(dá)式的值依次為:0,1,1,1。(1)a%b*c&&c%b*a(2)b%c*a&&a%c*b(3)a%b*c||c%b*a(4)b%c*a||a%c*b假設(shè)a=3,b=4,c=5,x=0,y=0,以下各表達(dá)式的值依次為0,1,1,0,1。(1)a+b>c&&b==c(2)a||b+c&&b-c(3)!(a>b)&&!c||1(4)!(x=a)&&(y=b)&&0(5)!(a+b)+c–1&&b+c/2兩次運(yùn)行下面的程序,如果從鍵盤(pán)上分別輸入6和4,輸出的結(jié)果是7和5。voidmain(){intx;scanf(“%d”,&x);if(x++>5)printf(“%d”,x);elseprintf(“%d\n”,x--);}選擇題:設(shè)a為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系:10<a<15的C語(yǔ)言表達(dá)式是(A)。A)10<a<15B)a==11||a==12||a==13||a==14C)a>10&&a<15D)!(a<=10)&&!(a>=15)在以下一組運(yùn)算符中,優(yōu)先級(jí)最高的是(C)。A)<=B)=C)%D)&&設(shè)a,b,c都是int型變量,且a=3,b=4,c=5,則下面表達(dá)式中,值為0的表達(dá)式是(D)。A)’a’&&’b’B)a<=bC)c||+c&&b-cD)!((a<b)&&!c||1)在C語(yǔ)言的if語(yǔ)句中,用作判斷的表達(dá)式為(D)。A)關(guān)系表達(dá)式B)邏輯表達(dá)式C)算術(shù)表達(dá)式D)任意表達(dá)式在以下運(yùn)算符中,優(yōu)先級(jí)最高的運(yùn)算符是(B)。A)<=B)/C)!=D)&&假設(shè)所有變量均為整型,表達(dá)式(a=2,b=5,a>b?a++:b++,a+b)的值是(B)。A)7B)8C)9D)在C語(yǔ)言中,能代表邏輯值"真"的是(D)。A)trueB)大于0的數(shù)C)非0整數(shù)D)非0的數(shù)在以下運(yùn)算符中,優(yōu)先級(jí)最高的運(yùn)算符是(A)。A)!B)=C)+D)||邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的數(shù)據(jù)類型(D)。A)只能是0或1B)只能是0或非0正數(shù)C)只能是整型或字符型數(shù)據(jù)D)可以是任何類型的數(shù)據(jù)編程題編寫(xiě)一個(gè)C程序,要求從鍵盤(pán)輸入一個(gè)整數(shù),判斷該整數(shù)是否能夠被17整除。(解析:當(dāng)該數(shù)與17的余數(shù)為零時(shí),即可以被17整除。)//參考程序#include<stdio.h>voidmain() { inta; printf(“請(qǐng)輸入一個(gè)整數(shù):”); scanf(“%d”,&a);if(a%17==0)printf(“%d能被17整除\n”,a);elseprintf(“%d不能被17整除\n”,a); }編寫(xiě)一個(gè)C程序,計(jì)算并顯示由下列說(shuō)明確定的一周薪水。如果工時(shí)小于40,則薪水按每小時(shí)8元計(jì);否則,按320元加上超出40小時(shí)部分的每小時(shí)12元。(解析:一周工時(shí)數(shù)為鍵盤(pán)輸入,顯示其相應(yīng)薪水為輸出。)//參考程序#include<stdio.h>voidmain() {floata,wage; printf(“請(qǐng)輸入工時(shí)數(shù):”); scanf(“%f”,&a);if(a<0) printf(“error!”);else{if(a<40)wage=a*8;elsewage=320+(a-40)*12;printf(“周薪水=%.1f}}編寫(xiě)一個(gè)C程序,要求從鍵盤(pán)輸入三個(gè)整數(shù)a,b,c,輸出其中最大的數(shù)。(解析:求極值問(wèn)題。設(shè)立一個(gè)變量max總是保留兩數(shù)比較時(shí)較大的那個(gè)值。具體方法如下:先將a的值賦給max,如果max<b則將b的值賦給max,然后再用max與c進(jìn)行比較,如果max<c則將c的值賦給max,這樣能使max總是保留最大的值。最后輸出max。)//參考程序#include<stdio.h>voidmain() { inta,b,c,max; printf(“請(qǐng)輸入三個(gè)整數(shù):”);scanf(“%d%d%d”,&a,&b,&c);if(a>b)max=a;elsemax=b;/*max=a>b?a:b;*/if(c>max)max=c;/*max=max>c?max:c;*/printf(“最大值max=%d\n”,max);}編寫(xiě)一個(gè)C程序,要求從鍵盤(pán)輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。(解析:排序問(wèn)題。想辦法把三個(gè)數(shù)進(jìn)行調(diào)換,使得最小的數(shù)放到x變量里,最大的數(shù)放在z變量里。具體方法如下:先將x與y進(jìn)行比較,如果x>y則將x與y的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最?。蝗缓髮與z比較,并將較小的值保存在y里而較大的值放在z里。最后,依次輸出x、y、z。)//參考程序#include<stdio.h>voidmain() {intx,y,z,a;printf(“input3integer:\n”);scanf(“%d,%d,%d”,&x,&y,&z);if(x>y)/*使x<=y*/{a=x;x=y;y=a;}if(x>z)/*使x<=z*/{a=x;x=z;z=a;}if(y>z)/*使y<=z*/{a=z;z=y;y=a;}printf(“\nx=%d,y=%d,z=%d\n”,x,y,z);}編寫(xiě)一個(gè)C程序,要求從鍵盤(pán)輸入一個(gè)不多于5位的正整數(shù)x,要求輸出:一、它是幾位數(shù);二、逆序打印出各位數(shù)字,例如:原數(shù)為789,應(yīng)輸出987。(解析:該問(wèn)題的核心是分解出每一位上的數(shù)字:a=x/10000; /*分解出萬(wàn)位上的數(shù)字*/

b=x%10000/1000; /*分解出千位上的數(shù)字*/

c=x%1000/100; /*分解出百位上的數(shù)字*/

d=x%100/10; /*分解出十位上的數(shù)字*/

e=x%10; /*分解出個(gè)位上的數(shù)字*/

通過(guò)檢測(cè)各數(shù)字是否為零,便可知道x是幾位數(shù),例如:if(a)則x是5位數(shù)。)//參考程序#include<stdio.h>voidmain(){longx;inta,b,c,d,e;printf("\ninputx:");scanf("%ld",&x);e=x%10;d=x/10%10;c=x/100%10;b=x/1000%10;a=x/10000;if(x>=1E+5||x<=0)printf("Outofrange!\n");else{if(a>0)printf("5位數(shù),反序數(shù)字是:%d%d%d%d%d\n",e,d,c,b,a);elseif(b>0)printf("4位數(shù),反序數(shù)字是:%d%d%d%d\n",e,d,c,b);elseif(c>0)printf("3位數(shù),反序數(shù)字是:%d%d%d\n",e,d,c);elseif(d>0)printf("2位數(shù),反序數(shù)字是:%d%d\n",e,d);elseprintf("1位數(shù),數(shù)字是:%d\n",e);}}編寫(xiě)一個(gè)C程序,要求從鍵盤(pán)輸入兩個(gè)數(shù),并依據(jù)提示輸入的數(shù)字,選擇對(duì)這兩個(gè)數(shù)的運(yùn)算,并輸出相應(yīng)運(yùn)算結(jié)果。要求提示為:1、作加法;2、做乘法;3、做除法:(解析:可使用switch語(yǔ)句,以提示輸入的數(shù)字為依據(jù),作分支結(jié)構(gòu)設(shè)計(jì),使得提示輸入1時(shí),將兩數(shù)之和輸出;提示輸入2時(shí),將兩數(shù)之積輸出;提示輸入3時(shí),將兩數(shù)之商輸出--注意,除數(shù)不可為零的檢測(cè)與提示。)//參考程序#include<stdio.h>voidmain() {floatop1,op2;intsign;printf("請(qǐng)輸入兩個(gè)操作數(shù):ab\n");scanf("%f%f",&op1,&op2);printf("請(qǐng)選擇進(jìn)行的運(yùn)算(1,2,3,4):\n");printf("1:+\n");printf("2:-\n");printf("3:*\n");printf("4:/\n");printf("您選擇:");scanf("%d",&sign);switch(sign){case1:printf("\n%f+%f=%f\n",op1,op2,op1+op2);break;case2:printf("\n%f-%f=%f\n",op1,op2,op1-op2);break;case3:printf("\n%f*%f=%f\n",op1,op2,op1*op2);break;case4:if(op2){printf("\n%f/%f=%f\n",op1,op2,op1/op2);break;}else{printf("\n除數(shù)不能為0\n");break;}default:printf("\n您選擇的運(yùn)算不對(duì)\n");}}習(xí)題五5.1填空題至少執(zhí)行一次循環(huán)體的循環(huán)語(yǔ)句是dowhile。下面程序段是從鍵盤(pán)輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循環(huán)。請(qǐng)?zhí)钐羁铡ntn=0,c;c=getchar();while(c!=’\n’){if(c>=’0’&&c<=’9’c=getchar();}在執(zhí)行以下程序時(shí),如果鍵盤(pán)上輸入:ABCdef<回車(chē)>,則輸出為abcDEF。#include<stdio.h>{charch;while((ch=getchar())!=’\n’){if(ch>=’A’&&ch<=’Z’)ch=ch+32;elseif(ch>=’a’&&ch<=’z’)ch=ch-32;printf(“\n”);}下面程序的功能是用輾轉(zhuǎn)相除法求兩個(gè)正整數(shù)的最大公約數(shù),請(qǐng)?zhí)羁铡?include<stdio.h>voidmain(){intr,m,n;scanf(“%d,%d”,&m,&n);if(m<n){r=m;m=n;n=r}r=m%n;while(r){m=n;n=r;r=m%n;}printf(“%d\n”,n);}當(dāng)運(yùn)行以下程序時(shí),從鍵盤(pán)輸入“right?<回車(chē)>”,則下面程序的運(yùn)行結(jié)果是sjhiu。#include<stdio.h>voidmain(){charc;while((c=getchar())!=’?’)putchar(++c);}下面程序的運(yùn)行結(jié)果是s=254。#include<stdio.h>voidmain(){inta,s,n,count;a=2;s=0;n=1;count=1;while(count<=7){n=n*a;s=s+n;++count;}printf(“s=%d”,s);}執(zhí)行下面程序段后,k的值是36。k=1;n=263;do{k*=n%10;n/=10;}while(n);下面程序使循環(huán)結(jié)束的條件式i==0。#include<stdio.h>voidmain(){intk;for(k=250;i;i-=5)printf(“%d\n”,i);}下面程序的運(yùn)行結(jié)果是****#。#include<stdio.h>voidmain(){inti,j=4;for(i=j;i<2*j;i++)switch(i/j){case0:case1:printf(”*”);break;case2:printf(“#”);}}下面程序的輸出結(jié)果是i=6,k=4。#include<stdio.h>voidmain(){inti,j,k=19;while(i=k-1){k-=3;if(k%5==0){i++;continue;}elseif(k<5)break;i++;}printf(“i=%d,k=%d\n”,ik);}5.2選擇題設(shè)有程序段:intk=10;while(k=0)k=k-1;,則下面描述正確的是(C)。A)while循環(huán)執(zhí)行10次B)循環(huán)時(shí)無(wú)限循環(huán)C)循環(huán)體語(yǔ)句一次也不執(zhí)行D)循環(huán)體語(yǔ)句執(zhí)行一次語(yǔ)句while(!E);中的表達(dá)式!E等價(jià)于(A)。A)E==0B)E!=1C)下面程序段的運(yùn)行結(jié)果是(A)。a=1;b=2;c=2;while(a<b<c){t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);A)1,2,0B)2,1,0C)1,2,1下面程序段的輸出結(jié)果是(C)。intn=0;while(n++<=2);printf(%d“,n);A)2B)3C)4D)以下描述正確的是(C)。A)while、do…while、for循環(huán)中的循環(huán)體語(yǔ)句都至少被執(zhí)行一次。B)do…while循環(huán)中,while(表達(dá)式)后面的分號(hào)可以省略。C)while循環(huán)中,一定要有能使while后面表達(dá)式的值變?yōu)椤凹佟钡牟僮鳌)do…while循環(huán)中,根據(jù)情況可以省略while。C語(yǔ)言的do…while循環(huán)中,循環(huán)由do開(kāi)始,用while結(jié)束;而且在while表達(dá)式后面的(B)不能丟,它表示do…while循環(huán)的結(jié)束。A)\nB)“;”C)“%”D)“?!毕旅娉绦蚨蔚妮敵鼋Y(jié)果是(D)。intx=3;do{printf(“%3d”,x-=2);}while(!(--x));A)12B)32C)23D)執(zhí)行程序段:x=-1;do{x=x*x;}while(!x);的結(jié)果是(C)。A)死循環(huán)B)循環(huán)執(zhí)行2次C)循環(huán)執(zhí)行一次D)有語(yǔ)法錯(cuò)誤對(duì)于for(表達(dá)式;;表達(dá)式3)可理解為(B)。A)for(表達(dá)式;0;表達(dá)式3)B)for(表達(dá)式;1;表達(dá)式3)C)for(表達(dá)式;表達(dá)式1;表達(dá)式3)D)for(表達(dá)式;表達(dá)式3;表達(dá)式3)以下不正確的描述是(B)。A)break語(yǔ)句不能用于循環(huán)語(yǔ)句和switch語(yǔ)句外的任何其他語(yǔ)句B)在switch語(yǔ)句中使用break語(yǔ)句或continue語(yǔ)句的作用相同C)在循環(huán)語(yǔ)句中使用continue語(yǔ)句是為了結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。D)在循環(huán)語(yǔ)句中使用break語(yǔ)句是為了使流程跳出循環(huán)體,提前結(jié)束循環(huán)若i為整型變量,循環(huán)語(yǔ)句for(i=2,i==0;)printf(“%d”,i--);的執(zhí)行次數(shù)為(B)。A)無(wú)限次B)0次C)1次D)2次以下敘述正確的是(C)。A)for循環(huán)中設(shè)置fo(條件)break,當(dāng)條件成立時(shí)中止程序執(zhí)行。B)for循環(huán)中設(shè)置fo(條件)continue,當(dāng)條件成立時(shí)中止本層循環(huán)。C)for循環(huán)中設(shè)置fo(條件)break,當(dāng)條件成立時(shí)中止本層循環(huán)。D)for循環(huán)中設(shè)置fo(條件)continue,當(dāng)條件成立時(shí)暫停程序執(zhí)行。下面關(guān)于for循環(huán)的正確描述是(D)。A)for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況。B)for循環(huán)是先執(zhí)行循環(huán)體語(yǔ)句,后判斷表達(dá)式。C)在for循環(huán)中,不能用break語(yǔ)句跳出循環(huán)體。D)for循環(huán)的循環(huán)體語(yǔ)句中,可以包含多條語(yǔ)句。循環(huán)語(yǔ)句for(i=0,x=0;!x&&i<=5;i++);的執(zhí)行次數(shù)為(B)。A)5次B)6次C)1次D)無(wú)限以下程序段的輸出結(jié)果是(D)。intx,i;for(i=1;i<=100;i++){x=I;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(“%d”,x);}A)3981B)4284C)2668D)以下描述正確的是(C)。A)goto語(yǔ)句只能用于推出多層循環(huán)B)switch語(yǔ)句不能出現(xiàn)continue語(yǔ)句C)只能用continue語(yǔ)句來(lái)終止本次循環(huán)D)在循環(huán)中break語(yǔ)句不能獨(dú)立出現(xiàn)以下不是無(wú)限循環(huán)的語(yǔ)句是(A)A)for(y=0,x=1;x>++y;x=i++)i=x;B)for(;;x++=i);C)while(1){x++;}D)for(i=10;;i--)sum+=i;下面程序段的輸出結(jié)果是(D)。inti,sum;for(i=1;i<=10;i++)sum+=sumprintf(“%d\n”,i);A)10B)9C)15D)下面程序段的運(yùn)行結(jié)果是(D)。for(x=3;x<6;x++)printf((x%2)?(“**%d”):(“##%d”),x);A)**3B)##3C)##3D)##4**4**4##5**5**5##5執(zhí)行語(yǔ)句for(i=1;i++<4;);后變量i的值是(C)。A)3B)4C)52.3編程題輸入一行字符,分別統(tǒng)計(jì)出其中字母、數(shù)字和其它字符的個(gè)數(shù)。求100~200之間不能被3整除也不能被7整除的數(shù)。求。求,直到某一項(xiàng)小于0.001時(shí)為止。用迭代法求。迭代公式為:,要求迭代精度滿足。假設(shè)x,y是整數(shù),編寫(xiě)程序求xy的最后3位數(shù),要求x,y從鍵盤(pán)輸入。從鍵盤(pán)上輸入10個(gè)整數(shù),求其中的最大值和最小值。(1)判斷一個(gè)數(shù)是否為素?cái)?shù)。(2)輸出3-100之間的所有素?cái)?shù)。求解愛(ài)因斯坦數(shù)學(xué)題。有一條長(zhǎng)度不多于1000步的階梯,若每步跨2階,則最后剩1階,若每步跨3階,則最后剩2階,若每步跨5階,則最后剩4階,若每步跨6階,則最后剩5階,若每步跨7階,最后一階都不剩,問(wèn)總共有多少級(jí)階梯?100匹馬馱100擔(dān)貨,大馬一匹馱3擔(dān),中馬一匹馱2擔(dān),小馬兩匹馱1擔(dān),求大、中、小馬的數(shù)目,要求列出所有的可能。假設(shè)我國(guó)國(guó)民經(jīng)濟(jì)總值按每年8%的比率增長(zhǎng),問(wèn)幾年后翻番。編寫(xiě)程序,求1~99之間的全部同構(gòu)數(shù)。同構(gòu)數(shù)是這樣一組數(shù);它出現(xiàn)在平方數(shù)的右邊。例如:5是25的右邊的數(shù),25是625右邊的數(shù),5和25都是同構(gòu)數(shù)。編寫(xiě)程序,對(duì)數(shù)據(jù)進(jìn)行加密。從鍵盤(pán)輸入一個(gè)數(shù),對(duì)每一位數(shù)字均加2,若加2后大于9,則取其除10的余數(shù)。如,2863加密后得到4085。從鍵盤(pán)輸入n,打印n行倒等腰三角形,如n=4,則打?。?**********************打印如下的九九乘法表123456789----------------------------------------124369481216510152025……………..91827364554637281數(shù)組習(xí)題參考答案填空題C語(yǔ)言中,數(shù)組名代表數(shù)組首地址。在c語(yǔ)言中,引用數(shù)組元素時(shí),其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是整型常量在c語(yǔ)言中,一維數(shù)組的定義形式為:存儲(chǔ)類型類型說(shuō)明符

數(shù)組名[常量表達(dá)式]。若有說(shuō)明:int

a[][3]={1,2,3,4,5,6,7};

則a數(shù)組第一維的大小是3。下面程序段的運(yùn)行結(jié)果是f。char

a[7]="abcdef";

char

b[4]="ABC";

strcpy(a,b);

printf("%c",a[5]);

下面程序段的運(yùn)行結(jié)果是3。char

c[]="\t\v\\\0will\n";

printf("%d",strlen(c));

假設(shè)字符串s1和s2均定義過(guò)并初始化,判斷字符串s1是否大于字符串s2,應(yīng)當(dāng)使用語(yǔ)句為:if(strcmp(s1,s2)>0)定義intarr[5]={1,2,3};則引用數(shù)組元素a[4]的值是:0。數(shù)組的長(zhǎng)度若為N,則可以訪問(wèn)的數(shù)組下標(biāo)范圍為:0~(N-1)。數(shù)組元素引用時(shí),下標(biāo)為整型的表達(dá)式,可以使用變量。選擇題合法的數(shù)組定義是(D)。A.inta[]=”string”; B.inta[5]={0,1,2,3,4,5};C.chara=”string”; D.chara[]={0,1,2,3,4,5};若有定義和語(yǔ)句:chars[10];s=”abcd”;printf(“%s\n”,s);則結(jié)果是(以下u代表空格)(A)。A.輸出abcd B.輸出aC.輸出abcd uuuuu D.編譯不通過(guò)數(shù)組a[2][2]的元素排列次序是(A)。A.a(chǎn)[0][0],a[0][1],a[1][0],a[1][1] B.a(chǎn)[0][0],a[1][0],a[0][1],a[1][1]C.a(chǎn)[1][1],a[1][2],a[2][1],a[2][2] D.a(chǎn)[1][1],a[2][1],a[1][2],a[2][2]有以下語(yǔ)句,則下面正確的描述是(B)。staticcharx[]=“12345”; staticchary[]={‘1’,‘2’,‘3’,‘4’,‘5’};A.x數(shù)組和y數(shù)組的長(zhǎng)度相同。B.x數(shù)組長(zhǎng)度大于y數(shù)組長(zhǎng)度。C.x數(shù)組長(zhǎng)度小于y數(shù)組長(zhǎng)度D.x數(shù)組等價(jià)于y數(shù)組。列不能正確進(jìn)行字符串賦值操作的語(yǔ)句是(C)。A.charstr[10];gets(str); B.char*str;str=“a”;C.char*str;str=‘a(chǎn)’; D.charstr[10];strcpy(str,“hello”);若數(shù)組的長(zhǎng)度為n,則該數(shù)組中的元素最多有n個(gè)。若[3][5]是一個(gè)二維數(shù)組,則最多可使用的元素個(gè)數(shù)為(C)A.8 B.10 C.15 D.5若有說(shuō)明:inta[3][4];則對(duì)a數(shù)組元素的非法引用是(D)。A.a(chǎn)['B'-'A'][2*1] B.a(chǎn)[1][3] C.a(chǎn)[4-2][0] D.a(chǎn)[0][4]設(shè)有語(yǔ)句staticcharstr[10]={“china”};printf(“%d”,strlen(str));則輸出結(jié)果是A.10 B.5 表達(dá)式strlen(“string”)+strlen(“C”)的運(yùn)算結(jié)果為(C)。A.9 B.10 C.7 D.8執(zhí)行以下程序段后,s的值為(B)。staticcharch[]=“623”inta,s=0;for(a=0;ch[a]>=‘0’&&ch[a]<=‘9’;a++)s=10*s+ch[a]-‘0’;A.-4705 B.623 編程題從鍵盤(pán)輸入若干個(gè)整數(shù)(數(shù)據(jù)個(gè)數(shù)應(yīng)少于50),其值在0至4的范圍內(nèi),用-1作為輸入結(jié)束標(biāo)志.統(tǒng)計(jì)每個(gè)整數(shù)的個(gè)數(shù)。試編程。參考答案#include<stdio.h>#defineM50voidmain(){inta[M],c[5],i,n=0,x;printf("Enter0or1or2or3or4,toendwith-1\n");scanf("%d",&x);while(x!=-1){if(x>=0&&x<=4){a[n]=x;n++;}scanf("%d",&x);}for(i=0;i<5;i++)c[i]=0;for(i=0;i<n;i++)c[a[i]]++;printf("Theresultis:\n");for(i=0;i<=4;i++)printf("%d:%d\n",i,c[i]);printf("\n");}定義一個(gè)含有30個(gè)整型元素的數(shù)組,按順序分別賦予從2開(kāi)始的偶數(shù);然后按順序每五個(gè)數(shù)求出一個(gè)平均值,放在另一個(gè)數(shù)組中并輸出。請(qǐng)編程。參考答案#include<stdio.h>#defineSIZE30voidmain(){floatb[SIZE/5],sum;inta[SIZE],i,k;for(k=2,i=0;i<SIZE;i++){ a[i]=k; k+=2; } sum=0.0; for(k=0,i=0;i<SIZE;i++) { sum+=a[i]; if((i+1)%5==0) { b[k]=sum/5; sum=0; k++; } } printf("Theresultis:\n"); for(i=0;i<k;i++) printf("%f\n",b[i]);}通過(guò)賦初值按行順序給2*3的二維數(shù)組賦予2、4、6....等偶數(shù),然后按列的順序輸出該數(shù)組。試編程。參考答案#include<stdio.h>voidmain(){ inti,j,a[2][3]={{2,4,6},{8,10,12}};printf("Theoriginalarrayis:\n");for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n");}printf("\ntheresultis:\n");for(i=0;i<3;i++){ for(j=0;j<2;j++)printf("%4d",a[j][i]);printf("\n");}}通過(guò)循環(huán)按行順序?yàn)橐粋€(gè)5*5的二維數(shù)組a賦1到25的自然數(shù),然后輸出該數(shù)組的左下半三角。試編程。參考答案#include<stdio.h>voidmain(){ inta[5][5],i,j,n=1; for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=n++;printf("Theresultis:\n");for(i=0;i<5;i++){ for(j=0;j<=i;j++)printf("%4d",a[i][j]);printf("\n");}}下面是一個(gè)5*5階的螺旋方陣。試編程打印出此形式的n*n(n<10)階的方陣(順時(shí)針?lè)较蛐M(jìn))

1

2

3

4

5

16

17

18

19

6

15

24

25

20

7

14

23

22

21

8

13

12

11

10

9#include<stdio.h>voidmain(){inta[10][10],i,j,k=0,m,n;printf("Entern(n<10):\n");scanf("%d",&n);if(n%2==0)m=n/2;elsem=n/2+1;for(i=0;i<m;i++){for(j=i;j<n-i;j++){ k++;a[i][j]=k; }for(j=+1;j<n-i;j++){ k++;a[j][n-i-1]=k; }for(j=n-i-2;j>=i;j--){k++;a[n-i-1][j]=k;}for(j=n-i-2;j>=i+1;j--){k++;a[j][i]=k;}}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%5d",a[i][j]);printf("\n"); }}從鍵盤(pán)輸入一個(gè)字符,用折半查找法找出該字符在已排序的字符串a(chǎn)中的位置。若該字符不在a中,則打印出提示信息:Thecharisnotinthestring.試編程。注:折半查找的算法思想是將數(shù)列按有序化(遞增或遞減)排列,查找過(guò)程中采用跳躍式方式查找,即先以有序數(shù)列的中點(diǎn)位置為比較對(duì)象,如果要找的元素值小于該中點(diǎn)元素,則將待查序列縮小為左半部分,否則為右半部分。通過(guò)一次比較,將查找區(qū)間縮小一半。折半查找是一種高效的查找方法。它可以明顯減少比較次數(shù),提高查找效率。但是,折半查找的先決條件是查找表中的數(shù)據(jù)元素必須有序。參考答案#include<stdio.h>voidmain(){chara[12]="adfgikmnprs",c;inti,top,bot,mid;printf("Inputacharacter\n");scanf("%c",&c);printf("c=%c\n",c);for(top=0,bot=10;top<=bot;){mid=(top+bot)/2;if(c==a[mid]){printf("Thepositionis%d\n",mid+1);break;}elseif(c>a[mid])top=mid+1;elsebot=mid-1;}if(top>bot)printf("Thecharisnotinthestring.\n");}從鍵盤(pán)輸入兩個(gè)字符串a(chǎn)和b,要求不用庫(kù)函數(shù)strcat把串b的前五個(gè)字符連接到串a(chǎn)中;如果b的長(zhǎng)度小于5,則把b的所有元素都連接到a中。試編程。參考答案#include<stdio.h>#include<string.h>voidmain(){chara[80],b[80];inti=0,j;printf("Inputtwostrings.\n");gets(a);gets(b);while(a[i++]!='\0');for(j=0,i--;j<5&&b[j]!='\0';j++)a[i++]=b[j];a[i]='\0';puts(a);}從鍵盤(pán)輸入10個(gè)數(shù)給數(shù)組a,然后逆序輸出。參考答案#include<stdio.h>voidmain(){inti,a[10];for(i=0;i<=9;i++)scanf("%d",&a[i]);for(i=9;i>=0;i--)printf("%4d",a[i]);}輸入10個(gè)0到100的隨機(jī)整數(shù)到指定的數(shù)組中。參考答案#include<stdio.h>#include<stdlib.h>voidmain(){ inti,a[10]={0}; srand(50);/*初始化隨機(jī)數(shù)序列*/for(i=0;i<10;i++){ a[i]=rand()%100;/*產(chǎn)生100以內(nèi)的隨機(jī)整數(shù)*/ }for(i=0;i<10;i++) printf("%4d\n",a[i]);}為比賽選手評(píng)分。計(jì)算方法:從10名評(píng)委的評(píng)分中扣除一個(gè)最高分,扣除一個(gè)最低分,然后統(tǒng)計(jì)總分,并除以8,最后得到這個(gè)選手的最后得分(打分采用百分制)。參考答案#include<stdio.h>voidmain(){ intscore[10];/*10個(gè)評(píng)委的成績(jī)*/ floatmark;/*最后得分*/ inti; intmax=-1;/*最高分*/ intmin=101;/*最低分*/ intsum=0;/*10個(gè)評(píng)委的總和*/ for(i=0;i<10;i++) { printf("PleaseEntertheScoreofNo.%d",i+1); scanf("%d\n",&score[i]); sum=sum+score[i]; } for(i=0;i<10;i++) { if(score[i]>max) max=score[i]; } for(i=0;i<10;i++) { if(score[i]<min) min=score[i]; } mark=(sum-min-max)/8.0; printf("Themarkoftheplayeris%.1f\n",mark);}習(xí)題七答案習(xí)題七一、選擇題1.D2.B3.A4.D5.D6.B7.A8.A9.C10.A11.C12.A13.C二、填空題1.標(biāo)準(zhǔn)庫(kù)函數(shù)自定義函數(shù)2.全局變量局部變量3.<=yz*x4.1s*i0f(k)習(xí)題八答案習(xí)題八一、選擇題1.C2.D3.D4.B5.B6.A7.B8.B9.A二、填空題1.所指對(duì)象的內(nèi)容取變量的地址2.pp3.c(或者*pc)num[i]4.*k=p5.a(chǎn)[i]//或者*(a+i)或者*(p+i)16.funss(或者s)b(或者q)三、寫(xiě)出以下程序的運(yùn)行結(jié)果1.6,82.1,5,243.244.665.Result=-123456.Averagescoreis:71.80求5門(mén)課程平均分7.-1234輸入一個(gè)字符串,并將其轉(zhuǎn)換為數(shù)字8.下列程序功能是將長(zhǎng)整型數(shù)中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為:87653142時(shí),t中的數(shù)為:8642。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。修改后,正確程序:#include<stdio.h>voidfun(longs,long*t){intd;longs1=1;*t=0;while(s>0){d=s%10;if(d/2==0)//改為:if(d%2==0){*t=d*s1+*t;s1*=10;}s\=10;}//改為:s/=10;}voidmain(){longs,t;scanf("%ld",&s);fun(s,&t);printf("\nresult=%ld\n",t);}9.下列程序功能是對(duì)M行M列整數(shù)方陣求兩條對(duì)角線上各元素之和。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。修改后,正確程序:#defineM5#include<stdio.h>intfun(intn,intx[][])//改intfun(intn,intx[][M]){inti,j,sum=0,*p;//改inti,j,sum=0,(*p)[M];for(p=1,i=1;i<=M;i++)//改for(p=x,i=0;i<M;i++)sum+=p[i][i]+p[i][n-i-1];returnsum;}voidmain(){inti,j,a[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};printf("\n");for(i=0;i<M;i++){for(j=0;j<M;j++)printf("%6d",a[i][j]);printf("\n");}printf("\nsum=%d\n",fun(M,a));}習(xí)題答案第9章9.1選擇題在宏定義#definePI3.14159中,宏名PI代替的是一個(gè)(D)。A)常量B)單精度數(shù)C)雙精度數(shù)D)字符串定義一個(gè)名為NEW(X)的宏,產(chǎn)生它的參數(shù)的負(fù)值,正確的語(yǔ)句是(C)。A)#defineNEW(X)-xB)#defineNEW(X)xC)#defineNEW(X)(-x)D)#defineNEW(X)(-x);定義一個(gè)名為ABSVAL(X)的宏,產(chǎn)生它的參數(shù)的絕對(duì)值,正確的語(yǔ)句是(D)。A)#defineABSVAL(X)(-x)B)#defineABSVAL(X)(x<0?–x:x)C)#defineABSVAL(X)(x>0?x:-x)D)#defineABSVAL(X)((x)<0?(-x):(x))下列格式中哪個(gè)是合法的(D)。A)#definePI=3.14159B)include"string.h"C)#includemath.h;D)#defines(r)r*r以下程序的輸出結(jié)果是(B)。#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);printf("%d\n",k);}A)10B)15C)100D)150以下有關(guān)宏替換的敘述不正確的是(C)。A)宏替換只是字符替換B)宏名無(wú)類型C)宏名必須用大寫(xiě)字母表示D)宏替換不占用運(yùn)行時(shí)間設(shè)有以下宏定義,則執(zhí)行語(yǔ)句“z=2*(N+Y(5+1));”后,z值為(C)。#defineN3#defineY(n)((N+1)*n)A)42B)15C)48D)出錯(cuò)設(shè)有以下定義:#defineF(n)2*

溫馨提示

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

評(píng)論

0/150

提交評(píng)論