C語言習(xí)題課(附答案)_第1頁
C語言習(xí)題課(附答案)_第2頁
C語言習(xí)題課(附答案)_第3頁
C語言習(xí)題課(附答案)_第4頁
C語言習(xí)題課(附答案)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE14C語言習(xí)題課一、單項選擇題:1.以下A是C語言中有效的變量名稱。A._abc B.2abc C.char D.a(chǎn)#3變量名只能以下劃線和字母開頭2.下面四個說法中錯誤的是B。A.for循環(huán)不僅可以和for循環(huán)嵌套,而且可以和While循環(huán)嵌套。B.當(dāng)在循環(huán)體內(nèi)執(zhí)行continue語句的時候,將結(jié)束整個循環(huán)。C.while循環(huán)最少循環(huán)0次,do-while循環(huán)最少循環(huán)1次。D.goto語句也可以實現(xiàn)循環(huán)的功能。3.在while(x)中的x與下面條件表達式等價的是DA.x==0B.x==1C.x!=1D.x!=04.為表示關(guān)系x≥y≥z,應(yīng)使用C語言表達式AA.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z)C.(x>=y>=z)D.(x>=y)&(y>=z)5.設(shè)有如下定義:intx=9,y=2,z;則語句printf(“%d\n”,z=x/y);的輸出結(jié)果是CA.1B.4.5C.4D.3整形中的“/”是整除6.若有以下語句:staticcharx[]=”12345”;staticchary[]={‘1’,’2’,’3’,’4’,’5A.x數(shù)組和y數(shù)組的長度相同B.x數(shù)組的長度大于y數(shù)組的長度C.x數(shù)組的長度小于y數(shù)組的長度D.x數(shù)組與y數(shù)組等價字符串后有一個“\0”7.已知有定義:charch;則下面正確的賦值語句為A。A.ch='X' B.ch='55' C.ch="M" D.ch="55"8.以下說法中正確的是CA.C語言程序總是從第一個的函數(shù)開始執(zhí)行B.在C語言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義C.C語言程序總是從main()函數(shù)開始執(zhí)行D.C語言程序中的main()函數(shù)必須放在程序的開始部分9.C語言中,形參的缺省存儲類型說明是:AA.auto B.static C.register D.extern10.C語言中的簡單數(shù)據(jù)類型有:BA.整型實型邏輯型B.整型實型字符型C.整型字符型邏輯型D.整型實型邏輯型字符型11.以下程序段的輸出結(jié)果是:CA.1 intx=3;B.30 do{C.1-2 printf("%3d",x-=2);D.死循環(huán)}while(!(--x));12.以下非法的賦值語句是:AA.n=(i=2,++i); B.j++; C.++(i+1); D.x=y>0;13.設(shè)a和b均為double型變量,且a=5.5,b=2.5,則表達式(int)a+b/b的值是:DA.6.500000 B.6C.5.500000 D.6.00000014.已知x=3,y=2,則表達式x*=y+8的值為:CA.3B.2C.30D.10y+8是一個整體15.設(shè)x,y,z均為int型變量,則執(zhí)行以下語句后,t的值為:C x=y=z=1;t=++x||++y&&++z;A.不定值 B.2C.1 D.016.為了測試字符串的實際長度,C語言規(guī)定了一個“字符串結(jié)束標志”,這個結(jié)束標志字符是:BA.‘\n’ B.‘\0’ C.‘\x’ D.‘\917.C程序的三種基本結(jié)構(gòu)是:AA.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu) B.邏輯結(jié)構(gòu)、層次結(jié)構(gòu)、網(wǎng)狀結(jié)構(gòu)C.順序結(jié)構(gòu)、邏輯結(jié)構(gòu)、選擇結(jié)構(gòu) D.層次結(jié)構(gòu)、順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)18.若inti=10;執(zhí)行完下面程序判斷后,變量i的正確結(jié)果是D。A.10 switch(i)B.11{C.12 case7: i+=1;D.13case10: i+=1; case17: i+=1; default: i+=1;}case后有break,結(jié)束跳出結(jié)果,沒有break,繼續(xù)執(zhí)行具體見書本105頁19.下列關(guān)于C語言注釋的描述中,錯誤的是:D。A.C語言中用/*……*/表示注釋部分B.注釋只是給人看的,對編譯和運行不起作用C.注釋可以加在程序中的任何位置D.C語言中用{*……*}表示注釋部分20.下列關(guān)于C程序的描述中,錯誤的是:D。A.C程序是由函數(shù)構(gòu)成的B.一個C程序總是從main函數(shù)開始執(zhí)行C.C程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句也可以分寫在多行上D.C語言中是利用輸入/輸出運算符構(gòu)成輸入/輸出語句完成輸入/輸出操作的21.C源程序的后綴名默認為:B。A.cppB.cC.objD.exeC語言的默認后綴名是.c,在C++中才是cpp22.以下不屬于C語言的基本數(shù)據(jù)類型的是:B。A.整型B.布爾型C.字符型D.實型23.下列標識符中,符合C語言語法規(guī)范的是:C。A.M.D.JohnB.$123C._nameD.3D6424.下列選項中,不是C語言中的關(guān)鍵字的是:C。A.a(chǎn)utoB.ifC.VOIDD.break25.下列常量中,合法的長整型常量是:A。A.0LB.4962710000C.0.05472D.2e+2長整型的范圍是-2147483648~214748364726.設(shè)int型變量m,n,a,b,c,d均為0,執(zhí)行表達式(m=a==b)||(n=c==d)后,m和n的值是:C。A.0,0B.0,1C.1,0D.1,1當(dāng)在“或”的前面為1,后面不再執(zhí)行。在“與”前面為0,后面也不在執(zhí)行,出現(xiàn)“短路”現(xiàn)象。27.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是:C。A.-3B.9C.-12D.628.假設(shè)double型變量x,y已經(jīng)正確定義,則表達式x=1,y=x+3/2的值是:D。A.1B.2.0C.2D.2.529.已知’A’的ASCII碼為65,則下列程序的運行結(jié)果為:A。main(){charch1=’A’;charch2=ch1+3;printf(“%d,%c\n”,ch1,ch1);printf(“%d,%c”,ch2,ch2);}A.65,A68,DB.A,65D,68C.A,D65,68D.D,68A,6530.以下關(guān)于while語句的敘述正確的是BA.while語句構(gòu)成的循環(huán)必須用break語句才能退出B.while循環(huán)語句中,當(dāng)while子句中的表達式值為零時,結(jié)束循環(huán)C.不能使用while語句來構(gòu)成循環(huán)結(jié)構(gòu)D.while語句的循環(huán)體至少被執(zhí)行一次二、填空題:1.程序段floatx=165.323;printf(“x=%-10.2f”,x);執(zhí)行時輸出的結(jié)果為:165.32□□□□p762.設(shè)x,y,z,k都是int型變量,則執(zhí)行表達式x=(y=4,z=16,k=32)后,x的值為:323.要將兩個字符串連接成一個字符串,可以使用的標準庫函數(shù)名為:strcatP1474.多分支選擇結(jié)構(gòu)中,若在執(zhí)行某一個case語句后,使流程跳出switch結(jié)構(gòu),應(yīng)該使用語句breakp105。5.若有定義inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},則a[1][2]=7p1376.C語言中,結(jié)束本輪循環(huán),將循環(huán)是否繼續(xù)交給循環(huán)判斷條件確定的語句是:continue。7.設(shè)x=2.5,a=7,y=4.7,則算術(shù)表達式x+a%3*(int)(x+y)%2/4的值為:2.58.C語言中,函數(shù)是程序的基本構(gòu)成單元,其中main函數(shù)是必須的,且唯一。9.在C語言程序中,用關(guān)鍵字float定義單精度實型變量。10.設(shè)有語句“inti=1,s=1;for(;s+i<6;i++)s+=i;”,其中for語句的循環(huán)次數(shù)為2。11.已知有聲明“intx=1,y=2”,則執(zhí)行表達式“(x>y)&&(--x>0)”后x的值為112.多分支選擇結(jié)構(gòu)中,若在執(zhí)行某一個case語句后,使流程跳出switch結(jié)構(gòu),應(yīng)該使用語句breakp10513.C語言中的if語句屬于三種基本結(jié)構(gòu)中的選擇結(jié)構(gòu)的語句。14.若變量ch為char類型,判斷ch為數(shù)字字符的表達式是ch>’0’&&ch<’9’15.設(shè)x=2.5,a=7,y=4.7,則算術(shù)表達式x+a%3*(int)(x+y)%2/4的值為:2.516.continue語句只能用在三種基本結(jié)構(gòu)中的循環(huán)結(jié)構(gòu)的語句中。17.如果在用戶的程序中要使用C庫函數(shù)中的數(shù)學(xué)函數(shù)時應(yīng)在該源文件中使用的include命令是:math.h18.若有定義:intx[5];則訪問x數(shù)組中的元素時,下標的上限為:4。19.C語言中,函數(shù)是程序的基本構(gòu)成單元,其中main函數(shù)是必須的,且唯一。20.C語言本身沒有輸入輸出語句,格式化的標準輸出是借助庫函數(shù)<stdio.h>實現(xiàn)。三、程序閱讀題:1.閱讀下列程序,并給出程序運行的結(jié)果。voidmain(){intn,d,k;n=263;d=1;k=1; do{ k*=n%10; n/=10; printf("%d,",d); d++; }while(n); printf("\n"); printf("%d\n",k); printf("%d\n",n);}運行結(jié)果:1,2,33602.閱讀下列程序,并給出程序運行的結(jié)果。voidmain(){ intx=2345,t; intsum,muti;sum=0;muti=1; printf("數(shù)字為:%d\n",x); while(x!=0){ t=x%10; sum+=t; muti*=t; x=x/10; } printf("構(gòu)成數(shù)字的和:%d\n",sum); printf("構(gòu)成數(shù)字的乘積:%d\n",muti);}運行結(jié)果:數(shù)字為:2345構(gòu)成數(shù)字的和:14構(gòu)成數(shù)字的乘積:1203.閱讀下列程序,并給出程序運行的結(jié)果。voidmain(){ intx=20,y=30,z=60; while(x<y)x=x+4; y=y(tǒng)+4; z=z/2; printf(“%d\n”,x); printf(“%d\n”,y); printf(“%d\n”,z);}運行結(jié)果:3234304.閱讀下列程序,并給出程序運行的結(jié)果。voidmain(){inti,j,l,m,a[10]={9,8,7,6,5,4,3,2,1,5};for(i=0;i<=8;i++){l=i; for(j=i+1;j<=9;j++) if(a[j]<a[l])l=j; if(l!=i) {m=a[i];a[i]=a[l];a[l]=m;} }for(i=0;i<=9;i++){printf("%d",a[i]);if(i%3==0&&i!=0)printf(“\n”); } }運行結(jié)果:1234556789四、編程題:(8分每題,共16分)1.寫一個函數(shù),輸入一個四位數(shù)字,要求輸出這4個數(shù)字字符,但每兩個數(shù)字間空一個空格。例如輸入1990,應(yīng)該輸出“1990”算法一:#include<stdio.h>voidmain(){inta,b,c,d,e;//定義四個數(shù),a是一個四位數(shù),b是它的千位,c是百位,d是十位,e是個位printf(“請輸入一個四位數(shù):”);scanf(“%d”,&a);b=a/1000;//獲取它的千位c=(a-b*1000)/100;//獲取它的百位d=(a-b*1000-c*100)/10;//獲取它的十位e=a-b*1000-c*100-d*10;//獲取它的個位printf(“%d%d%d%d\n”,b,c,d,e);//將它的每一位重新排序輸出}算法二:#include<stdio.h>//這方法與第3題類似voidmain(){charc;printf(“請輸入數(shù)字:”);//提示while((c=getchar())!='\n')//逐個獲取數(shù)字(當(dāng)然字母也可以,n個數(shù)都可以)printf(“%c”,c);//逐個數(shù)字輸出(數(shù)字與數(shù)字之間有空格)printf(“\n”);}算法三:#include<stdio.h>voidmain(){inta[10],n,i=0;printf(“請輸入一個數(shù):”);scanf(“%d”,&n);while(n!=0){a[i++]=n%10;n/=10;}for(i--;i>=0;i--)printf(“%d”,a[i]);printf(“\n”);}2.編寫程序,用公式eq\f(π,4)≈1-eq\f(1,3)+eq\f(1,5)-eq\f(1,7)+eq\f(1,9)-eq\f(1,11)+…求π的近似值,直到最后一項小于10-5為止。解法一:#include<stdio.h>#include<math.h>voidmain(){ doublex=1,i=1;//定義x=1/i(i是分數(shù)的分母) intj=1;//定義該數(shù)列有j項 doublep=0;//定義p是該數(shù)列的和,初始為0 while(x>1e-5)//在該條件下循環(huán){ x=1/i;//x是每一項的值 i+=2;//數(shù)列的分母+2 if(j%2!=0)//奇數(shù)項相加,偶數(shù)項相減獲得p的值p為π/4 p+=x; if(j%2==0) p-=x; j++; }p=p*4;//獲得π的值 printf("π=%lf\n",p);//輸出值}解法二:#include<math.h>#include<stdio.h>voidmain(){ints;floatn,t,pi;t=1;pi=0;n=1.0;s=1;do{pi+=t;n+=2;s=-s;t=s/n;}while(fabs(t)>1e-5);pi*=4;printf(“π=%.5f\n”,pi);}3.輸入一行字符(不超過100),將其中的大寫字符變成小寫,小寫字符變成大寫,其余字符不變。解法一:#include<stdio.h>voidmain(){charc;while((c=getchar())!='\n')//獲得字符{if(c>='a'&&c<='z')//小寫字母變大寫字母 {c=c-32;printf("%c",c); }elseif(c>='A'&&c<='Z')//大寫字母變小寫字母 {c=c+32;printf("%c",c); }else//其他字符不變printf("%c",c);}printf("\n");}解法二:#include<stdio.h>voidmain(){inti=0;chara[100],c;printf("請輸入字符串的內(nèi)容:\t");do{scanf("%c",&a[i]);c=a[i]; i++;}while(c!='\n');a[i]='\0';i=0;printf("輸入字符串的內(nèi)容為:\t");while(a[i]!='\0'){printf("%c",a[i]);i++;}printf("轉(zhuǎn)換后字符串的內(nèi)容為:\t");i=0;while(a[i]!='\0') { c=a[i]; if(c>='a'&&c<='z') a[i]-=32; elseif(c>='A'&&c<='Z') a[i]+=32; printf("%c",a[i]); i++; }}4.以下程序把100~200之間不能被3整除的數(shù)輸出#include<stdio.h>voidmain(){inti;for(i=100;i<=200;i++)//100到200之間循環(huán) if(i%3!=0)//排除能被3整除的數(shù)(余數(shù)不為0) printf("%d\n",i);}5.輸入3個數(shù),按從小到大的順序輸出。方法一:#include<stdio.h>voidmain(){intx,y,z,t;printf("請輸入要比較的三個數(shù):");scanf("%d%d%d",&x,&y,&z);if(x>y){t=x;x=y;y=t;}if(y>z){t=z;z=y;}if(x<t)y=t;else{y=x;x=t;}printf("%d%d%d\n",x,y,z);}方法二:#include<stdio.h>//此題使用了冒泡排序的方法voidmain(){inta[3];//定義3個數(shù)inttemp,i,j,k;printf("請輸入3個數(shù):");//提示輸入for(i=0;i<3;i++)scanf("%d",&a[i]);//給輸入的3個數(shù)進行編號for(j=0;j<2;j++)//進行2次循環(huán)for(k=0;k<2-j;k++)//每次循環(huán)中進行2次比較if(a[k]>a[k+1])//進行比較把大的數(shù)放到最后{temp=a[k];a[k]=a[k+1];a[k+1]=temp; }for(i=0;i<3;i++)//將排好序的3個數(shù)重新編號printf("%d",a[i]);//輸出3個數(shù)printf("\n");}方法三:#include<stdio.h>//這種方法比較麻煩,需要一一列出來voidmain(){inta,b,c,d,e,f;printf(“請輸入3個數(shù):”);scanf(“%d%d%d”,&a,&b,&c);//獲取3個數(shù)a,b,cif(a>=b&&b>=c)//a>=b>=c的情況printf(“%d%d%d\n”,c,b,a);//重新排序輸出elseif(a>=c&&c>=b)//a>=c>=b的情況printf(“%d%d%d\n”,b,c,a);//重新排序輸出elseif(b>=a&&a>=c)//b>=a>=c的情況printf(“%d%d%d\n”,c,a,b);//重新排序輸出elseif(b>=c&&c>=a)//b>=c>=a的情況printf(“%d%d%d\n”,a,c,b);//重新排序輸出elseif(c>=b&&b>=a)//c>=b>=a的情況printf(“%d%d%d\n”,a,b,c);//重新排序輸出elseif(c>=a&&a>=b)//c>=a>=bprintf(“%d%d%d\n”,b,a,c);//重新排序輸出}6.以下程序用while語句計算式子eq\i\su(n=1,100,n)方法一:用while計算#include<stdio.h>//此題要算從1加到100voidmain(){ints=0,n=1;while(n<=100)//n從1到100之間循環(huán){s+=n;n++;}printf("%d\n",s);}方法二:用for計算#include<stdio.h>voidmain(){ints=0,n;//s為累加的初始值for(n=1;n<=100;n++)//n從1到100之間循環(huán)s=s+n;printf("%d\n",s);}7.求100~200間的全部素數(shù)。方法一:#include<stdio.h>voidmain(){inti,n;for(n=101;n<200;n+=2){for(i=2;i<=n-1;i++)if(n%i==0)break;if(i==n)printf("%5d\n",n);}}方法二:#include<stdio.h>#include<math.h>voidmain(){intm,i,k,n=0;for(m=101;m<=200;m+=2){ k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break; if(i>=k+1) { printf("%d\n",m); n+=1; }} printf("\n");}8.函數(shù)pi()的功能是根據(jù)以下公式求π值,eq\f(π,2)=1+eq\f(1,3)+eq\f(1,3)×eq\f(2,5)+eq\f(1,3)×eq\f(2,5)×eq\f(3,7)+eq\f(1,3)×eq\f(2,5)×eq\f(3,7)×eq\f(4,9)+…直到最后一項小于10-5為止。#include<stdio.h>doublejiecheng1(intx)//定義一個函數(shù)階乘1,可以得到一個從1乘到x的值{doubles=1;for(inti=1;i<=x;i++) s=s*i;return(s);}doublejiecheng2(intx)//定義一個階乘2函數(shù)可以得到一個從3*5*7*。。。。。。*2x-1的值{doubles=1;for(inti=1;i<=x;i++) s=s*(2*i+1);return(s);}voidmain(){doublex=1;inti=1;doublep=1;//p是π的初始值while(x>1e-5)//1e-5是10-5{x=(jiecheng1(i))/(jiecheng2(i));//這一步不用說了吧,自己看吧i=i+1;p=p+x;}//π/2=p,所以π=2*pprintf("%lf\n",2*p);}9.判斷輸入的一個年份是否是閏年。#include<stdio.h>voidmain(){intx;printf("請輸入年份:");scanf("%d",&x);if(x%400==0||(x%4==0&&x%100!=0))//根據(jù)閏年的定義判斷printf("%d年是閏年\n",x);elseprintf("%d年不是閏年\n",x);}10.編寫程序,在屏幕上打印輸出下列圖形。1#include<stdio.h>222voidmain()33333{4444444for(inti=1;i<=9;i++)//一共有9行循環(huán)555555555{66666666666

溫馨提示

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

評論

0/150

提交評論