c語言試題月考2012年9月_第1頁
c語言試題月考2012年9月_第2頁
c語言試題月考2012年9月_第3頁
c語言試題月考2012年9月_第4頁
c語言試題月考2012年9月_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)應(yīng)用類專業(yè)2012年9月份月考C語言試題一、選擇題( 5分*10=50分)1、運(yùn)行以下程序的輸出結(jié)果是( D )main( ) int x=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【解析】 本題中變量x值的變化取決于自增運(yùn)算符,而變量y值的改變?nèi)Q于循環(huán)語句表達(dá)3中變量i的變化,也就是執(zhí)行循環(huán)體后再改變y的值。但最后一輪由于條件不滿足而不輸出y值。 循環(huán)次 數(shù)xy執(zhí)行輸出語句后x的值變量i的值執(zhí)行表達(dá)3后y的值11010

2、90à110à129181à21à22、運(yùn)行以下程序的輸出結(jié)果是( B )main( ) int y=18,i=0,j,a8; do ai=y%2; i+;y=y/2;while(y>0);for( j=i-1;j>=0;j-)printf("%d",aj);printf("n"); A、10000 B、10010 C、00110 D、10100【解析】 本題中包含兩個循環(huán)語句,do語句是分別給數(shù)組元素賦值,得a0=0,a1=1,a2=0,a3=0,a4=1,結(jié)束后變量i的值變?yōu)?。再執(zhí)行for語句時是

3、采用由后到前輸出數(shù)組元素的值。3、已有如下定義和輸入語句,若要求a1,a2,c1,c2的值分別為10,20,A和B,當(dāng)從第一列開始輸入數(shù)據(jù)時,正確的數(shù)據(jù)輸入方式是( D )(注:<CR>表示回車、表示空格) int a1,a2; char c1,c2; scanf(“%d%d”,&a1,&a2); scanf(“%c%c”,&c1,&c2); A)1020AB<CR> B)1020<CR> AB<CR> C)10 20 AB<CR> D)1020AB<CR>4、設(shè)x 和y均為int 型變量,

4、則執(zhí)行以下循環(huán)后, y 的值為(C)#include "stdio.h"main() int x,y;for (y=1,x=1;y<=50;y+) if(x>=10) break; if(x%2=1) x+=5; continue; x-=3; printf("%d",y);A、2 B、 4 C、6 D、10【解析】根據(jù)程序可知,程序每次循環(huán)狀態(tài)如表所示循環(huán)次數(shù)本次循環(huán)開始時的x的值本次循環(huán)結(jié)束時的x的值執(zhí)行一輪循環(huán)后變量y的值116226333384485555106循環(huán)執(zhí)行到第6次時,由于x10所以退出循環(huán)。因此本題答案為C5、運(yùn)行以下程

5、序的輸出結(jié)果是( A )#include< stdio.h>void main( ) char s16="123450ttt" printf("%d %dn",strlen(s),sizeof(s);A、 5 16 B、 9 16 C、 5 13 D、 13 16【解析】本題主要考查字符串處理函數(shù)strlen( ),sizeof( ),strlen( )是長度測試函數(shù),在測試過程中如遇到字符串結(jié)束標(biāo)志符時自動停止讀取,題中第6個字符為字符串結(jié)束標(biāo)志符就停止,所以有效字符數(shù)為5。sizeof( )函數(shù)是求某一數(shù)據(jù)類型所占的內(nèi)存空間的長度,此題中

6、測試的是字符數(shù)組s所占內(nèi)存空間的長度,而數(shù)組s的長度在定義時已明確指出為16,所以sizeof( )測出的值是16。所以本題答案為A。6、運(yùn)行以下程序的輸出結(jié)果是( B )#include< stdio.h>void main( ) int i,a10=0,1,2,3,4,5,6,7,8,9;for(i=1;i<9;i+) ai=ai-1+ai+1;printf("%d%d",a5,a7); A 、1014 B、 2035 C、 812 D、 2744【解析】本題主要考查數(shù)組元素的算術(shù)運(yùn)算與其值的變化特點(diǎn)。循環(huán)次數(shù)控制變量i值的值數(shù)據(jù)元素ai的值11a1=

