




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
程序設計與C語言1.1選擇題考點:標識符的命名規則只能由字母、數字、下劃線構成數字不能作為標識符的開頭關鍵字不能作為標識符選項A中的“-”,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3)1.下列正確的標識符是(C)。A.-a1B.a[i]C.a2_iD.intt2.下列C語言用戶標識符中合法的是(B)。A)3axB)xC)caseD)-e2E)union選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1);3.下列四組選項中,正確的C語言標識符是(C)。A)%xB)a+bC)a123D)123選項A中的“%”,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2)4.下列四組字符串中都可以用作C語言程序中的標識符的是(A)。A、print_3ddb8aBcB、I\amone_halfstart$it3paiC、str_1CpppowwhileD、PxqMy->bookline#His.age選項B中的“\”,”$”,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3)知識點:簡單C語言程序的構成和格式5.在一個C程序中___B___。A、main函數必須出現在所有函數之前B、main函數可以在任何地方出現C、main函數必須出現在所有函數之后D、main函數必須出現在固定位置6.以下說法中正確的是__D____。A、#define和printf都是C語句B、#define是C語句,而printf不是C、printf是C語句,但#define不是D、#define和printf都不是C語句7.一個C程序的執行是從(A)。A本程序的main函數開始,到main函數結束B本程序文件的第一個函數開始,到本程序文件的最后一個函數結束C本程序的main函數開始,到本程序文件的最后一個函數結束D本程序文件的第一個函數開始,到本程序main函數結束8.在C語言中,每個語句必須以(D)結束。A.回車符B.冒號C.逗號D.分號9.C語言規定:在一個源程序中,main函數的位置(C)。A.必須在最開始B.必須在系統調用的庫函數的后面C.可以任意D.必須在最后10.一個C語言程序是由(B)。A.一個主程序和若干子程序組成B.函數組成C.若干過程組成D.若干子程序組成11.下列說法中錯誤的是(D)。A.主函數可以分為兩個部分:主函數說明部分和主函數體B.主函數可以調用任何非主函數的其他函數C.任何非主函數可以調用其他任何非主函數D.程序可以從任何非主函數開始執行12.用C語言編寫的源文件經過編譯,若沒有產生編譯錯誤,則系統將(C)。A.生成可執行目標文件B.生成目標文件C.輸出運行結果D.自動保存源文件1.2填空題1、C語言只有32個關鍵字和9種控制語句。2、每個源程序有且只有一個main函數,系統總是從該函數開始執行C語言程序。3、C語言程序的注釋可以出現在程序中的任何地方,它總是以\*符號作為開始標記,以*/符號作為結束標記。4、C語言中,輸入操作是由庫函數scanf完成的,輸出操作是由庫函數printf完成的。5、系統默認的C語言源程序文件的擴展名是.c,經過編譯后生成的目標文件的擴展名是.obj,經過連接后生成的可執行文件的擴展名是.exe。6、C語言的標識符只能由字母、數字和下劃線三種字符組成。
intk=17;printf("%d,%o,%x\n",k,k,k);}A、17,021,0x11B、17,17,17C、17,0x11,021D、17,21,1132.下面程序的輸出是__C____。main(){unsigneda=32768;printf("a=%d\n",a);}A、a=32768B、a=32767C、a=-32768D、a=-133.在C語言中,合法的長整型常數是___A___。A、0LB、4962710C、324562&D、216D34.C語言中運算對象必須是整型的運算符是__A____。A、%=B、/C、=D、<=35.以下選項中不屬于C語言的類型名稱是___D___。A、signedshortintB、unsignedlongintC、unsignedintD、longshort36.有以下程序main(){intm=0256,n=256;printf("%o%o\n",m,n);}程序運行后的輸出結果是___C___。A、02560400B、0256256C、256400D、40040037.若執下面程序時從鍵盤上輸入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x--);}則輸出是__B____。A、7B、6C、5D、438.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是___B___。A、程序輸出大寫字母MB、程序輸出小寫字母mC、格式說明符不足,編譯出錯D、程序運行時產生出錯信息39.以下程序的輸出結果是__B____。main(){inta;printf("%d\n",(a=3*5,a*4,a+5));}A、65B、20C、15D、1040.設有如下程序段intx=2002,y=2003;printf("%d\n",(x,y));則以下敘述中正確的是__D____。A、輸出語句中格式說明符的個數少于輸出項的個數,不能正確輸出B、運行時產生錯誤信息C、輸出值為2002D、輸出值為200341有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序運行后的輸出結果是___C___。A、2,3,3B、2,3,2C、2,3,1D、2,2,142.設有以下定義inta=0;doubleb=1.25;charc='A';#defined2則下面語句中錯誤的是__D____。A、a++;B、b++;C、c++;D、d++;43.以下程序的輸出結果是___D___。main(){intx=10,y=10;printf("%d%d\n",x--,--y);}A、1010B、99C、910D、10944.若x和y都是int型變量,x=100、y=200,且有下面的程序片段printf("%d",(x,y));上面程序片段的輸出結果是___A___。A、200B、100C、100200D、輸則格式符不夠,輸出不確定的值45.設有如下定義:intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結果是___D___。A、1B、0C、4D、346.兩次運行下面的程序,如果從鍵盤上分別輸入6和4,則輸出結果是___A___。main(){intx;scanf("%d",&x);if(x++>5)printf("%d",x);elseprintf("%d\n",x--);}A、7和5B、6和3C、7和D、6和447.若t為double類型,表達式t=1,t+5,t++的值是___D___。A、1B、6.0C、2.0D、1.048.以下程序的輸出結果是__A____。#include<stdio.h>main(){inti=10,j=10;printf("%d,%d\n",++i,j--);}A、11,10B、9,10C、010,9D、10,949.有以下程序main(){inty=10;while(y--);printf("y=%d\n",y);}程序執行后的輸出結果是__B___。A、y=0B、y=-1C、y=1D、while構成無限循環50.下列程序的輸出結果是(B)。main(){inta=7,b=5;printf("%d\n",b=b/a);}A、5B、1C、0D、不確定值51.以下選項中,不正確的C語言浮點型常量是(C)。A.160B.0.12C.2e4.2D.0.052.以下選項中,(D)是不正確的C語言字符型常量。A.'a'B.'\x41'C.'\101'D."a"53.在C語言中,字符型數據在計算機內存中,以字符的(C)形式存儲。A.原碼B.反碼C.ASCII碼D.BCD碼54.若x、i、j和k都是int型變量,則計算下面表達式后,x的值是(C)。x=(i=4,j=16,k=32)A.4B.16C.32D.5255.算術運算符、賦值運算符和關系運算符的運算優先級按從高到低依次為(B)。A.算術運算、賦值運算、關系運算B.算術運算、關系運算、賦值運算C.關系運算、賦值運算、算術運算D.關系運算、算術運算、賦值運算56.若有代數式,則不正確的C語言表達式是(C)。A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*357.表達式!x||a==b等效于(D)。A.!((x||a)==b)B.!(x||y)==bC.!(x||(a==b))D.(!x)||(a==b)58.設整型變量m,n,a,b,c,d均為1,執行(m=a>b)&&(n=c>d)后,m,n的值是(A)。A.0,0B.0,1C.1,0D.1,159.設有語句inta=3;,則執行了語句a+=a-=a*=a;后,變量a的值是(B)。A.3B.0C.9D.-1260.在以下一組運算符中,優先級最低的運算符是(D)。A.*B.!=C.+D.=61.設整型變量i值為2,表達式(++i)+(++i)+(++i)的結果是(B)。A.6B.12C.15D.表達式出錯62.若已定義x和y為double類型,則表達式x=1,y=x+3/2的值是(C)。A.1B.2C.2.0D.2.563.sizeof(double)的結果值是(A)。A.8B.4C.2D.出錯64.設a=1,b=2,c=3,d=4,則表達式:a<b?a:c<d?a:d的結果為(D)。A.4B.3C.2D.165.設a為整型變量,不能正確表達數學關系:10<a<15的C語言表達式是(A)。A.10<a<15B.a==11||a==12||a==13||a==14C.a>10&&a<15D.!(a<=10)&&!(a>=15)66.設f是實型變量,下列表達式中不是逗號表達式的是(D)。A.f=3.2,1.0B.f>0,f<10C.f=2.0,f>0D.f=(3.2,1.0)67.表達式18/4*sqrt(4.0)/8值的數據類型是(C)。A.intB.floatC.doubleD.不確定68.已知字母A的ASCII碼為十進制數65,且c2為字符型,則執行語句C2=’A’+’6’-‘3’;后c2中的值是(A)。A.DB.68C.不確定的值D.C69.以下用戶標識符中,合法的是(B)。A.intB.nitC.123D.a+b70.C語言中,要求運算對象只能為整數的運算符是(A)。A.%B./C.>D.*71.若有說明語句:charc='\72';則變量c在內存占用的字節數是(A)。A.1B.2C.3D.472.字符串"ABC"在內存占用的字節數是(B)。A.3B.4C.6D.873.要為字符型變量a賦初值,下列語句中哪一個是正確的(B)。A.chara="3";B.chara=’3’;C.chara=%;D.chara=*;74.下列不正確的轉義字符是(C)。A.\\B.\'C.074D.\02.2填空題1、C語言中的邏輯值“真”是用1表示的,邏輯值“假”是用0表示的。2、若x和n都是int型變量,且x的初值為12,n的初值為5,則計算表達式x%=(n%=2)后x的值為0。3、設c='w',a=1,b=2,d=-5,則表達式'x'+1>c,'y'!=c+2,-a-5*b<=d+1,b==a=2的值分別為1、0、1、1。4、設floatx=2.5,y=4.7;inta=7;,表達式x+a%3*(int)(x+y)%2/4的值為2.5。5、判斷變量a、b的值均不為0的邏輯表達式為a!=0&&b!=0。6、求解賦值表達式a=(b=10)%(c=6),表達式值、a、b、c的值依次為4,4,10,6。7、求解逗號表達式x=a=3,6*a后,表達式值、x、a的值依次為18,3,3。8、數學式a/(b*c)的C語言表達式a/b/c。9、若有語句inti=-19,j=i%4;printf("%d\n",j);則輸出結果是______。答案:-310、設y是int型變量,請寫出判斷y為奇數的關系表達式_y%2_____。CH3順序程序設計3.1選擇題1.如果inta=3,b=4;則條件表達式"a<b?a:b"的值是__A__。A)3B)4C表達式1?表達式2:表達式3先計算表達式1,若表達式1成立,則選擇計算表達式2,并表達式2的值作為整個大表達式的值;若表達式1不成立,則選擇計算表達式3,并將表達式3的值作為整個大表達式的值此題中的a<b相當于表達式1,a相當于表達式2,b相當于表達式3.a為3,b為4。a<b表達式1成立,因此計算表達式2,并將表達式2的值即a中的值,并作為整個表達式的值,因此整個表達式的值為32.若intx=2,y=3,z=4則表達式x<z?y:z的結果是(B).A)4B)3C)2D)0E)13.C語言中,關系表達式和邏輯表達式的值是(B)。 A)0B)0或1C)1D)‘T’4.下面(D)表達式的值為4.
A)11/3
B)11.0/3
C)(float)11/3
D)(int)(11.0/3+0.5)(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型。(2)不同數據類型的元素進行數學運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型。選項A,11與3為兩個整數,11/3結果的數據類型也應為整數,因此將3.666666的小數部分全部舍掉,僅保留整數,因此11/3=3.選項B,11.0為實數,3為整數,因此首先要統一數據類型,將整型數據3轉換為3.0,轉換后數據類型統一為實型數據,選項B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項B11.0/3=3.666666選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3,其后計算過程、結果與選項B同選項D,首先計算11.0/3,其計算過程、結果與選項B同,得到3.666666;再計算3.666666+0.5=4.166666,最后將4.166666強制類型轉換為整型,即將其小數部分全部舍掉,結果為45.設整型變量a=2,則執行下列語句后,浮點型變量b的值不為0.5的是(B)A.b=1.0/aB.b=(float)(1/a)C.b=1/(float)aD.b=1/(a*1.0)6.若“intn;floatf=13.8;”,則執行“n=(int)f%3”后,n的值是(AA.1B.4C.4.333333D.4.6“(int)f“表示將f中的值強制類型轉換為整型,即將13.8的小數部分舍掉,轉換為13;然后計算13%3,結果為1,再將結果賦給變量n,因此n的值為17.有如下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運行后輸出結果是___B___。A、16516.5B、1651.56.5C、1651.06.5D、2651.56.58.若變量a、i已正確定義,且i已正確賦值,合法的語句是___B___。A、a==1B、++i;C、a=a++=5;D、a=int(i);9.若變量已正確定義并賦值,下面符合C語言語法的表達式是__B____。A、a:=b+1B、a=b=c+2C、int18.5%3D、a=a+7=c+b10.設變量x為float型且已賦值,則以下語句中能將x中的數值保留到小數點后兩位,并將第三位四舍五入的是__C____。A、x=x*100+0.5/100.0B、x=(x*100+0.5)/100.0C、x=(int)(x*100+0.5)/100.0???D、x=(x/100+0.5)*100.011.若k是int型變量,且有下面的程序片段k=-3if(k<=0)printf("####")elseprintf("&&&&");上面程序片段的輸出結果是___D___。A、####B、&&&&C、####&&&&D、有語法錯誤,無輸出結果12.以下4個選項中,不能看作一條語句的是___D___。A、{;}B、a=0,b=0,c=0;C、if(a>0);D、if(b==0)m=1;n=2;???13.有以下程序main(){inta=0,b=0;a=10;/*給a賦值*/b=20;/*給b賦值*/printf("a+b=%d\n",a+b);}程序運行后的輸出結果是___B___。A、a+b=10B、a+b=30C、30D、出錯14.當c的值不為0時,在下列選項中能正確將c的值賦給變量a、b的是____C__。A、c=b=a;B、(a=c)‖(b=c);C、(a=c)&&(b=c);D、a=c=b;15.以下選項中非法的表達式是___D___。A、0<=x<100B、i=j==0C、(char)(65+3)D、x+1=x+116.以下程序的輸出結果是___B___。#include<stdio.h>7main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);???}A、6,1B、2,1C、6,0D、2,017.以下循環體的執行次數是___C___。main(){inti,j;for(i=0,j=1;i<=j+1;i+=2,j--)printf("%d\n",i);}A、3B、2C、1D、0答案:C18.有以下定義語句doublea,b;intw;longc;若各變量已正確賦值,則下列選項中正確的表達式是___C___。A、a=a+b=b++B、w%((int)a+b)C、(c+w)%(int)aD、w=a=b;19.以下能正確計算定義且賦初值的語句是___B___。A、intn1=n2=10;B、charc=32;C、fioatf=f+1.1;D、doublex=12.3E2.520.以下合法的賦值語句是___B___。A、x=y=100B、d--;C、x+y;D、c=int(a+b);21.下列語句中符合C語言語法的賦值語句是___D___。A、a=7+b+c=a+7;B、a=7+b++=a+7;C、a=7+b,b++,a+7D、a=7+b,c=a+7;22.請選出合法的C語言賦值語句___B___。A、a=b=58B、i++;C、a=58,b=58D、k=int(a+b);23.下面程序的輸出是___C___。main(){intx=10,y=3;printf("%d\n",y=x/y);}A、0B、1C、3D、不確定的值24.已知字母A的ASCII碼為十進制的65,下面程序的輸出是___A___。main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}A、67,DB、B,CC、C,DD、不確定的值25.下列程序的運行結果是___B___。#include<stdio.h>main(){inta=2,c=5;printf("a=%d,b=%d\n",a,c);}A、a=%2,b=%5B、a=2,b=5C、a=d,b=dD、a=%d,b=5d26.以下程序的輸出結果是___D___。#include<stdio.h>main(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);}A、a=%2,b=%5B、a=2,b=5C、a=%%d,b=%%dD、a=%d,b=%d27.有以下程序main(){intx=102,y=012;printf("%2d,%2d\n",x,y);}執行后輸出結果是___C___。A、10,01B、02,12C、102,10D、02,1028.有以下程序main(){inta=666,b=888;printf("%d\n",a,b);}程序運行后的輸出結果是___B___。A、錯誤信息B、666C、888D、666,88829.有以下程序#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是___A___。A、變量C1被賦予字符a,c2被賦予回車符B、程序將等待用戶輸入第2個字符C、變量c1被賦予字符a,c2中仍是原有字符2D、變量c1被賦予字符a,c2中將無確定值30.執行下列程序時輸入:123<空格>456<空格>789<回車>,輸出結果是___D___。main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}A、123,456,789B、1,456,789C、1,23,456,789D、1,23,45631.有定義語句:intb;charc[10];,則正確的輸入語句是__B____。A、scanf("%d%s",&b,&c);B、scanf("%d%s",&b,c);C、scanf("%d%s",b,c);D、scanf("%d%s",b,&c);32.若要求從鍵盤讀入含有空格字符的字符串,應使用函數___B___。A、getc()B、gets()C、getchar()D、scanf()33.有以下程序#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)___D___。123<回車>45678<回車>則輸出結果是A、1267B、1256C、1278D、124534.有以下程序main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想從鍵盤上輸入數據,使變量m中的值為123,n中的數值為456,p中的值為789,則正確的輸入是___A___。A、m=123n=456p=789B、m=123n456p=789C、m=123,n=456,p=789D、12345678935.有以下程序段intm=0,n=0;charc='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若從鍵盤上輸入:10A10<回車>,則輸出結果是___A___。A、10,A,10B、10,a,10C、10,a,0D、10,A,036.有定義語句:intx,y;,若要通過scanf("%d,%d",&x,&y);語句使變量x得到數據11,變量y得到數值12,下面四組輸入形式中,錯誤的是___A___。A、1112<回車>B、11,12<回車>C、11,12<回車>D、11,<回車>12<回車>37.若有以下定義和語句charc1='b',c2='e';printf("%d,%c\n",c2-c1,c2-'a'+'A');則輸出結果是:__B____。A、2,MB、3,EC、2,ED、輸出項與對應的格式控制不一致,輸出結果不確定38.已定義c為字符型變量,則下列語句中正確的是__C____。A、c='97';B、c="97";C、c=97;D、c="a";39.數字字符0的ASCII值為48,若有以下程序___C___。main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}程序運行后的輸出結果是A、3,2B、50,2C、2,2D、2,5040.以下程序的輸出結果是___A___。main(){charc='z';printf("%c",c-25);}A、aB、ZC、z-25D、y41.若變量a是int類型,并執行了語句:a='A'+1.6;,則正確的敘述是______。A、a的值是字符CB、a的值是浮點型C、不允許字符型和浮點型相加D、a的值是字符'A'的ASCII值加上142.下列程序執行后的輸出結果是___A___。main(){intx='f';printf("%c\n",'A'+(x-'a'+1));}A、GB、HC、ID、J43.以下程序的輸出結果是___B___。main(){inti;for(i='A';i<'I';i++,i++)printf("%c",i+32);printf("\n");}A、編譯不通過,無輸出B、acegC、acegiD、abcdefghi44.有如下程序#include<stdio.h>main(){printf("%d\n",NULL);}程序運行后的輸出結果是__A____。A、0B、1C、-1D、NULL沒定義,出錯45.設有說明語句:chara='\72';則變量a___A___。A、包含1個字符B、包含2個字符C、包含3個字符D、說明不合法46.當把以下四個表達式用作if語句的控制表達式時,有一個選項含義不同,這個選項是______。A、K%2B、K%2==1C、(K%2)!=0D、!K%2==147.以下敘述中錯誤的是___C___。A、C語句必須以分號結束B、復合語句在語法上被看作一條語句C、空語句出現在任何位置都不會影響程序運行D、賦值表達式末尾加分號就構成賦值語句48.若變量x、y已正確定義并賦值,以下符合C語言語法的表達式是___A___。A、++x,y=x--B、x+1=yC、x=x+10=x+yD、double(x)/1049.以下敘述中正確的是___A___。A、C程序中注釋部分可以出現在程序中任意合適的地方B、花括號“{”和“}”只能作為函數體的定界符C、構成C程序的基本單位是函數,所有函數名都可以由用戶命名D、分號是C語言之間的分隔符,不是語句的一部分50.假設變量a,b均為整型,表達式(a=5,b=2,a>b?a++:b++,a+b)的值是()。A7B8C9D251.設a為int型變量,執行下列賦值語句后,a的取值分別是()。a=125.534;a=(int)125.521%4;a=5<<2;A125,31,1B125,1,20C125,31,20D125.534,2,2052.以下程序的輸出結果為()。#defineADD(x)x*xmain(){inta=4,b=6,c=7,d=ADD(a+b)*c;printf("d=%d",d);}Ad=70Bd=80Cd=140Dd=7003.2讀程序讀程序寫出結果,或者在程序的空白處填入正確代碼。1.有如下程序#include"stdio.h"main(){charc;c=getchar();while(c!='?'){putchar(c);c=getchar();}}如果從鍵盤輸入abcde?fgh(回車)運行結果為:abcde2.有如下程序#include<stdio.h>main(){charc;while((c=getchar())!=’$’){if(‘A’<=c&&c<=‘Z’)putchar(c);elseif(‘a’<=c&&c<=‘z’)putchar(c-32);}}當輸入為ab*AB%cd#CD$時,運行結果為:ABABCDCD3.以下程序的輸出結果是______。main(){inta=0;a+=(a=8);printf("%d\n",a);}答案:164.若有定義:inta=10,b=9,c=8;接著順序執行下列語句后,變量b中的值是______。c=(a-=(b-5));c=(a%11)+(b=3);答案:35.以下程序段的輸出結果是______。inti=9;printf("%o\n",i);答案:116.有以下程序#include<stdio.h>main(){charch1,ch2;intn1,n2;ch1=getchar();ch2=getchar();n1=ch1-'0';n2=n1*10+(ch2-'0');printf("%d\n",n2);}程序運行時輸入:12<回車>,執行后輸出結果是______。答案:127.以下程序運行后的輸出結果是______。main(){charm;m='B'+32;printf("%c\n",m);}答案:b8.已知字母A的ASCII碼為65.以下程序運行后的輸出結果是______。main(){chara,b;a=’A’+’5’-‘3’;b=a+’6’-‘2’;printf(“%d%c\n”,a,b);}答案:67G9.若有以下程序main(){chara;a='H'-'A'+'0';printf("%c\n",a);}執行后輸出結果是______。答案:710.以下程序運行后的輸出結果是______。main(){inta=012,b=0x12,k=12;charc=‘\102’,d=‘\r’;printf(“a=%d\tb=%d\tk=%d\n”,a,b,k);printf(“c=%c,d=%c%o\n”,c,d,a);a=‘A’;c=49;printf(“a=%d\tc=%c\n”,a,c);}11.以下程序運行后的輸出結果是______。main(){inti=29,j=6,k=2,s;s=i+i/j%k-9;printf(“s=%d\n”,s);}12.以下程序運行后的輸出結果是______。main(){char*s2=“IloveChina!”,**s1=&s2;char*s3,c,*s4=“w”;s3=&c;*s3=‘H’;s2=s2+2;printf(“%s\t%c\t%s\t%c\n”,s2,*s3,s4,**s1);}3.3程序改錯畫橫線的代碼有誤,請寫出正確的代碼1.從鍵盤輸入整數x的值,并輸出y的值.main(){floatx,y;scanf(“%d”,&x);y=3.5+x;printf(“y=%d”);}正確的:intx;floaty;printf(“y=%f”,y);
CH4選擇結構程序設計4.1讀程序1.有如下代碼:#include<stdio.h>main(){charch;ch=getchar();switch(ch){case‘A’:printf(“%c”,’A’);case‘B’:printf(“%c”,’B’);break;default:printf(“%s\n”,”other”);}}當從鍵盤輸入字母A時,運行結果為:AB詳見switch語句switch(表達式){ case常量1:語句1case常量2:語句2┇┇┇case常量n:語句ndefault:語句n+1}其中表達式,常量1,…,常量n都為整型或字符型case相當于給出執行程序的入口和起始位置,若找到匹配的常量,則從此處開始往下執行程序,不再匹配常量,直至遇到break或switch結束本題過程:首先從鍵盤接收一個字符’A’并將其放在變量ch中。執行switch語句。Switch后面的條件表達式為ch,因此表達式的值即為字符’A’.用字符’A’依次與下面的case中的常量匹配。與第1個case后的常量匹配,則從其后的語句開始往下執行程序(在執行過程中不再進行匹配。)因此先執行printf(“%c”,’A’),屏幕上輸出A;再往下繼續執行printf(“%c”,’B’),屏幕上輸出B;再繼續執行break,此時跳出switch語句。2.有如下代碼:#include<stdio.h>main(){inta=1,b=0;scanf(“%d”,&a);switch(a){case1:b=1;break;case2:b=2;break;default:b=10;}printf("%d",b);}若鍵盤輸入5,運行結果為:10本題過程:首先用scanf函數為變量a賦值為5。執行switch語句。switch后面的條件表達式為a,因此表達式的值即為5.用5依次與下面case中的常量匹配。沒有找到匹配的常量,因此兩個case后的語句都不執行。執行default后面的語句b=10;將10賦給變量b。輸出變量b,結果為103.有如下代碼:#include<stdio.h>main()_{chargrade=’C’;switch(grade){case‘A’:printf(“90-100\n”);case‘B’:printf(“80-90\n”);case‘C’:printf(“70-80\n”);case‘D’:printf(“60-70\n”);break;case‘E’:printf(“<60\n”);default:printf(“error!\n”);}}運行結果為:70-8060-70本題過程:首先從鍵盤接收一個字符’C’并將其放在變量grade中。執行switch語句。switch后面的條件表達式為grade,因此表達式的值即為字符’C’.用字符’C’依次與下面的case中的常量匹配。與第3個case后的常量匹配,則從其后的語句開始往下執行程序(在執行過程中不再進行匹配。)因此先執行printf(“70-80\n”);,屏幕上輸出70-80,并換行;再往下繼續執行printf(“60-70\n”),屏幕上輸出60-70,并換行;再繼續執行break,此時跳出switch語句。4.在嵌套使用if語句時,C語言規定else總是___C___。A、和之前與其具有相同縮進位置的if配對B、和之前與其最近的if配對C、和之前與其最近的且不帶else的if配對D、和之前的第一個if配對5.假定所有變量均已正確說明,下列程序段運行后x的值是___B___。a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;A、34B、4C、35D、36.有如下程序main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}該程序的輸出結果是___C___。A、0B、1C、2D、37.有以下程序main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結果是___D___。A、0B、4C、6D、78.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}執行后輸出結果是___A___。A、011122B、012C、012020D、1209.如下程序main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出的結果是___A___。A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=210.以下程序的輸出結果是___A___。main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf("%d\n",a);}A、31B、13C、10D、2011.下列敘述中正確的是___D___。A、break語句只能用于switch語句B、在switch語句中必須使用defaultC、break語句必須與switch語句中的case配對使用D、在switch語句中,不一定使用break語句12.設a為整型變量,不能正確表達數學關系:10<a<15的C語言表達式是___A___。A、10<a<15B、a==11||a==12||a==13||a==14C、a>10&&a<15D、!(a<=10)&&!(a>=15)13.以下程序的輸出結果是___A___。main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A、1B、0C、非0的數D、-114.語句:printf("%d",(a=2)&&(b=-2));的輸出結果是___D___。A、無輸出B、結果不確定C、-1D、115.設a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為___C___。A、0B、1C、2D、316.若變量c為char類型,能正確判斷出c為小寫字母的表達式是__D____。A、'a'<=c<='z'B、(c>='a')||(c<='z')C、('a'<=c)and('z'>=c)D、(c>='a')&&(c<='z')17.能正確表示邏輯關系:“a≥10或a≤0”的C語言表達式是___D___。A、a>=10ora<=0B、a>=0|a<=10C、a>=10&&a<=0D、a>=10||a<=1018.有如下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序運行后的輸出結果是___C___。A、0,0B、0,1C、1,0D、1,119.設intx=1,y=1;表達式(!x||y--)的值是___B___。A、0B、1C、2D、-120.設有定義:inta=2,b=3,c=4;,則以下選項中值為0的表達式是___A___。A、(!a==1)&&(!b==0)B、(a<b)&&!c||1C、a&&bD、a||(b+b)&&(c-a)21.若要求在if后一對圓括號中表示a不等于0的關系,則能正確表示這一關系的表達式為__D___。A、a<>0B、!aC、a=0D、a22.有如下程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');執行該程序段后,x的值為___D___。A、trueB、falseC、0D、123.能正確表示a和b同時為正或同時為負的邏輯表達式是___D___。A、(a>=0‖b>=0)&&(a<0‖b<0)B、(a>=0&&b>=0)&&(a<0&&b<0)C、(a+b>0)&&(a+b<=0)D、a*b>024.以下程序的輸出結果是___C___。main(){inta=5,b=4,c=6,d;printf("%d\n",d=a>b?(a>c?a:c):(b));}A、5B、4C、6D、不確定25.若整型變量a、b、c、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是____A__。A、1B、2C、3D、426.若有定義intx,y;并已正確給變量賦值,則以下選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是___C___。A、(x-y>0)B、(x-y<0)C、(x-y<0||x-y>0)D、(x-y==0)27.有以下程序段intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?k:b;執行該程序段后,k的值是___B___。A、3B、2C、1D、028.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是___A__。A、if((a>b)&&(b>c))k=1;elsek=0;B、if((a>b)||(b>c))k=1;elsek=0;C、if(a<=b)k=0;elseif(b<=c)k=1;D、if(a>b)k=1;elseif(b>c)k=1;elsek=0;29.假定w、x、y、z、m均為int型變量,有如下程序段:w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;則該程序執行后,m的值是___D___。A、4B、3C、2D、130.下面程序的輸出結果是___A___。#include<stdio.h>main(){inti=2;printf("%d",f(i,i+1));}intf(inta,intb){intc;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}A、-1B、0C、1D、231.下面的程序運行結果為___D___。main(){intx=3,y=0,z=0;if(x=y+z)printf("****");elseprintf("####");}A、有語法錯誤不能通過編譯B、輸出****。C、可以通過編譯,但是不能通過連接,因而不能運行。D、輸出####。32.若執行以下程序時從鍵盤上輸入9,則輸出結果是____B__。main(){intn;scanf("%d",&n);if(n++<10)printf("%d\n",n);elseprintf("%d\n",n--);}A、11B、10C、9D、833.下列條件語句中,功能與其他語句不同的是___D___。A、if(a)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);34.以下程序運行后的了輸出結果是______。main(){inta=1,b=2,c=3;if(c=a)printf("%d\n",c);elseprintf("%d\n",b);}答案:135.以下程序運行后的輸出結果是______。main(){inta=1,b=3,c=5;if(c=a+b)printf("yes\n");elseprintf("no\n");}答案:yes36.若從鍵盤輸入58,則以下程序輸出的結果是______。main(){inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}答案:58585837.以下程序的輸出結果是______。main(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);}答案:038.若有以下程序main(){intp,a=5;if(p=1!=0)printf("%d\n",p);elseprintf("%d\n",p+2);}執行后輸出結果是______。答案:139.表示條件:10<x<100或x<0的C語言表達式是______。答案:(x>10&&x<100||x<0)40.若已知a=10,b=20,則表達式!a<b的值為______.答案:141.表示“整數x的絕對值大于5”時值為“真”的C語言表達式是______。答案:x>5||x<-542.以下程序運行后的輸出結果是______。main(){intp=30;printf("%d\n",(p/3>0?p/10:p%3));}答案:343.以下程序運行后的輸出結果是______。main(){intx,a=1,b=2,c=3,d=4;x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;printf("%d\n",x);}答案:14.2程序填空1.輸入一個字符,判斷該字符是數字、字母、空格還是其他字符。main(){charch;ch=getchar();if(ch>=’a’&&ch<=’z’||ch>=’A’&&ch<=’Z’)printf("ItisanEnglishcharacter\n");elseif(ch>=’0’&&ch<=’9’)printf("Itisadigitcharacter\n");elseif(ch==‘’)printf("Itisaspacecharacter\n");elseprintf("Itisothercharacter\n");}第1空:字符在計算機中以ASCII碼的形式存儲。所以當輸入的字符,即ch中字符所對應的ASCII碼的范圍在英文字母的ASCII碼的范圍內即可,參照p377。由于英文字母又分為大寫字母和小寫字母,因此此處用一個邏輯或表達式,表示ch中是小寫字母或者大寫字母,都能使得表達式成立。ch>=97&&ch<=122||ch>=65&&ch<=90 需要注意的是,對于本題區間所對應的表達式,不可寫作97<=ch<=122,也不可寫作’A’<=ch<=’Z’.對于97<=ch<=122因為在計算此表達式時的順序是從左向右,因此先計算97<=ch。無論ch中的取值如何,表達式97<=ch的值只有兩種情況:0或1.所以無論是0還是1,都小于122,因此97<=ch<=122恒成立。第3空,判斷ch中是否為空格,也是通過ch中字符與空格字符的ASCII碼來判斷。在判斷表達式的值是否相等時,用關系符號==;不要用賦值符號=。2.輸入x、y兩個整數,按先大后小的順序輸出x、y。#include“stdio.h”main(){intx,y,*px,*py,(1);scanf(“%d%d”,&x,&y);(2);(3);if(x<y){p=px;px=py;py=p;}printf(“x=%d,y=%d\n”,x,y);printf(“MAX=%d,MIN=%d\n”,*px,*py);}4.3程序改錯1.編程計算下面分段函數,輸入x,輸出ymain(){intx,y;printf(“\nInputx:\n”);scanf(“%d”,x);//錯誤同上題scanfif(x<0)y=x-1;elseif(x>=0||x<=10)//||表示邏輯或,當左邊表達式成立或者右邊表達式成立時,整個表達式成立。&&表示邏輯與,當左邊表達式和右邊表達式同時成立時,整個表達式成立。此處用邏輯表達式來表示x的區間[0,10],因此應改用邏輯與符號y=2x-1;//C語言中乘號不能省略,且用*表示乘法運算elsey=3x-1;//C語言中乘號不能省略,且用*表示乘法運算printf(“y=%d”,&y);//printf與scanf不用,printf后面給出的是變量名列表或表達式列表,無需地址符號}第一處改為:scanf(“%d”,&x);第二處改為:x>=0&&x<=10第三處改為:y=2*x-1;第四處改為:y=3*x-1;第五處改為:printf(“y=%d”,y);2.求100~300間能被3整除的數的和。main(){intn;longsum;//若定義變量的語句有錯誤,常見考點有兩個:(1)變量的類型,(2)在定義用于存放運算結果的變量時,一定要賦初值,一般賦值0或者循環初值。for(n=100,n<=300,n++)//for語句的格式,三個表達式之間用分號,且分號不可省略{if(n%3=0)//=是賦值符號,用于將右邊的值賦給左邊的變量;==是關系符號,用來判斷兩個值是否相等。改錯中if后面表達式中的賦值符號是常見的考點。sum=sum*n;}printf(“%ld”,sum);}第一處改為:longsum=0;第二處改為:for(n=100;n<=300;n++)第三處改為:if(n%3==0)第四處改為:sum=sum+n;
CH5循環結構程序設計5.1讀程序1.有如下程序#include<stdio.h>main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}運行結果為:123詳見教材循環結構當循環條件num<=2成立的時候,執行循環體{num++;printf("%d\n",num);}中的語句。循環初值num為0;循環條件num<=2成立第1次循環:執行num++;即將num中的值加1,執行后num為1; 執行printf("%d\n",num);在屏幕上輸出num中的值,即輸出1,之后換行此時num中的值為1,循環條件num<=2成立第2此循環:執行num++;即將num中的值加1,執行后num為2; 執行printf("%d\n",num);在屏幕上輸出num中的值,即輸出2,之后換行此時num中的值為2,循環條件num<=2成立第3此循環:執行num++;即將num中的值加1,執行后num為3; 執行printf("%d\n",num);在屏幕上輸出num中的值,即輸出3,之后換行此時num中的值為3,循環條件num<=2不成立,結束循環。2.有如下程序#include<stdio.h>main(){intsum=10,n=1;while(n<3){sum=sum-n;n++;}printf(“%d,%d”,n,sum);}運行結果為:3,7當循環條件n<3成立的時候,執行循環體{sum=sum-n;n++;}中的語句。循環初值sum為10,n為1;循環條件n<3成立第1次循環:執行sum=sum-n=10-1=9; 執行n++,即將n中的值加1,執行后n為2;此時n中的值為2,sum中的值為9,循環條件n<3成立,繼續執行循環第2次循環:執行sum=sum-n=9-2=7; 執行n++,即將n中的值加1,執行后n為3;輸出此時n,sum中的值,即為3,7。需要注意,在printf(“%d,%d”,n,sum);中要求輸出的數據彼此間用逗號間隔,因此結果的兩個數據間一定要有逗號3.有如下程序#include<stdio.h>main(){intnum,c;scanf("%d",&num);do{c=num%10;printf("%d",c);}while((num/=10)>0);printf("\n");}從鍵盤輸入23,則運行結果為:32詳見教材循環結構;復合的賦值運算符do{}while(表達式);先無條件執行循環體,再判斷循環條件。注意while(表達式)后有分號定義整型變量num,c;為num賦一個整型值;執行{c=num%10;printf("%d",c);}直到循環條件(num/=10)>0不成立;輸出換行已知為num賦值23第1次執行循環體執行c=num%10=23%10=3;執行printf("%d",c);輸出3判斷循環條件num/=10等價于num=num/10;因此num=23/10=2,2大于0,因此循環條件(num/=10)>0成立,繼續執行循環體。執行完第1次循環時,num為2,c為3第2次執行循環體執行c=2%10=2;執行printf("%d",c);再輸出2判斷循環條件num=2/10=0,0等于0,因此循環條件(num/=10)>0不成立。結束循環4.有如下程序#include<stdio.h>main(){ints=0,a=5,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d,%d\n",s,a);}若輸入的值1,運行結果為:2,1詳見教材循環結構;復合的賦值運算符執行{s+=1;a=a-2;}直到循環條件a!=n不成立;已知為n賦值1,s為0,a為5第1次執行循環體執行s+=1;等價于s=s+1=0+1執行a=a-2;a=5-2=3判斷循環條件,3不等于1,因此循環條件a!=n成立,繼續執行循環體。執行完第1次循環時,s為1,a為3第2次執行循環體執行s+=1;等價于s=s+1=1+1=2執行a=a-2;a=3-2=1判斷循環條件,1等于1,因此循環條件a!=n不成立,結束循環。執行完第2次循環時,s為2,a為1輸出此時s,a中的值,結果為2,15.有如下程序#include<stdio.h>main(){intx,y=0;for(x=1;x<=10;x++){if(y>=10)break;y=y+x;}printf(“%d%d”,y,x);}運行結果為:105詳見教材for語句詳見教材break,continue語句for(
表達式1;表達式2;表達式3){}(1)先求解表達式1(2)求解表達式2,若其值為真,執行循環體,然后執行(3).若為假,則結束循環,轉到(5)(3)求解表達式3(4)轉回上面(2)繼續執行(5)循環結束,執行for語句下面的一個語句break
,跳出循環體;continue,結束本次循環(第i次循環),繼續執行下一次循環(第i+1次循環)此題表達式1為x=1,表達式2(循環條件)為x<=10,表達式3為x++初值x為1,y為0,循環條件(即表達式2)x<=10成立,進入循環體第1次循環 執行if語句。0小于10,if語句的條件表達式不成立,不執行break;執行y=y+x;y=0+1=1轉向表達式3,執行x++,x=x+1=1+1=2。循環條件x<=10成立,進入第2次循環第2次循環 執行if語句。1小于10,if語句的條件表達式不成立,不執行break;執行y=y+x;y=1+2=3轉向表達式3,執行x++,x=x+1=2+1=3。循環條件x<=10成立,進入第3次循環第3次循環 執行if語句。3小于10,if語句的條件表達式不成立,不執行break;執行y=y+x;y=3+3=6轉向表達式3,執行x++,x=x+1=3+1=4。循環條件x<=10成立,進入第4次循環第4次循環 執行if語句。6小于10,if語句的條件表達式不成立,不執行break;執行y=y+x;y=6+4=10轉向表達式3,執行x++,x=x+1=4+1=5。循環條件x<=10成立,進入第5次循環第5次循環 執行if語句。10等于10,if語句的條件表達式成立,執行break,跳出循環。從break跳出至for語句的下一條語句。執行printf(“%d%d”,y,x);輸出當前的y與x.結果為1056.有如下程序#include<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0){printf(%d”,--y);}}運行結果為:852詳見教材,自增自減符號此題表達式1被省略,表達式2(循環條件)為y>0,表達式3為y--初值y為9,循環條件(即表達式2)y>0成立,進入循環體第1次循環 執行if語句。9%3==0,if語句的條件表達式成立,執行printf(%d”,--y),即y先自減1變為8,然后在輸出,因此屏幕上輸出8轉向表達式3,執行y--,y=y-1=8-1=7。循環條件y>0成立,進入第2次循環第2次循環 執行if語句。7%3不為0,if語句的條件表達式不成立,不執行printf(%d”,--y)轉向表達式3,執行y--,y=y-1=7-1=6。循環條件y>0成立,進入第3次循環第3次循環 執行if語句。6%3==0,if語句的條件表達式成立,執行printf(%d”,--y),即y先自減
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 200MW風電項目可行性研究報告(模板范文)
- 二零二五版汽車擔保服務合同
- 二零二五版股權轉讓協議書醫療美容
- 范文論物業服務合同的當事人
- 培訓公司簡介
- 含二異氰酸酯端基的預聚體企業縣域市場拓展與下沉戰略研究報告
- 網殼鋼結構企業ESG實踐與創新戰略研究報告
- 腳踏自行車企業ESG實踐與創新戰略研究報告
- 吸污機企業ESG實踐與創新戰略研究報告
- 休閑專用車企業縣域市場拓展與下沉戰略研究報告
- 2024年濰坊市技師學院招聘筆試真題
- 匯能控股集團內蒙古卓正煤化工有限公司招聘筆試題庫2025
- 福建省龍巖市龍巖市一級校2024-2025學年高一下學期4月期中聯考數學試題(含答案)
- 北京市豐臺區2025屆高三下學期3月一模試題 英語 含解析
- 飾品工廠知識培訓課件
- 中國時尚產業的發展趨勢分析
- VDA6.3-2023版培訓教材課件
- 2025河北保定鈔票紙業有限公司人員招聘29人筆試參考題庫附帶答案詳解
- 2024-2025學年七年級數學湘教版(2024)下學期期中考試模擬卷B卷(含解析)
- 2025有關房屋買賣合同書模板
- 高++中語文++高考復習+語言文字運用之錯別字
評論
0/150
提交評論