版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章C語言程序設計同步練習指導簡介:本章從歷屆“國家計算機等級考試二級C語言筆試”試題中精選出典型的試題,按照C語言程序設計教學內容編排,供學生們邊學習邊練習,達到即學即會,舉一反三,觸類旁通的效果。C語言基本知識考試要求一、C語言的結構.C語言源程序的構成,main函數(shù)和其他函數(shù).頭文件、數(shù)據(jù)說明、函數(shù)的開始和結束.源程序的書寫格式.C語言的風格二、數(shù)據(jù)類型及其運算.C語言的數(shù)據(jù)類型(基本類型、構造類型、指針類型、空類型)及其定義方法.C語言運算符的種類、優(yōu)先級和結合性.不同類型數(shù)據(jù)之間的轉換與運算.各種類型的C語言表達式(賦值表達式、算術表達式、關系表達式、邏輯表達式、條件表達式、逗號表達式)及其計算規(guī)則要點指導.C語言源程序的構成、main函數(shù)和其它函數(shù)每個C語言程序都是由若干個函數(shù)組成的,這其中包含一個“主函數(shù)"main。和其它函數(shù)。其它函數(shù)包括用戶編寫的函數(shù)和C語言本身提供的標準庫函數(shù)。程序的運行總是從main。函數(shù)開始執(zhí)行。函數(shù)是C程序的基本單位。.函數(shù)的組成每個函數(shù)是由函數(shù)說明部分和函數(shù)體兩部分組成的。函數(shù)的說明部分包括函數(shù)名、函數(shù)的形式參數(shù)、函數(shù)的值的類型等。函數(shù)體是由大括號{}括起的部分,由變量定義和執(zhí)行部分組成。函數(shù)的執(zhí)行部分是由C語句組成的。這些C語句是按照結構組成起來的,這些結構有三類即順序結構、選擇結構和循環(huán)結構。結構之間可以并列和嵌套。.頭文件包含頭文件的格式:include"頭文件名"或include<頭文件名〉例如: #include"stdio.h"它的作用是將文件stdio.h的內容插入在#include"stdio.h"所在的位置。當調用C語言標準函數(shù)庫中輸入輸出類函數(shù)時,要把頭文件stdio.h包含在程序的開頭;當調用C語言標準函數(shù)庫中數(shù)學類函數(shù)(如sin、sqrt)時,要把頭文件math.h包含在程序的開頭;.數(shù)據(jù)的說明C語言的數(shù)據(jù)分為常量和變量,常量可以直接使用,符號常量在使用前需要定義(宏定義),變量在使用前必須先定義名稱和類型。變量的定義格式為:類型名變量名;或類型名變量名=常量;.源程序的書寫格式C語言的書寫格式比較自由,一行可以寫幾條語句,一條語句可以寫在幾行里,每條語句和數(shù)據(jù)定義的最后一個字符必須是分號C語言的注釋信息格式為:/*注釋信息*/C語言區(qū)分字母的大、小寫。.C語言的風格語言簡練、使用方便:有32個關鍵字、9種控制語句;運算符豐富:32種運算符;數(shù)據(jù)類型豐富:有整型、實型、字符型、枚舉類型等基本數(shù)據(jù)類型,有數(shù)組、結構體、共用體等構造類型和指針類型,能夠實現(xiàn)復雜的數(shù)據(jù)結構;可直接訪問地址;可以進行位操作;可移植性好。.C語言的數(shù)據(jù)類型C語言的數(shù)據(jù)類型分為:基本類型、構造類型、指針類型、空類型。其中基本類型包含:整型(帶符號整型int、shortint.longint;無符號整型unsigned>unsignedshort,unsignedlong)實型(單精度型float、雙精度型double)字符型char枚舉類型C語言中int數(shù)據(jù)用2個字節(jié)(16位二進制數(shù))的補碼表示,表示整數(shù)的范圍是-32768到32767。unsigned數(shù)據(jù)用2個字節(jié)二進制數(shù)(16位二進制數(shù))表示,表示整數(shù)的范圍是0到65535。.運算符和表達式C語言程序是由若干個函數(shù)組成的,每個函數(shù)由函數(shù)說明部分和函數(shù)體兩部分組成的。函數(shù)體是由大括號{}括起的部分,由變量定義和執(zhí)行部分組成。函數(shù)的執(zhí)行部分是由C語句組成的。因此在學習C語言的過程中注意熟練掌握C語言中的各種語句,達到能夠靈活運用C語言中的各種語句。而構成C語句的核心是表達式,C語言中有算術表達式、賦值表達式、逗號表達式、關系表達式、邏輯表達式和條件表達式。而表達式是由常量、變量、函數(shù)和運算符構成的。C語言共有34個運算符,這些運算符的優(yōu)本級和縝合性十分重要,在學習中要牢記。C語言的運算符按照優(yōu)先級從高到低排列如下:優(yōu)先級運算符結合方向1()[]->.自左至右2!?++--(類型)*&sizeof自右至左3*/%算術運算符自左至右4+-算術運算符自左至右5??位操作運算符自左至右6<<=>>=關系運算符自左至右7=!=關系運算符自左至右8&位操作運算符自左至右9A位操作運算符自左至右101位操作運算符自左至右11&&邏輯運算符自左至右12II邏輯運算符自左至右13?:條件運算符自右至左14=+=-=*=/=%=?=&=賦值運算符自右至左15逗號運算符自左至右從而,C語言表達式的計算順序從高到低:算術表達式關系表達式邏輯表達式條件表達式賦值表達式逗號表達式.輸入輸出函數(shù)輸出函數(shù)printf字符輸出函數(shù)putchar輸入函數(shù)scanf字符輸入函數(shù)getchar常用格式編輯符:輸出整數(shù)格式編輯符%d%u%x%o輸出實數(shù)格式編輯符%f%e輸出字符和字符串格式編輯符%c%s同步練習.C語言中,int型數(shù)據(jù)在計算機內部是由( )表示的。答:int型數(shù)據(jù)在計算機內部是由16位補碼表示的。.下列可以作為C語言用戶標識符的是()oA)_123B)alb2c3C)intD)123abc答:A)和B)C語言標識符必須是以英文字母(a到z)、或者下劃線一開頭的字符串。字符串中只能包含英文字母、下劃線和數(shù)字(0到9)。但字符串不能是C語言中的32個保留字(例如int,short,long,unsigned,float,char.if.switch,for.while等)。.在C語言中,如果下面的變量都是int類型,則輸出的結果是( ).sum=pad=5,pAd=sum++,pAd++,++pAd;printf(*%d\n*,pad);答:輸出結果是5。因為C語言是字母大小寫敏感的,也就是說區(qū)分大小寫字母。pad和pAd是兩個不同的變量。.以下程序的輸出結果是()o#include<stdio.h>main()printf(%d\n”,NULL);答:o因為stdio.h頭文件中NULL的定義如下:ttdefineNULL0.下面程序的輸出是( )(.main(){intx=10,y=3;printf("%d\n",y=x/y);)答:3因為兩個同類型的數(shù)據(jù)作算術運算,其結果仍為該類型。即整數(shù)除以整數(shù),商仍為整數(shù)。10/3的商為3。.下面程序的輸出是( ).main(){intx=023;printf(*%d\n*,-x);)答:18因為023是一個八進制數(shù),表達式一x的值為022,按照%d帶符號的十進制數(shù)輸出,結果為18o注意:023是八進制數(shù);23是十進制數(shù);0x23是十六進制數(shù)。.在C語言中,不正確的int類型的常數(shù)是( ).A)32768 B)0 C)037D)OxAF答:A).執(zhí)行下面程序中的輸出語句后a的值是( ).main(){inta;printf("%d\n”,(a=3*5,a*4,a+5));)答:15因為在計算逗號表達式a=3*5,a*4,a+5時,依次計算下面3個表達式:a=3*5(結果變量a的值為15,該賦值表達式的值也為15)a*4(該算術表達式的值為60)a+5(該算術表達式的值為20,輸出函數(shù)printf輸出20)逗號表達式的值為20,但變量a的值認為15。.以下程序的輸出結果是( )。#include<stdio.h>main(){inta=2,c=5;printf("a=%%d,b=%%d\n”,a,c);)A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d答:D)因為厥是格式說明符,輸出%,其它原樣輸出。如果輸出函數(shù)語句改成printf(*a^%%%d,b=%%%d\n",,a,c):,那么輸出結果為A)。.以下程序的輸出結果是( )。#include<stdio.h>main(){inta,b,d=241;a=d/100%9;b=(-l)&&(-l);printf(*%d,%d\n*,a,b);}A)6,1 B)2,1 C)6,0 D)2,0答:B)241/100的值為2,2%9的值為2。(T)&&(-1)的值為1。在邏輯運算中,非。的值為真,真“與”真結果為真,關系和邏輯運算的結果如果為真用“1”表示,如果為假用“0”表示。.請選出以下語句的輸出結果( )?printf("%d\n",strlen(*\t\*\065\xff\n*));答:5函數(shù)strlen的功能是計算字符串長度。那么字符串"\t\"\065\xff\n”包含多少個字符呢?\t是橫向跳格字符;'"是字符";\065是ASCII碼值為八進制數(shù)065的字符;\xff是ASCII碼值為十六進制數(shù)Oxff的字符;\n是換行字符。該字符串共有5個字符。注意:記住常用的轉義字符。.下面程序的輸出結果是( )。inti=65536;printf("%d'n”,i);答:T因為int型變量i在C語言中是用16位補碼表示的,而65535變成二進制數(shù)為1111111111111111,因此i的值為1111111111111111,按照帶符號的十進制數(shù)機1輸出-1,因為1111111111111111是T的補碼。.若有說明和語句:inta=5;a++;此處表達式a++的值是( ).答:5表達式a++的值是5表達式計算后,變量a的值是6。.若k為int變量,則以下語句( ).k=8567;printf(*|%-06d|\n*?k);答:18567|兩個I原樣輸出,格式符%-06d說明輸出變量k的值長度為6且左對齊。.若x為float型變量,則以下語句()ox=213.82631;printf(*%-4.2f\n*,x);答:213.83.若x為double變量,則以下語句()ox=213.82631;printf("%-6.2e\n",x);答:2.14e+02.若ch為char型變量,k為int型變量(已知字符a的ASCII十進制代碼為97),則執(zhí)行下列語句ch='a*;k=12;printf("%x,%o,*,ch,ch,k);printf("k=%%d\n”,k);輸出為()。答:61,141,k=%d.若有以下定義:chars=,\092f;則該語句()。.使s的值包含1個字符.定義不合法,s的值不確定.使s的值包含4個字符.使s的值包含3個字符答:B)因為字符,\092,中的092應該是八進制數(shù),但八進制數(shù)中不可能出現(xiàn)9。.執(zhí)行以下語句后,輸出結果是( )?inta=1;printf(*%d,%d”,a,a++);答:2,1因為C語言中函數(shù)的實參計算順序是從右至左。即首先計算a++,然后計算a。.以下程序的輸出結果是( )?#include<stdio.h>main()(inti=010,j=10;printf("%d,%d\n”,++i,j—);)A)11,10B)9,10C)010,9D)10,9答:B)010是八進制數(shù)。.已知字母A的ASCII碼為65,以下程序的輸出結果是( ).#include<stdio.h>main(){charcl='A',c2='Y';printf(線d,%d\n”,cl,c2);)答:65,89.以下語句
inta=110,b=017;printf("%x,%d\n”,a++,++b);輸出結果是( )答:6e,16110的十六進制數(shù)為6e,八進制數(shù)017加1為020,等于十進制數(shù)16。.以下程序main(){inti=3,j=2,a,b,c;a=( i==j++)? i:++j;b=i++;J!printf("%d,%d,%d\n”,a,b,c);)輸出結果是( )答:1,1,3.請讀程序#include<stdio.h>main()inta;floatb,c;scanf("%2d%3f%4f”,&a,&b,&c);printf(*\na=%d,b=%f,c=%f”,a,b,c);若運行時從鍵盤上輸入9876543210<CR>(<CR>表示回車),則上面程序的輸出結果是( )答:a=98,b=765.000000,c=4321.000000.請讀程序片段(字符串內沒有空格字符):printf("%d\n”,strlen(*AST\n012\l\\*));上面程序的輸出結果是(答:上面程序的輸出結果是(答:9)o字符串中包含9個字符,分別是AST\n012\1\\o.以下程序的輸出結果是( )main(){inti=-1;printf("%d,%u\n”,i,i);}答:-1,655353.2選擇結構程序考試要求用if語句實現(xiàn)選擇結構用switch語句實現(xiàn)多分支選擇結構選擇結構的嵌套要點指導關系運算符、關系表達式邏輯運算符、邏輯表達式if語句三種形式:1.if(表達式)語句2.if(表達式)語句1else語句23.if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3elseif(表達式n)語句nelse語句n+1switch語句形式:switch(表達式)(case常量表達式1:語句1case常量表達式2:語句2case常量表達式n:語句ndefault: 語句n+1)break語句break語句的作用是本層結束循環(huán)或switch語句。選擇結構的嵌套3.2.3同步練習.判斷型char變量cl是否為小寫字母的正確表達式為()o'a'<=cl<='z'(cl>=a)&&(cK=z)Ca>>=cl)IICz>>=cl)(cl>=,a')&&{cl<=,z')答:D).程序的運行結果是()omain()(inta=l,b=2,c=3,d=4,m=2,n=2;(m=a>b)&&(n=c>d);printfn);)答:2首先計算m=a〉b,因為關系運算符)優(yōu)先級高于賦值運算符二,a>b的結果為假(0),賦值后m的值為0。因為C語言計算邏輯表達式0&&(n二c>d)時,已經(jīng)知道結果為0,因此n=c>d就不計算了。N的值仍為2。.執(zhí)行以下語句后a的值為( );b的值為()ointa,b,c;a=b=c=l;++a||++b&&++c;答:a的值為2;b的值為lo.程序的運行結果是()omain(){intx=10,y=20,z=30;if(x>y)z=x;x=y;y=z;printf(*%d,%d,%d”,x,y,z);}答:20,30,30因為if(x>y)z=x;x=y;y=z;是三條語句,即:if(x>y)z=x;x=y;y=z;而不是:if(x>y){z=x;x=y;y=z;}.程序的運行結果是()omain()(intm=5;if(m++>5)printfr%d\n",m);else printf("%d\n”,m--);}答:6因為表達式m++>5的值為假,m的值為6,執(zhí)行語句printf("%d\n為m-);時輸出6,m的值又變?yōu)?。。.程序的運行結果是( )。main()(inta=100,x=10,y=20,m=5,n=0;if(x<y)if(y!=m)
a=l;elseif(n)a=10;a=-l;printf("%d\n',a);答:T在if嵌套中,else總是與它上面最近的if結合,因此本程序變?yōu)?if(x<y){if(y!=m)a=l;elseif(n)a=10;}a=-l;最后變量a的值為-1。.若有條件表達式(exp)?a++:b—;則以下表達式中能完全等價于表達式(exp)的是( )A)(exp==O) B)(exp!=O)C)(exp==l) d)(exp!=l)答:B)因為表達式(exp)的意義是:當變量exp的值為。時表示假;當變量exp的值為非0時表示真。因此它與(exp!=O)等價。.程序的運行結果是( ).main()(intk=4,a=3,b=2,c=l;printf(*%d\n*,k<a?k:c<b?c:a);}答:1因為運算符?的結合性是自右至左。因此首先計算c〈b?c:a,結果為1,然后計算k〈a?k:l,結果仍為lo.已知A=7.5,B=2,C=3.6,表達式A>B&&C>A||!A<B&&!C>B的值是( )。答:0.當m=2,n=l,a=l,b=2,c=3時,執(zhí)行完d=(m=a!=b)&&(n=b>c)后,n=( ),m=( ),,答:n=0,m=1因為首先計算關系運算a!=b,結果為真即1,再計算賦值運算m=l:再計算b>c,結果為假即0,賦值n=0;最后d的值為假即0,.程序的運行結果是()omain()(intx,y,z;x=l;y=2;z=3;x=y-<=x||x+y!=z;printf(*%d,%d*,x,y);因為關系運算符優(yōu)先級高于邏輯運算符,因此首先計算y-<=x,結果表達式的值為假(0),y的值為1;再計算x+y!=z,結果為真(1),x的值為真(1)。.以下程序main()(inti=0,j=0,k=6;if((++i>0)||(++j>0))k++;printf(w%d,%d,%d\n”,i,j,k);}輸出結果是( )答:1,0,7首先計算++i>0,結果表達式的值為真,變量i的值為1。在計算(++j>0)時,因為結果為真(1),C語言不再計算表達式(++j>0)了。因為if()中的邏輯表達式值為真,因此計算k++,結果k值7。.程序的運行結果是( )。main(){inta=2,b=7,c=5;switch(a>0){case1:switch(b<0){case1:printf;break;case2:printf("!");break;}case0:switch(c==5){case0:printf(,z*z/);break;casel:printf("#");break;default:printf("?");break;)default:printf(zz&*);}printfC\n");}答:#&因為表達式a>0的值為真(1),計算case1:后面的語句switch(b<0){case1:printf("礦);break;case2:printf(zz!,z);break;)由于表達式b<0的值為假(0),因此本語句執(zhí)行結束。又由于本語句后面無break語句,因此繼續(xù)執(zhí)行switch(c==5){case0:printf(**^);break;case1:printf(zz#/z);break;default:printf("?");break;結果輸出#,由于上面的語句后面也無break語句,因此繼續(xù)執(zhí)行語句printf("&");輸出&..下面程序的輸出是( )。main(){inta=-l,b=4,k;k=(a++<=0)&&(!(b—<=0)):printf("%d%d%d\n”,k,a,b);}答:103關系表達式a++<=0的值為真(即1),因為首先判斷-l〈=0,然后執(zhí)行a++,變量a的值為0;關系表達式!(b-<=0)的值為真(即1),因為首先判斷4<=0,然后執(zhí)行b-,變量b的值為3,最后執(zhí)行邏輯非運算??;邏輯表達式6++<=0)&&(!(1)—<=0))的值為真(即1),執(zhí)行賦值運算后,變量k的值為1。.下面的程序片段所表示的數(shù)學函數(shù)關系是( ).y=-l;if(x!=0)if(x>0)y=l;elsey=0;A)y=T(x<0)B)y=1(x<0)C)y=0(x<0)D)y=-1(x<0)0(x=0)-1(x=0)-1(x=0)1(x=0)1(x>0)0(x>0)1(x>0)0(x>0)答:O.下面程序的輸出是( )(,main(){intx=100,a=10,b=20,okl=5,ok2=0;if(a<b)if(b!=15)if(!okl)
x=l;elseif(ok2)x=10;x=T;printfC%\n*?x);}A)-lB)0 C)1 D)下面定的值答:A)因為語句x=T;并不在if語句之中。.與y=(x>O?l:x〈O?-l:O)功能相同的if語句是( ),a)if(x>0)y=l; b)if(x)elseif(x<0)y=-l; if(x>0)y=l;elsey=0; elsey=-l;c)y=-l; d)y=0;if(x) if(x>0)if(x>O)y=l; if(x>0)y=l;elseif(x==0)y=0; elsey="l;elsey=-l;答:A).設a=6,b=-8,c=3,以下邏輯表達式的值為('d'&&(a>b)&&(b>c)&&(a-c)答:0 ).若執(zhí)行下面的程序時從鍵盤上輸入3和4,則輸出是()omain(){inta,b,s;scanf("%d%d”,&a,&b);s=a;if(a<b)s=b;s=s*s;printf("%d\n',s);)答:16.下面的程序main(){intx=3,y=0,z=0;if(x二y+z)printf("****");elseprintf('####");答:####.兩次運行下面的程序,如果從鍵盤上分別輸入6和4,則輸出的結果是( )。main(){intx;scanf("%d",&x);if(x++>5)printf(*%d*,x);elseprintf("%d\n",x—);)答:75.假定所有變量均已正確說明,下列程序段運行后x值是()oa=b=c=O;x=35;if(!a)x-;elseif(b);if(c)x=3;elsex=4;答:4該程序:a=b=c=O;x=35;if(!a)x—;elseif(b);if(c)x=3;elsex=4;.以下兩條if語句合并成一條if語句為()oif(a<=b)x=l;elsey=2;if(a>b)printf("****y=%d\n”,y);elseprintf二%d\n”,x);答:if(a<=b){x=l;printf二%d\n”,x);)else{y=2;printf("****y=%d\n〃,y);3.3循環(huán)結構程序考試要求for循環(huán)while循環(huán)dowhile循環(huán)goto語句continue語句和break語句循環(huán)的嵌套要點指導1.for循環(huán)結構for(表達式1;表達式2;表達式3)循環(huán)體熟練掌握for循環(huán)的執(zhí)行過程:①首先計算表達式1;②計算表達式2;③如果計算表達式2的值為真,則執(zhí)行循環(huán)體,計算表達式3,然后轉到②如果計算表達式2的值為假,則循環(huán)結束。表達式1主要作用是對循環(huán)條件的初始化,在循環(huán)開始時僅執(zhí)行一次。表達式2是判斷是否繼續(xù)循環(huán)的條件;每次執(zhí)行完循環(huán)體,都要計算表達式3,然后計算表達式2判斷是否繼續(xù)循環(huán)。.while循環(huán)結構while(表達式)循環(huán)體執(zhí)行過程:①計算表達式;②如果表達式的值為真,則執(zhí)行循環(huán)體,然后轉到①如果表達式的值為假,則循環(huán)結束。亦即當表達式為真時執(zhí)行循環(huán)體。.dowhile循環(huán)結構do循環(huán)體while(表達式);執(zhí)行過程:①執(zhí)行循環(huán)體;②計算表達式;③如果表達式的值為真,則轉到①如果表達式的值為假,則循環(huán)結束。即執(zhí)行循環(huán)體,當表達式值為真時繼續(xù)執(zhí)行循環(huán)體。.continue語句的作用是結束本次循環(huán)。break語句的作用是結束循環(huán)和結束switch語句。當循環(huán)是多層嵌套時,break語句的作用是結束本層循環(huán)。.循環(huán)的嵌套各種循環(huán)可以互相嵌套。3.3.3同步練習.下面程序段的運行結果是()ox=y=0;while(x<15)y++,x+=++y;printf("%d,%d”,y,x);答:8f20y++,x+=++y;是一個逗號表達式語句,首先計算y++,然后計算x+=++y。.程序的運行結果是(#include<stdio.h>main(){intc=0;while(c<=2){c++;printfC%d\n*,c);)}答:123.輸入2473<CR>,下面程序的運行結果是()o#include<stdio.h>main()(intc;while((c=getchar())!=,\n)switch(c-,2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}printf('\n");)答:668977第一次函數(shù)getcharO從鍵盤讀取字符2,變量c的值為字符2,因此c」2'的值為0,執(zhí)行case0:后面的語句putchar(c+4);和putchar(c+4);執(zhí)行break;語句后,switch語句執(zhí)行結束。此次輸出字符66o.下面程序段輸出結果為( )。intx=3;do{printf(*%d\n*,x-=2);}whi1e(!(-x));答:1-2.不是無限循環(huán)的語句為()ofor(y=0,x=l;x>++y;x=i++)i=x;for(;;x++=i);while(l){x++;}for(i=10;;i-)sum+=i;答:A).下面程序段的運行結果是()ofor(y=l;y<10;)y=((x=3*y,x+1),xT);printf("x二%d,y=%d*,x,y);答:x=15,y=14執(zhí)行完第1次循環(huán)后x=3 y=2執(zhí)行完第2次循環(huán)后x=6 y=5執(zhí)行完第3次循環(huán)后x=15y=14.程序的運行結果是()o#include<stdio.h>main(){inta,b;for(a=l,b=l;a<=100;a++){if(b>=20)break;if(b%3==l){b+=3;continue;}b-=5;}printf("%d'n",a);}答:88.下面程序段不是無限循環(huán)的是()ointi=100;while(l){i=i%100+l;if(i>100)break;}for(;;);intk=0;do{++k;}while(k>=0);ints=36;while(s);—s;答:C))i值只能是從1至IJ100之間變化,i>100永遠是假,因此break永遠也不會被執(zhí)行。)for循環(huán)語句的第2個表達式?jīng)]有,意味著永遠為真。0每次循環(huán)k的值加1,當k的值為32767時,再執(zhí)行++k,k的值變?yōu)?32768,循環(huán)結束。D)因為語句-s并不在循環(huán)中,while(s);永遠執(zhí)行一個空語句。.下面程序段( )?x=3;do{y=x-;if(!y){printf("*");continue;}printf("#");}while(K=x<=2);A)輸出## B)輸出##*C)無限循環(huán) D)含有不合法的控制表達式答:O第一次循環(huán)執(zhí)行丫=*一;后x和y的值分別為2和3,因此輸出1個#。執(zhí)行l(wèi)〈=x<=2時由于邏輯運算符<=的結合性是從左至右,因此首先計算結果為真(即1),然后計算1<=2,結果仍為真,再次執(zhí)行循環(huán)??梢钥闯鰺o論K=x為真(即1)或者為假(即0),K=x<=2的值始終為真,因此循環(huán)為無限循環(huán)。.程序的運行結果是( )。#include<stdio.h>main(){intk=0;charc='A';do{switch(c++){case'A':k++;break;case'B):k―;case'C':k+=2;break;case'D':k=k%2;continue;case'E':k=k*10;break;default:k=k/3;}k++;}while(c<*G');printf("k=%d\n”,k);}答:k=4第1次循環(huán)執(zhí)行前c=,A"k=0,循環(huán)執(zhí)行后c='Bz,k=2
c=,C,,k=4c=,D,,k=7c='E',k=lc='F',c=,C,,k=4c=,D,,k=7c='E',k=lc='F',k=llc='G',k=4.程序的運行結果是( )。main()(intt=l;fun(fun(t));)fun(inth)(staticinta[3]={l,2,3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf(*%d,a[k]);printf("\n");return(a[h]);}答:1,3,5,-L3,7,.程序的運行結果是()omain()(inti,j,a=0;for(i=0;i<2;i++){for(j=0;j<4;j++){if(j%2)break;a++;)a++;}printf("%d\n",a);}答:4.求兩個正整數(shù)的最大公約數(shù),填空。#include<stdio.h>main()(intr,m,n;scanf("%d%d〃,&in,&n);if(m<n) (1) ; /*填空*/r=m%n;while(r){m=n;n=r;r=(2);}/*填空*/printf("%d\n',n);答:(1){r=m;m=n;n=r;}m%n輾轉相除法求兩個正整數(shù)的最大公約數(shù)。.程序的運行結果是( )。#include<stdio.h>main(){inti,x,y;i=x=y=O;do{++i;if(i%2!=0){x=x+i;i++;}y=y+i++;}while(i<=7);printf(*x=%d,y=%d\n*,x,y);)答:x=l,y=20.程序的運行結果是()omain(){intx=10,y=10,i;for(i=0;x>8;y=++i)printf(*%d,%d,”,x一,y);}A)10,1,9,2, B)9,8,7,6,C)10,9,9,0, D)10,10,9,1,答:D).下面程序的功能是計算1-3+5-7+...-99+101的值,請?zhí)羁铡?include<stdio.h>main()(inti,t=l,s=0;for(i=l;i<=101;i+=2){ ⑴ ;s=s+t;(2) ;}/*填空*/printf("刎\n",s);}答:(1)t=t*it=-t.程序的運行結果是( )?#include<stdio.h>main(){inti,k=0;for(i=l;;i++){k++;while(k<i*i){k++;if(k%3==0)gotoloop;))loop:printf("%d,%d*,i,k);)答:2,318.以下程序是利用互減法求三個自然數(shù)的最大公約數(shù),請?zhí)羁铡?include<stdio.h>main()(inta,b,i;printf("Enterthefirstnumbertoa:");scanf("%d",&a);for(i=l;i<3;i++){printfC/Enternextnumber:");scanf("%d”,&b);a=gcd(a,b);)printf("Thegreatestcommondivisoris%d\n”,a);)intgcd(intx,inty){if(x>y); /*填空*/elseif(x<y=; /*填空*/elsereturnx;}答:(1)gcd(x-y,y)(2)gcd(x,y-x)19.以下程序通過命令行參數(shù)將命令行中給出的若干個字符串連接起來并輸出到屏幕上。程序文件名為p9.c,執(zhí)行該程序的命令是:p9abed9712請?zhí)羁詹懗鲚敵鼋Y果。/*p9.c*/#include<stdio.h>char*hx(char*sl,char*s2){char*temp;temp=si;while(*sl)sl++;while(*s2){CD; /*填空*/sl++;s2++;)*sl=z\Of;returntemp;}main(intargc,char*argv[]){inti;for(i=l;(2) ;i++)/*填空*/hs(argv[i], (3) );/*填空*/printf("%s\n”,argv[1]);}答:(1)*sl=*s2i<argc-largv[i+l]程序的輸出結果為abcd9712.請寫出以下程序的運行結果()o#include<stdio.h>main()(char**pd;staticchar*d[]={"up","down","left","right",“"};pd=d;while(**pd!=NULL)printf("%s\n",*pd++);}答:updownleftright.若i為整型變量,i=0;while(i=0)i++;則以上循環(huán)A)執(zhí)行10次 B)執(zhí)行1次C)一次也不執(zhí)行 D)無限循環(huán)答:C)因為i=0是賦值表達式,其值為0即假,而非條件表達式i==0。.下面的程序中有錯誤的是()e(每行程序前面的數(shù)字是行號)。#include<stdio.h>main()3{floata[3]={0.0};inti;for(i=0;i<3;i++)scanf&a[i]);for(i=l;i<3;i++)a[0]=a[0]+a[i]);printf(*%f\n*,a[0]);)答:第6行因為數(shù)組元素a[i]是浮點型變量,因此不能用%d作為格式編輯符,應該用格式編輯符%已.下列程序執(zhí)行后的結果是()ointa,y;a=10;y=0;do{a+=2;y+=a;printf("a=%dy=%d\n〃,a,y);if(y>20)break;}while(a=14);A)a=12y=12B)a=12y=12a=14y=16a=16y=28a=16y=20D)a=12y=12a=18y=24a=14y=260a=12y=12答:B)a=14y=44注意a=14是賦值表達式,其值為14(表示真),而非條件表達式a=14。.下面程序的功能是:計算1到10之間的奇數(shù)之和及偶數(shù)之和,請?zhí)羁?。^include*stdio.h*main(){inta,b,c,i;a=c=0;for(i=0;i<=10;i+=2){a+=i;;/*填空*/c+=b;)printf("偶數(shù)之和=%d\n",a);printf("奇數(shù)之和=%d\n”,c-11);)答:(1)b=i+l25.下面程序的功能是:輸出100以內能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?include“stdio.h"main(){inti,j;for(i=0;(1) ;i++) /*填空*/{j=i*10+6:if((2)Continue:/*填空*/printf("%d",j);答:(1)i<=9j%3!=026.C語言中()oA)沒有-while語句構成的循環(huán)B)do-while語句構成的循環(huán)必須用break語句才能結束循環(huán)C)do-while語句構成的循環(huán),當while語句中的表達式值為非零時結束循環(huán)D)do-while語句構成的循環(huán),當while語句中的表達式值為零時結束循環(huán)答:D)27.請讀程序:include<stdio.h>include<math.h>main()(floatx,y,z;scanf(,z%f%f/z,&x,&y);z=x/y;while(l)(if(fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak;)printf(*%f\n*,y);}若運行時從鍵盤上輸入3.62.4<CR>(<CR>表示回車),則輸出結果是()。答:1.600000.下面程序的輸出結果是()o#include<stdio.h>fun(intx)(intp;if(x==0|?x=1)return(3);p=x-fun(x-2);returnp;}main()(printf("%d\n”,fun(9));}答:7.若有以下程序段,w和k都是整型變量:w=k;LB:if(w==0)gotoLE;w-;printf;gotoLB;LE:則不能與上面程序段輸出相同的循環(huán)語句是( )?A)for(w=k:w!=0;w--)printf(***);B)w=k;while(w—!=0)printf("*");w++;C)w=k;do{w—;printf(***);}while(w!=0)D)for(w=k;w;-w)printf("*");答:0.定義如下變量:intn=10;則下列循環(huán)的輸出結果是( )while(n>7){n—;printfn);)答:987.以下程序的功能是:從鍵盤上輸入若干個學生的成績,統(tǒng)計并輸出最高成績和最低成績,當輸入負數(shù)時結束輸入。請?zhí)羁?。main(){floatx,amax,amin;scanf&x);amax=x;amin二x;while(1) /*填空*/{if(x>amax)amax=x;if(2)amin=x;/*填空*/scanf(*%f*,&x);}printf('\namx=%f\namin二%f\n”,amax,amin);)答:(1)(x>=0)(2)(x<amin).下面程序的輸出是( )。main()(intx=3,y=6,a=0;while(x++!=(y-=l))
a+=l;if(y<x)break;printf("x=%d,y=%d,a=%d\n〃,x,y,a);}答:x=5,y=4,a=l.下面程序的輸出是( ).main(){intx=2;while(x-);printf("%d\n”,x);}答:-1的值為T。循環(huán)while(x-);的循環(huán)體為一條空語句。當x為0時,循環(huán)結束,執(zhí)行x的值為T。.以下循環(huán)體的執(zhí)行次數(shù)是()omainO{inti,j;for(i=0,j=l;i<=j+l;i+=2,j―)printf('%d"\n",i);}A)3 B)2 C)1 D)0答:C).下列程序執(zhí)行后的輸出結果是(main(){inta[3][3],*p,i;p=&a[O][0];for(i=0;i<9;i++)p[i]=i+l;printfC%d\n*答:6printfC%d\n*答:6a[0][0]=p[0]=la[l][0]=p[3]=4a[2][0]=p[6]=7,a[l]⑵);)a[0][l]=p[l]=2a[l][l]=p[4]=5a[2][l]=p[7]=8a[0][2]=p[2]=3a[l][2]=p[5]=6a[2][2]=p[8]=9.下列程序執(zhí)行后的結果是()omain(){inti,j,m=0,n=0;for(i=0;i<2;i++)for(j=0;j<2,j++)if(j>=i)m=l;n++;printf("%d'n",n);}答:1語句n++;并不在循環(huán)體內。循環(huán)體僅包含語句if(j>=。.閱讀下列程序:??include<stdio.h>^defineMAX_COUNT4voidfun();main()intcount;for(count=1;count〈=MAX_COUNT;count++)fun();}voidfun()(staticinti;i+=2;printf("%d”,i);}上述程序的輸出結果是( )?答:24683.4編譯預處理考試要求(1)宏定義不帶參數(shù)的宏定義:帶參數(shù)的宏定義。(2)文件包含要點指導.宏定義不帶參數(shù)的宏定義:^define宏名字符串在編譯之前,將宏名替換成字符串。帶參數(shù)的宏定義:define宏名(形式參數(shù)表)含形式參數(shù)的字符串宏替換過程:先把實際參數(shù)與形式參數(shù)一一對應,再把每個實際參數(shù)替換到字符串中對應形式參數(shù)出現(xiàn)的位置,將這個形成的字符串替換到程序中宏名出現(xiàn)的位置。.文件包含文件包含就是在一個文件中把另一個文件的內容包含進來。文件包含格式:#include”文件名”或#include〈文件名)3.4.3同步練習.以下for語句構成的循環(huán)執(zhí)行了( )次。#include<stdio.h>??defineN2#defineMN+l^defineNUM(M+l)*M/2main()inti,n=0;for(i=l;i<=NUM;i++)n++;printfC%d",n);)printf("\n");)答:8宏定義NUM先替換為(M+l)*M/2,(N+l+1)*N+l/2,(2+1+1)*2+1/2.以下程序的輸出結果是( )。#include<stdio.h>ftdefineFUDGE(y)2.84+y#(iefinePR(a)printf("%d\n”,(int)(a))#definePRINTI(a)PR(a);putcharC\n')main(){intx=2;PRINTl(FUDGE(5)*x);)A)11 B)12C)13D)15答:12宏替換過程:PRINTI(FUDGE(5)*x)PR(FUDGE(5)*x)printf("%d\n”,(int)(FUDGE(5)*x))printf("%d\n\(int)(2.84+5*x))printf("機l\n”,(int)12.84).程序的運行結果是( ).#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答:B)宏替換過程:k=10*MIN(i,j)k=l0*⑴<(j)?⑴:(j)k=10*i<j?i:j.程序的運行結果是( ).ttdefineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y-%d\t”,Y)main(){inta=l,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}答:Y=3.程序的運行結果是()o#definePT5.5^defineS(x)PT*x*xmain(){inta=l,b=2;printf(*%4.lf\n*?S(a+b));}答:9.5宏替換過程:S(a+b)PT*a+b*a+b*a+b*a+b*l+2*l+2.程序的運行結果是()o#defineMING0main(){charstr[20]二"CLanguage^,c;inti=O;while((c=str[i])!='\O'){i++;#ifMINGif(c>=,a&&c<=,z')c=c-32;#elseif(c>=,A*&&c<='Z')c=c+32;#endifprintfc);})答:CLANGUAGE因為MING已定義,因此執(zhí)行if(c>='a'&&c<='zf)c=c-32;t即將小寫字母轉換成大寫字母。.下列程序執(zhí)行后的輸出結果是()o#defineMA(x)x*(xT)main(){inta=l,b=2;printf(,z%d\n/z,MA(l+a+b));}答:8宏替換過程:l+a+b*(l+a+b-l).程序的運行結果是()o#defineXFmain(){inta=14,b=15,c;c=a/b;#ifndefXFprintf(*a=%o,b=%o"a,b);ttendifprintf("c=%d\n”,c);}答:c=0.下面程序的輸出結果是()o#include<stdio.h>#defineSUB(X,Y)(X)*Ymain()(inta=3,b=4;printf("%d\n”,SUB(a++,b++));}答:12.下面程序執(zhí)行后的輸出結果是()oA)6 B)8C)10D)12#defineMA(x)x*(x-l)main()(inta=l,b=2;printfC%d\n*,MA(1+a+b));}答:8宏替換過程:MA(l+a+b)l+a+b*(l+a+b-l)l+l+2*(l+l+2-l).在宏定義#(10圻聯(lián)PI3.14159中,用宏名PI代替一個()oA)單精度數(shù) B)雙精度數(shù)C)常數(shù)D)字符串答:D).下列程序的輸出結果是()。^defineN2^defineCUBE(X)(X*X*X)#include<stdio.h>main()inti=N+2;i=CUBE(i);printf("%d'n",i);答:64i=N+2i=2+2i=4CUBE(i)(i*i*i)(4*4*4)第五章函數(shù)3.5.1考試要求.函數(shù)的定義方法.函數(shù)的類型和返回值.形式參數(shù)和實際參數(shù)、參數(shù)值的傳遞.函數(shù)的調用、標準庫函數(shù)、嵌套調用、遞歸調用.局部變量和全局變量.變量的存儲類別(自動、靜態(tài)、寄存器),變量的作用域和生存期.內部函數(shù)與外部函數(shù)要點指導1、概述一個C程序由若干個文件構成;每個文件由若干函數(shù)構成。2、函數(shù)定義類型標識符 函數(shù)名(形式參數(shù))形式參數(shù)說明{說明部分語句)3、函數(shù)參數(shù)和函數(shù)的值(1)形式參數(shù)和實際參數(shù)main(){inta,b,c;scanf("%d,%d”,&A&b);c=max(a,b);printf(u%dM,c);)實際參數(shù) 形式參數(shù)(常量、變量、表達式) (變量)實參與形參類型一致,單向值傳遞(2)函數(shù)的返回值return語句returuz;return(x>y?x,y);函數(shù)值的類型intmax(x,y)charletter(cl,c2)doublemin(x,y)voidprintstar()4、函數(shù)的調用函數(shù)名(實際參數(shù))printstar();c=max(a,b);d=max(max(a,b),c);printf("%d”,max(4b));5、函數(shù)的嵌套調用函數(shù)嵌套執(zhí)行過程6、函數(shù)的遞歸調用floatfactor(intn){floatf;if(n==1)f=l;elsef=factor(n-l)*n;return(f);)7、數(shù)組作為函數(shù)的參數(shù)實際參數(shù) 形式參數(shù)(數(shù)組名) (數(shù)組名)地址傳送8、局部變量和全局變量(1)局部變量在一個函數(shù)內部定義的變量,它只在本函數(shù)內有效。(2)全局變量在函數(shù)外定義的變量稱為外部變量。其有效范圍:從定義變量的位置開始到本文件結束。9、動態(tài)存儲變量和靜態(tài)存儲變量(1)從變量的作用域(既從空間)角度來分,可分為全局變量和局部變量。從變量的時間(既生存期)角度來分,可分為靜態(tài)存儲變量和動態(tài)存儲變量。每一個變量和函數(shù)有兩個屬性:數(shù)據(jù)類型和數(shù)據(jù)的存儲類別。存儲方法分為二大類:靜態(tài)存儲類和動態(tài)存儲類。具體包含四種:H動的(auto),第部](static),寄存器的(register),夕卜部的(extern)?(2)局部變量的存儲方式autostaticregister(3)全局變量的存儲方式inta; externa;staticinta;10、內部函數(shù)和外部函數(shù)(1)內部函數(shù)staticintmax(x,y)只能被本文件內的函數(shù)調用(2)外部函數(shù)externintmax(x,y)intmax(x,y)同步練習.程序的運行結果是( )。#include<stdio.h>voidnum(){externintx,y;inta=15,b=10;x=a-b;y=a+b;}intx,y;main(){inta=7,b=5;x=a+b;y=a-b;num();printf(*%d,%d\n*,x,y);)答:5,25因為x和y是全局變量,它的有效范圍是從定義點開始到本文件尾,但是在定義點前的函數(shù)num中對它們進行了說明即externintx,y;,因此變量x和y在函數(shù)num中也有效。而函數(shù)main中的局部變量a和b與函數(shù)num中的局部變量互不相干。.程序的運行結果是( )。main(){inta=2,i;for(i=0;i<3;i++)printf("%3d”,f(a));}f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);)答:7,8,9在函數(shù)f中變量c為靜態(tài)存儲類型,在編譯時就分配了存儲單元并且賦了初值3,在整個程
序的運行過程中變量C始終存在,但只有在運行函數(shù)f時變量C才有效。而變量b只有在開始運行函數(shù)f時才分配內存單元,并且語句intb=0;相當于intb;b=0;,當函數(shù)f運行結束時,變量b的存儲單元又被收回,既變量b只有在運行函數(shù)b時才存在。綜上所述,調用函數(shù)f三次返回的函數(shù)值分別為2+1+4,2+1+5,2+1+6。.程序的運行結果是()。main(){inti=2,x=5,j=7;fun(j,6);printf("i=%d,j=%d,x或d\n”,i,j,x);}fun(inti,intj){intx=7;printfj=%d,x=%d\n",i,j,x);}答:i=7,j=6,x=7i=2,j=7,x=5在執(zhí)行函數(shù)fun時,fun函數(shù)中的局部變量i,j,x的值分別為7,6,7。在執(zhí)行函數(shù)main時,main函數(shù)中的局部變量i,j,x的值分別為2,7,5。.程序的運行結果是()omain(){mingO;ming();mingO;)mingO{intx=0;x+=l;printfx);)答:111局部變量定義intx=0;相當于intx;x=0;。5.已有函數(shù)pow,要求取消變量i后pow函數(shù)的功能不變,請?zhí)顚懞瘮?shù)程序。修改前pow函數(shù)pow(intx,inty)inti,j=l;for(i=l;i<=y;++i)j=j*x;return(j);)答:函數(shù)pow是計算X,修改后pow函數(shù)pow(intx,inty)intj;for(j=l;y>0;y)j=j*x;return(j);6.程序6.程序的運行結果是()olongfib(intg){switch(g){case0:return0;case1:case2:return1;}return(fib(g-l)+fib(g-2));)main(){longk;k=fib(7);printf("k=%d\n\k);}答:k=13函數(shù)遞歸調用,實現(xiàn)函數(shù)fib:fib(g)=0 當g=0時fib(g)=l 當g=l時fib(g)=l 當g=2時fib(g)=fib(g-l)+fib(g-2)當g>=3時即計算斐波納奇數(shù)列函數(shù)。7.程序的運行結果是()omain(){inta[3][3]={1,3,5,7,9,11,13,15,17};intsum;sum=fun(a);printf("\nsum=%d\n”,sum);}fun(inta[][3]){inti,j,suitfO;for(i=0;i<3;i++)for(j=0;j<3;j++){a[i][j]=i+j;if(i==j)sum=sum+a[i][j];)return(sum);)答:sum=6012在函數(shù)fun中對數(shù)組a賦值,數(shù)組a的9個元素的值分別為123,并計算主對角線上234各元素的和即0+2+4。8.程序的運行結果是()ofun(intx){staticinta=3;a+=x;return(a);}main(){intk=2,m=l,n;n=fun(k);m=fun(m);printf(*%d%d*,n,m);)答:56.程序的運行結果是()ointx=5,y=7;ming(intx,inty){intz;z=x+y;return(z);}main(){inta=4,b=5,c;c=ming(a,b);printf("X+Y二%d\n”,c);}答:X+Y=9.程序的運行結果是()ointm=13;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n”,fun(a,b)/m);)答:2雖然全局變量m的有效范圍是從定義點到文件尾,但是在函數(shù)fun中又定義了局部變量m,因此在函數(shù)fun中其局部變量m有效,而在函數(shù)main中全局變量m有效,結果為(7*5-3)/13o.下面的程序(main(){intx=3;do{printf("%d\n”,x-=2);}while(!(-x));答:1-2第一次執(zhí)行輸出函數(shù)時printfr%d\n",x-=2),賦值表達式x-=2的值為1,輸出1,當計算?。ㄒ粁)時,表達式一x和變量x的值均為0,表達式?。ㄒ粁)的值為真,再次執(zhí)行循環(huán)。賦值表達式x-=2的值為-2,輸出-2,當計算!(一x)時,表達式一x和變量x的值均為-3,表達式?。ㄒ粁)的值為假,循環(huán)結束。.卜面程序的輸出是()omain(){inty=9;for(;y>0;y—){if(y%3=0){printf("%d〃,-y);continue;}答:852.下面程序的輸出是( )?unsignedfun6(unsignednum)(unsignedk=l;do{k*=num%10;num/=10;}while(num);return(k);}main()(unsignedn=26;printf("%d\n",fun6(n));}答:12將變量num的值的各位相乘。.F面程序的輸出是()olongfun5(intn)(longs;if((n==l)||(n=2))s=2;elses=n+fun5(n-l);return(s);}main()longx;x=fun5(4);printf("%ld\n”,x);}答:9函數(shù)遞歸調用。.下面程序的輸出是().ftdefineMAX5inta[MAX],k;main()(funl();fun3();fun2();fun3();printf("\n");}funl()(for(k=O;k<MAX;k++)a[k]=k+k;)fun2()(inta[MAX],k;for(k=O;k<MAX;k++)a[k]=k;}fun3()(intk;for(k=0;k<MAX;k++)printf*(a+k));}答:0246802468函數(shù)funl給全局數(shù)組a賦值:函數(shù)fun2給其局部數(shù)組賦值:函數(shù)fun3輸出全局數(shù)組各元素的值。.以下程序輸出結果是( ).ttinclude<stdio.h>main()inti=l,j=3;printf(線d,",i++);{inti=0;i+=j*2;printf(*%d,%d,",i,j);)printf("%d,%d,*,i,j);答:1,6>3,2,3,變量i在復合語句{inti=0;i+=j*2;printf%d,”,i,j);}中定義,其有效范圍僅是該復合語句。而在main函數(shù)中定義的變量i的有效范圍是除了上面的復合語句以外的main函數(shù)的其它部分。.以下程序輸出結果是()o#include<stdio.h>main(){intk=4,m=l,p;p=func(k,m);printf("/d,”,p);p=func(k,m)printf("d\n”,p);}func(a,b)inta,b;{staticintm=0,i=2;i+=m+l;m=m+l;m=i+a+b;return(m))答:8,17,.程序填空,以下程序中的trap函數(shù)是用梯形法求定積分的通用函數(shù)。被積函數(shù)是f(x)=x*x+3*x+2。#include<stdio.h>#include<math.h>doubletrap(fun,a,b)double(*fun)(),a,b;(doublet,h;inti,n=1000;t=0.5*((*fun)(a)+(*fun)(b));h=fabs(a-b)/(double)(n);for(i=l;i<=n-l;i++)t=t+(1); /*填空*/t=t*h;return(t);}doublemypoly(x)doublex;{return(x*x+3,0*x+2.0);)main(){doubley,(*pf)();pf=(2) ; /*填空*/y=trap(pf,0.0,4.0);printf("%f\n",y);)答(1)(*fun)(a+i*b)(2)mypoly19.程序填空,以下程序求a數(shù)組中所有素數(shù)的和,函數(shù)isprime用來判斷自變量是否為素數(shù)。素數(shù)是只能被1和本身整除且大于1的自然數(shù)。??include<stdio.h>main(){inti,a[10],*p=a,sum=0;printf("Enter10num:\n");for(i=0;i<10;i++)scanf("%d”,&a[i]);for(i=0;i<10;i++)if(isprime(*(p+(1) ))=1) /*填空*/(printf*(a+i));sum+=*(a+i);}printfC*\nThesum=%d\n*,sum);)isprime(x)intx;{inti;for(i=2;i<=x/2;i++)if(x%i==0)return(0);⑵ ; /*填空*/答⑴i(2)return(1)20.程序填空,以下程序調用invert函數(shù)按逆序重新放置a數(shù)組中元素的值。a數(shù)組中元素的值在main函數(shù)中讀入。#include<stdio.h>#defineN10invert(s,i,j)int*s,i,j;(intt;f(i<j){t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;invert(s,⑴ ,j-1); /*填空*/main()(inta[N],i;for(i=0;i<N;i++)scanf('%d”,a+(2));/*填空*/invert(a,0,N-l);for(i=0;i<N;i++)printfa[i]);printf("n");}答(1)i+1(2)i.執(zhí)行下面的語句段的結果是()ointx=23do{printf("%2d”,x一);)whi1e(!x);答:23.下面函數(shù)的功能是()。sss(s,t)char*s,*t;{while((*s)&&(*t)&&(*t++=*s++));return(*s-*t);)答:比較兩個字符串的大小。.請選出以下程序的輸出結果()o^include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printfC/%d,%d,%d\*,a,b,c);}答:-5,-12,-7.下面程序的輸出結果是( )?#include<stdio.h>main(){inti=2,p;p=f(i,i+1);printfp);intf(a,b)inta,b;{intc;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}答:T25.下面程序的輸出結果是()ovoidfun()staticinta=0;a+=2;printfa);)main()intcc;for(cc=1;cc<4;cc++)fun();printf("\n");}答:246.請選出以下程序的輸出結果( )。#include<stdio.h>fun(s,nl,n2)int*s,nl,n2;{inti,j,t;=nl;j=n2;while(i<j){t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;i++;j—;}main()(inta[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;fun(p,0,3);fun(p,4,9);fun(p,0,9);for(i=0;i<10;i++)printf*(a+i));printf("\rT);}}答:5678901234.請選出以下程序的輸出結果()o#include<stdio.h>main()inta[]={1,2,3,4},i;intx=0;forCi=0;i<4;i++){sub(a,x);printfx);}printf('\n");}sub(s,y)int*s,y;(staticintt=3;y=s[t];t—;}答:0000因為實參X單向傳遞值給形參y,盡管在函數(shù)sub中y的值發(fā)生變化,但函數(shù)main中x的值不改變。.設有如下程序段:inti=0,sum=1;do{sum+=i++;}while(i<6);printf("%d\n",sum);上述程序段的輸出結果是( )o答:16.設有下列程序:#include<stdio.h>#include<string.h>main(){inti;charstr[10],temp[10];gets(temp);for(i=0;i<4;i++)(gets(str);if(strcmp(temp,str)<0)strcpy(temp,str));}printftemp);}上述程序運行后,如果從鍵盤上輸入:C++<CR>BASIC<CR>QuickC<CR>Ada<CR>Pascal<CR>則程序的輸出結果是( )答:QuickC從鍵盤輸入5個字符串,輸出最大的字符串。.若輸入3個整數(shù)3、2、1,則下面程序的輸出結果是( )?#include<std
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 郴州2025年湖南郴州市安仁縣事業(yè)單位招聘79人筆試歷年參考題庫附帶答案詳解
- 衢州浙江衢州江山市雙塔街道社區(qū)衛(wèi)生服務中心招聘編外護士筆試歷年參考題庫附帶答案詳解
- 牡丹江2025年黑龍江牡丹江市中醫(yī)醫(yī)院招聘14人筆試歷年參考題庫附帶答案詳解
- 文山2025年云南文山丘北縣第五批城鎮(zhèn)公益性崗位招聘14人筆試歷年參考題庫附帶答案詳解
- 山東2025年山東省地質礦產(chǎn)勘查開發(fā)局所屬事業(yè)單位招聘64人筆試歷年參考題庫附帶答案詳解
- 職業(yè)人群智能健康干預的知情同意簡化策略-1-1
- 周口2025年河南周口市商水縣城區(qū)學校選調教師233人筆試歷年參考題庫附帶答案詳解
- 云浮2025年廣東云浮新興縣委黨校招聘緊缺人才筆試歷年參考題庫附帶答案詳解
- 院感及職業(yè)暴露培訓課件
- 耳鼻喉科治療知情同意溝通策略
- 品牌管理指南的建模指南
- 氣動安全知識培訓課件
- 采購違規(guī)管理辦法
- DB32/T 3392-2018灌溉水系數(shù)應用技術規(guī)范
- 股東清算解散協(xié)議書
- 產(chǎn)后腰背疼康復治療
- 2025年商業(yè)物業(yè)抵押貸款合同范本
- 2024用電信息采集系統(tǒng)技術規(guī)范第1部分:專變采集終端
- 浙江省杭州市2024年中考語文試卷(含答案)
- 期末達標測試卷(試題)-2024-2025學年人教PEP版英語四年級上冊
- DLT 1563-2016 中壓配電網(wǎng)可靠性評估導則
評論
0/150
提交評論