7、a0+a2=222a2=a1+a3=533a3=a2+a4=944a4=a3+a5=1455a5=a4+a6=2066a6=a5+a7=2777a7=a6+a8=3588a8=a7+a9=44循環(huán)到第8次后,變量i的值變?yōu)?,不符合條件,退出循環(huán)。根據(jù)表格所示本題答案為B。7、以下程序的輸出結(jié)果是( A ) main( ) int n=4;while(n-) printf("%d ",-n);A、2 0 B、3 1 C、3 2 1 D、2 1 0【解析】本題考查while循環(huán)語句和自減運(yùn)算符的運(yùn)用。由程序段可知,循環(huán)的控制表達(dá)式while(n-)中,n相當(dāng)于while(n)

8、 n-;所以每循環(huán)一次,n值減1,n值的變化是 4,3,2,1,0。但由于在printf("%d ",-n);語句中又存在-n的變化,所以程序中n的變化實(shí)質(zhì)是每循環(huán)一輪其值遞減2,即4à2à0,當(dāng)n變?yōu)?時while(n)條件不滿足,退出循環(huán)。8、若變量a,i已正確定義,且i已正確賦值,合法的語句是( B )。A)a=1 B)+i;C)a=a+=5;D)a=int(i)【解析】本題考查C語言語句的特點(diǎn),C語言中語句的結(jié)束是以“;”為標(biāo)志。由此可排除選項(xiàng)A和D。其二常數(shù)不可以賦值給一個表達(dá)式也不可以常量賦給常量,由此可排除選項(xiàng)C。故答案為B。9、運(yùn)行以下程

9、序的輸出結(jié)果是(C)#include<stdio.h>void main() char i,s5="abc","defgh","ijk","xyz"for(i=1;i<3;i+)printf("%sn",si);A abc B defgh C defghijk D defghijk defgh ijk ijk xyz ijk【解析】此題考查字符串?dāng)?shù)組的含義,字符串?dāng)?shù)組實(shí)質(zhì)是數(shù)組中每一個元素又都是存放一個字符串的數(shù)組,所以可以將一個字符數(shù)組視為一個二維字符數(shù)組。其中的元素按行占連

10、續(xù)的存儲單元,且其中有些存儲單元是空閑的,各字符串并不是一串連著一串存放,總是從每行的第0個元素開始存放一個新的串。此題中第二行由于數(shù)組長度剛好與字符個數(shù)相等,即長度不夠,則字符串結(jié)束標(biāo)志符'O'未能存入s中,而是存在s數(shù)組之后的一個單元里,所以本題的存放形式如圖示。S0abc0S1defghS2ijk0S3xyz0題中使用了printf()函數(shù)的"s"格式符來輸出字符串,實(shí)現(xiàn)時從數(shù)組的第一個字符開始逐個字符輸出,直到遇到第一個'0'為止(其后即使還有字符亦不輸出)。是開始輸出否結(jié)束輸入K<N是否10、某店一個月的收入和支出總共記錄了

11、N個數(shù)據(jù),。,其中入記為正數(shù),支出記為負(fù)數(shù)。該店用右邊的程序框圖計(jì)算月總收入S和月凈盈利V,那么在圖中空白的判斷框和處理框中,應(yīng)分別填入下列四個選項(xiàng)中的( C )(A)A0,VST(B) A0,VST (C) A0, VST (D)A0,VST 【解析】月總收入為S,因此A0時歸入S,判斷框內(nèi)填A(yù)0,支出T為負(fù)數(shù),因此月盈利VST。二、填空題(4分*5=20分)1、有int a=3,b=4,c=5,x,y;,則以下表達(dá)式的值為 0 。! (x=a)&&(y=b)&&0【解析】對于C語言中邏輯表達(dá)式有且只有“1”和“0”兩個邏輯值,在運(yùn)算過程中按從左至右的順序進(jìn)行

12、運(yùn)算,但要考慮運(yùn)算符的優(yōu)先級別。2、以下程序?qū)斎雰蓚€整數(shù),按從大到小順序輸出.請?jiān)?內(nèi)填入正確內(nèi)容.main() int x,y,z;scanf(“%d,%d”,&x,&y);if ( x<y ) z=x; x=y;y=z; pringf(“%d,%d”,x,y);【解析】本題是要求按從大到小的順序輸出,程序中的z是用來交換x,y的中間變量,根據(jù)后一空中z=x;可知只有當(dāng)x的值小于y的值時才會進(jìn)行交換。3、以下程序是選出能被3整除且至少有一位是5的兩位數(shù),打印出所有這樣的數(shù)及其個數(shù)。請?zhí)羁?。sub(int k,int n) int a1,a2;a2= k%10; a2=

13、 k%10 ; a2=k/10 ;a1= k/10; a2=(k-a2)/10; a2=k-a2*10 ;if(k%3=0 &&a2=5)|(k%3=0&&a1=5) printf("%d",k);n+;return n;else return -1;main()int n=0,k,m;for(k=10;k<=99;k+) m=sub(k,n);if(m!=-1) n=m;printf("nn=%d",n);【解析】本程序是要求選出能被3整除且至少有一位是5的兩位數(shù),根據(jù)這一特點(diǎn)就說明要成立必須包含兩個方面(1)能被

14、3整除;(2)其中個位或者十位上有個數(shù)字5且同時成立,題中if語句中的條件中包含的第一個方面,所以只需從這個兩位數(shù)中分別分離出個位或十位與其結(jié)合就可以。n=6三、閱讀程序?qū)懡Y(jié)果(5分*5=25分)1、#include<stdio.h>void main()3,1 4,3 2,4 1,2int x,y,z;x=y=2;z=3;y=x+-1;printf("%d,%dt",x,y);y=+x-1;printf("%d,%dt",x,y);y=z- +1;printf("%d,%dt",z,y);y=-z+1;printf(&q

15、uot;%d,%dt",z,y);【解析】本題主要考查自增與自減運(yùn)算符的應(yīng)用及變量在按順序執(zhí)行過程中其值是否發(fā)生改變,變量的值一經(jīng)改變必須使用改變后的值進(jìn)行下一步的運(yùn)算,同時一定要考慮其輸出格式。4,7,102、#include< stdio.h>void main( ) int i,a34=1,2,3,4,5,6,7,8,9,10,11,12;for( i=0;i<3;i+)printf( "%d,",ai3-i);【解析】此題主要考查二維數(shù)組中的元素值與下標(biāo)號的對應(yīng)關(guān)系。3、12#include< stdio.h>void fun

16、( int x,int y,int z )z=x+y;void main( ) int a=12;f(5,6,a);printf("%dn",a);【解析】本題是考查函數(shù)參數(shù)的傳遞關(guān)系,題中的參數(shù)是傳值的關(guān)系,所以形參的改變不會影響實(shí)參。故輸出時a的值為12。4、#include< stdio.h>63void main() int i,j=3,a=1,2,3,4,5,6,7,8,9,10;for(i=0;i<5;i+) ai=i*(i+1);for(i=0;i<4;i+) j+=ai*3;printf("%d",j);【解析】本

17、題考查(1)二維數(shù)組元素與該元素下標(biāo)號的對應(yīng)關(guān)系;for循環(huán)語句的運(yùn)行特點(diǎn);題中所包含的兩個for循環(huán)語句和一個輸出語句這,這三條語句是并列關(guān)系而不是嵌套關(guān)系,且第一個for循環(huán)的作用是改變下標(biāo)號為0,1,2,3,4的元素的值,分別對應(yīng)為0,2,6,12,20,其它的元素值不變。第二個for語句是求出當(dāng)變量i改變時求出變量j的值,但要注意變量j值的改變后,要用變化后的值而不能用原有的初值,同時最后只有一個值,因?yàn)槊垦h(huán)一次并沒有輸出。45、#include<stdio.h> main() int x; scanf(”%d”,&x); if(x-<5) printf(”

18、%d”,x); else printf(”%d”,x+); 程序運(yùn)行后,如果從鍵盤輸入5,則輸出結(jié)果是( )【解析】本題考查雙分支if結(jié)構(gòu)的變化關(guān)系及自增、自減的變化特點(diǎn)。四、改錯題(指出錯誤行為2分,更改正確后得3分,分值為25分)閱讀程序,修改程序中的錯誤,不得增行和刪行,也不得更改程序結(jié)構(gòu)。請指出錯誤所在的行號,并給出該行修改后的程序代碼。1、以下程序中函數(shù)fun的功能是:計(jì)算正整數(shù)num各位上的數(shù)字之積。例如,若輸入252,則輸出應(yīng)該是20。若輸入202,則輸出應(yīng)該是0。 #include <stdio.h>#include <conio.h>long fun(

19、long num)long k; do k*=num%10;num=10; while(num); return(k);main() int n; printf("Please enter a number: "); scanf("%ld", n); printf("n%ldn",fun(n);錯誤行:long k; 更正:long k=1;錯誤行:num=10; 更正:num/=10;錯誤行:scanf("%ld", n); 更正:scanf("%ld", &n);【解析】本題要求是“

20、計(jì)算正整數(shù)num各位上的數(shù)字之積”,所以必須要分解各位上的數(shù)字,其中求余是取個位上的數(shù),除法是取整求出前兩位數(shù),下一輪循環(huán)再分解取整求出的前兩位數(shù)。根據(jù)這一點(diǎn)來對照(1)求積時某一變量的初值必須為1。(2)各種運(yùn)算符的寫法(3)輸入語句要注意什么?2、下列給定的程序中,函數(shù)fun的功能是:計(jì)算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。 #include <stdio.h>int fun(int k) int m=0,mc=0, j; while(k>=2)&&(mc<10) if(

21、k%13=0)|(k%17=0) m=m+k;mc+; k-;(此處要加大括號) return m;void main() system("CLS"); printf("%dn ",fun(500);錯誤行:if(k%13=0)|(k%17=0) 更正:if(k%13=0)|(k%17=0)錯誤行:缺少大括號 更正:加大括號【解析】本題是“計(jì)算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和”,由此看出(1)在k以內(nèi)能滿足條件的數(shù)最多為10個;(2)求和;(3)能被13或17整除的自然數(shù);對照這三點(diǎn)看if(k%13=0)|(k%17=0) m=m+

22、k;mc+;可知m是用來存儲和數(shù),mc是記錄滿足條件的個數(shù),同時可以看出要整除其余數(shù)等于0,而if(k%13=0)|(k%17=0)中是賦值所以存在錯誤;任意函數(shù)的返回值是指整個函數(shù)運(yùn)行結(jié)束后,才把值返回,所以return語句在此程序中不能位于while循環(huán)語句中。故缺少花括號。五、程序設(shè)計(jì)題(每空5分,共25分)1、下列給定程序中,函數(shù)fun的功能是:實(shí)現(xiàn)兩個整數(shù)的交換。例如,給a和b分別輸入60和65,輸出為:a=65 b=60 #include <stdio.h>void fun(【 int *a,int *b 】) int t;【t=*b;*b=*a;*a=t; 】 void main()int a,b; system("CLS"); printf("Enter a, b: "); scanf("%d%d"

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論