C程序設(shè)計(jì)習(xí)題部分_第1頁
C程序設(shè)計(jì)習(xí)題部分_第2頁
C程序設(shè)計(jì)習(xí)題部分_第3頁
C程序設(shè)計(jì)習(xí)題部分_第4頁
C程序設(shè)計(jì)習(xí)題部分_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

習(xí)題第1部分表達(dá)式及三種基本結(jié)構(gòu)單項(xiàng)選擇題1)在C語言中,int、char和float三種類型數(shù)據(jù)所占用的內(nèi)存。

A、均為2個(gè)字節(jié)B、分別為1、2、4個(gè)字節(jié)

C、分別為2、1、4個(gè)字節(jié)D、由變量的大小決定2)在C語言中,錯(cuò)誤的int類型的常數(shù)是。

A、32768B、-32766C、037D、0xAF3)下列可以表示字符型常數(shù)的是。

A、"a"B、'\t'C、"\n"D、2974)下列錯(cuò)誤的轉(zhuǎn)義字符是。

A、'\\'B、'\"'C、'\81'D、'\0'5)已知chara;intb;floatc;doubled;執(zhí)行語句c=a+b+c+d;后,變量c的數(shù)據(jù)類型是:。

A、intB、charC、floatD、double6)已知inti=5;執(zhí)行語句i+=++i;后,i的值是。

A、6B、10C、12D、117)若w=1,x=2,y=3,z=4;則條件表達(dá)式w>x?w:y<z?y:z的結(jié)果為。

A、4B、3C、2D、18)已知intx;則使用逗號(hào)運(yùn)算符的表達(dá)式(x=4*5,x*5),x+25的結(jié)果為。

A、20B、100C、125D、459)已知a=b=c=1且均為int類型變量,則執(zhí)行以下語句:++a||++b&&++c;變量b的值為。

A、1B、2C、3D、010)若要求在if后一對(duì)圓括號(hào)中表示條件“a不等于0成立”,則能正確表示這一關(guān)系的表達(dá)式是。

A、a<>0B、!aC、a=0D、a11)C語言對(duì)嵌套if語句的規(guī)定是:else總是和配對(duì)。

A、其之前最近的ifB、第一個(gè)if

C、縮進(jìn)位置相同的ifD、其前面最近的且尚未配對(duì)的if12)為了判斷兩個(gè)字符串s1和s2是否相等,應(yīng)當(dāng)使用。

A、if(s1==s2)B、if(s1=s2)

C、if(strcpy(s1,s2))D、if(strcmp(s1,s2)==0)13)已知x,a,b均為整型變量,則下列選項(xiàng)中錯(cuò)誤的if語句是。

A、if(a=b)x++;B、if(a=<b)x++;C、if(a-b)x++;D、if(x)x++;14)下列關(guān)于switch語句和break語句的結(jié)論中,正確的是。

A、break語句只能用于switch語句中

B、在switch語句中可以根據(jù)需要,使用或不使用break語句

C、在switch語句中必須使用break語句

D、break語句不能用于switch語句15)在C語言中,判斷一個(gè)量是否為"真"時(shí),通常這個(gè)量必須是才表示邏輯值"真"。

A、1B、非0整數(shù)C、大于0的整數(shù)D、非0值16)以下四條語句中,有語法錯(cuò)誤的是。

A、if(a>b)m=a;B、if(a=b)m=b;C、if((a=b)>=0)m=a;D、if((a=b;)>=0)m=a;17)程序main(){intx=5;if(x++>10)printf("%d",x);elseprintf("%d",x--);}的輸出是。

A、4B、5C、6D、718)在下面的條件語句中(其中s1和s2表示是C語言的語句),只有一個(gè)在功能上與其它三條語句不等價(jià),它是。

A、if(a)s1;elses2;B、if(a==0)s2;elses1;

C、if(a!=0)s1;elses2;D、if(a==0)s1;elses2;19)在循環(huán)語句的循環(huán)體中使用break和continue語句的作用分別是。

A、都是結(jié)束循環(huán)B、結(jié)束本次循環(huán)和結(jié)束循環(huán)

C、都是結(jié)束本次循環(huán)D、結(jié)束循環(huán)和結(jié)束本次循環(huán)20)設(shè)i,s是整型變量,執(zhí)行如下的語句:

for(i=0,s=0;i<10;i++,s++);

printf("%d,%d\n",i,s);

輸出的i和s的值為。

A、0,0B、10,0C、10,10D、9,921)語句while(!x);中的條件等價(jià)于。

A、x==0B、x!=0C、~xD、x!=122)在while(x)語句中的x與下面條件表達(dá)式等價(jià)的是。

A、x==0B、x==1C、x!=1D、x!=023)若intx=3;且有下面的程序片段,則輸出結(jié)果是。

do

{printf("%d",x-=2);

}while(!(--x));

A、1B、30C、1-2D、死循環(huán)24)若i,j均為整型變量,則關(guān)于循環(huán)for(i=0,j=-1;j==1;i++,j++)printf("%d,%d\n",i,j);正確的說法是。

A、循環(huán)體只執(zhí)行一次B、循環(huán)體一次也不執(zhí)行

C、判斷循環(huán)結(jié)束的條件不合法D、是無限循環(huán)25)以下不是死循環(huán)的語句為。

A、for(;;x+=i);B、while(1){x++;}

C、for(i=10;;i--)D、for(;(c=getchar())!='\n';)

sum+=i;printf("%c",c);26)設(shè)有如下程序段,則以下敘述中正確的是。

intx=2002,y=2003;

printf("%d\n",(x,y));

A、輸出語句中格式說明符的個(gè)數(shù)少于輸出項(xiàng)的個(gè)數(shù)

B、輸出語句中格式說明符必須再增加一個(gè)%d

C、輸出值為2002

D、輸出值為20032、填空題1)設(shè)有如下說明:inti=3,j=5,m;

執(zhí)行語句m=(i++)-(--j);后,m的值是,j的值是。2)設(shè)有如下程序:voidmain()

{inta=3,b=3,c;

c=a+++b;printf("%d%d\n",a,c);

c=a---b;printf("%d%d\n",b,c);/*減號(hào)之間有無空格結(jié)果是不同的*/

c=a+++b;printf("%d%d\n",a,c);}

該程序執(zhí)行后的三行輸出分別是,,。3)設(shè)x=2.5,a=7,y=4.7,則表達(dá)式x+a%3*(int)(x+y)%2/4的值為。4)以下程序運(yùn)行的結(jié)果是。

#include<stdio.h>

voidmain()

{inti,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}5)strlen("ab\034\\\x79")的值是。6)若intx=600;則執(zhí)行下列程序后,變量y的值是。

if(x>400)

if(x<500)

y=0.5*(x-400);

else

y=x-400;

else

y=0;7)若inti=10;則執(zhí)行下列程序后,變量i的正確結(jié)果是。

switch(i)

{case9:i+=1;

case10:i+=1;

case11:i+=2;

default:i+=2;

}8)以下程序的輸出為。

voidmain()

{inta=9,b=7,c=11;

if(a>b)

if(a>c)printf("%d",a);elseprintf("%d",b);

printf("end");}9)完善程序:企業(yè)根據(jù)月銷售額為銷售人員發(fā)獎(jiǎng)金。銷售額小于1萬元,獎(jiǎng)金為銷售額的20%;銷售額大于或等于1萬元而小于2萬元,低于1萬元的部分按20%,高于1萬元的部分按15%發(fā)獎(jiǎng)金;銷售額大于2萬元而小于4萬元的,低于2萬元的部分仍按上述方法發(fā)獎(jiǎng)金,高于2萬元的部分按10%發(fā)獎(jiǎng)金;銷售額大于4萬元而低于6萬元時(shí),高于4萬元的部分按6%發(fā)獎(jiǎng)金;銷售額大于6萬元而低于10萬元時(shí),高于6萬元的部分按3%發(fā)獎(jiǎng)金;當(dāng)銷售額大于10萬元時(shí),高于10萬元的部分按2%發(fā)獎(jiǎng)金。#include<stdio.h>

voidmain()

{floatsales;

doubleprice;

intn;

printf("請(qǐng)輸入月銷售額:\n");

scanf("%f",&sales);

if(sales>=100000)

n=10;

else

;

switch(n)

{case0:price=sales*0.2;break;

case1:price=2000+(sales-10000)*0.15;break;

case2:

case3:price=3500+(sales-20000)*0.1;break;

case4:

case5:price=5500+(sales-40000)*0.06;break;

case6:

case7:

case8:

case9:price=6700+(sales-60000)*0.03;break;

case10:price=7900+(sales-100000)*0.02;break;

}

printf("獎(jiǎng)金是:%f\n",price);

}10)執(zhí)行下列程序段后,x和i的值分別是10和。

intx,i;

for(i=1,x=1;i<=50;i++)

{if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;}11)完善程序:程序用于求100~200之間的全部素?cái)?shù)。程序中n的作用是累計(jì)素?cái)?shù)的個(gè)數(shù),該程序要求控制每行輸出10個(gè)數(shù)據(jù)。

#include"math.h"

voidmain()

{intm,k,i,n=0;

for(m=101;m<=200;m=m+2)

{if(n%10==0)printf("\n");

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0);

if(i>=k+1){printf("%d",m);n=n+1;}

}

}12)完善程序:已知任意一個(gè)正整數(shù)的立方都可以寫成一串連續(xù)奇數(shù)的和。例如:

13×13×13=2197=157+159+…+177+179+181,下列程序可以驗(yàn)證上述定理。

voidmain()

{longintn,i,k,j,sum;

printf("Entern=");

scanf("%ld",&n);

k=n*n*n;

for(i=1;i<k/2;i+=2)

{for(j=i,sum=0;sum<k;j+=2)

sum+=j;

if()

printf("%ld*%ld*%ld=%ld=from%ldto%ld\n",n,n,n,sum,i,j);

}

}13)完善程序:下面程序的功能是打印100以內(nèi)個(gè)位數(shù)為6且能被3整除的所有數(shù)。

#include"stdio.h"

voidmain()

{inti,j;

for(i=0;i<10;i++)

{j=i*10+6;

if()continue;

printf("%d",j);}

}14)閱讀程序,寫出程序的輸出結(jié)果。

#include<stdio.h>

voidmain()

{intk=1;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*2;break;

default:k=k/3;

}

k++;

}while(c<'F');

printf("k=%d\n",k);

}15)寫出程序的輸出結(jié)果。

#include<stdio.h>

voidmain()

{inti=1;

while(i<=15)

if(++i%3!=2)

continue;

else

printf("%d",i);/*該語句是否在循環(huán)中?*/

printf("\n");/*該語句是否在循環(huán)中?*/

}16)編程將一個(gè)鍵盤輸入的正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。17)猴子吃桃問題:幾個(gè)猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半多一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)桃子了。編程求第一天共摘了多少桃子。(提示:采取逆向思維的方法,從后往前推斷。)

第2部分?jǐn)?shù)組1、單項(xiàng)選擇題1)以下對(duì)數(shù)組的初始化方法中,正確的是:。

A、inta[]='A','B','C';B、inta[5]={0,1,2,3,4,5};

C、chara={'A','B','C'};D、inta[]={0,1,2,3,4,5};2)若要判斷兩個(gè)字符串str1和str2是否相等,應(yīng)選用的函數(shù)是。

A、strcat(str1,str2)B、strcpy(str1,str2)

C、strcmp(str1,str2)D、strstr(str1,str2)3)以下對(duì)字符數(shù)組初始化的方法中,錯(cuò)誤的是:。

A、charstr[]={"Hello"};B、charstr[]="Hello";

C、charstr[]={Hello};D、charstr[]={'H','e','l','l','o','\0'};4)若給出以下定義,則正確的敘述為。

charx[]="abcdefg";

chary[]={'a','b','c','d','e','f','g'};

A、數(shù)組x和數(shù)組y等價(jià)B、數(shù)組x和數(shù)組y的長(zhǎng)度相同

C、數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度D、數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度5)若二維數(shù)組a有m列,則在a[i][j]前的元素個(gè)數(shù)為。

A、j*m+i;B、i*m+j;C、i*m+j-1;D、i*m+j+1;6)若已定義:intw[10];則在下面表達(dá)式中不能表示w[2]的地址的是。

A、w+2B、&w[2]C、&w[0]+2D、w+=27)以下對(duì)二維數(shù)組a的正確說明是。

A、inta[3][]={3,4,2,6,9,2};B、floata(3,4);

C、inta[][4]={3,4,2,6,9,2};D、inta[10]={10*1};8)不正確的字符串賦值或賦初值方式是。

A、charstr[]={'s','t','r','i','n','g','\0'};B、charstr[7]={'s','t','r','i','n','g'};

C、charstr1[10];str1="string";D、charstr1[]="string",str2[]="12345678";9)若有以下說明和語句,則輸出結(jié)果是。

chars[12]="abook!";

printf("%.4s",s);

A、abook!B、abo

C、abook!□□□(□代表空格)D、因格式描述不正確,沒有確定的輸出10)若有以下說明和語句,則輸出的結(jié)果是。

charsp[]="\x69\082\n";

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

A、3B、1C、5D、411)若兩個(gè)靜態(tài)數(shù)組A和數(shù)組B進(jìn)行如下初始化,則。

staticcharA[]="ABCDEF";

staticcharB[]={'A','B','C','D','E','F’};

A、A和B完全相同B、A和B只是長(zhǎng)度相等

C、A和B不相同,A是字符串,不是數(shù)組D、A數(shù)組長(zhǎng)度比B數(shù)組長(zhǎng)12)下列程序的輸出結(jié)果是。

voidmain()

{intk=3,a[2];

a[0]=k;k=a[1]*10;

printf("%d\n",k);

}

A、10B、30C、33D、不定值13)要定義一個(gè)連續(xù)10個(gè)字節(jié)的存儲(chǔ)空間,以下定義正確的是。

A、charss[10];B、intss[10];C、floatss[10];D、doubless[10];14)有一數(shù)組intnum[][4]={11,12,13,14,15,16,17,9,8,7,6,5},執(zhí)行語句scanf("%d",&num[2][3])后,數(shù)組中的值應(yīng)為:(鍵盤輸入值為0)。

A、11,12,13,14,0,0,0,0,0,0,0,0B、11,12,13,14,15,16,17,9,8,7,6,0

C、11,12,13,14,15,16,17,0,8,7,6,5D、11,12,13,14,15,16,17,9,8,7,6,515)有一數(shù)組如下定義

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

執(zhí)行for(i=0;i<6;i++)

printf("%d",a[i]);輸出的結(jié)果是。

A、123456B、12345隨機(jī)值C、123450D、12345516)執(zhí)行以下程序,若輸入數(shù)據(jù)為:abcd1234efgh,則程序的輸出結(jié)果是。

voidmain()

{charstr[13];

scanf("%s",str);

printf("%s\n",str);

}

A、abcdB、abcd1234C、efghD、abcd1234efgh17)若有聲明語句“intM[10],N[3][3];”,則以下對(duì)數(shù)組元素賦值的操作中,未出現(xiàn)越界訪問的是。

A、N[0][3]=0B、M[10]=0C、N[3][0]=0D、M[-1]=018)已定義一個(gè)數(shù)組str存放字符串,要從鍵盤上接收一串字符到str中,正確的方法是。

A、gets(str);B、gets(&str);C、scanf("%c",str);D、scanf("%s",&str);19)有一數(shù)組charstr[60],要將windows存放到此數(shù)組的正確語句是。

A、get(str);B、scanf("%s",str);C、scanf("%s",&str);D、puts(str);20)C語言中,存儲(chǔ)字符串“ABC”占用的字節(jié)數(shù)(即函數(shù)sizeof(a)的值)和字符串長(zhǎng)度(即函數(shù)strlen("ABC")的值)分別是。

A、3、4B、4、3C、3、3D、4、421)設(shè)有說明:“charstr1[100];”,并假設(shè)已輸入一個(gè)字符串至str1數(shù)組中,則輸出該字符串的printf函數(shù)調(diào)用語句的格式為。

A、printf("%d\n",&str);B、printf("%c\n",str);

C、printf("%s\n",str);D、printf("%s\n",&str);22)下列描述正確的是。

A、數(shù)組名就是本數(shù)組在存儲(chǔ)空間中的起始地址

B、數(shù)組名就是一個(gè)符號(hào),在程序中沒有實(shí)際的意義

C、數(shù)組名就是存放數(shù)組中的第一個(gè)元素的存儲(chǔ)單元

D、在程序中數(shù)組不能單獨(dú)使用,必須帶[]使用23)命題“當(dāng)兩個(gè)字符串s1和s2相等時(shí)為真,否則為假”的C語言表達(dá)式為。

A、s1==s2B、s1=s2C、!strcmp(s1,s2)D、strcmp(s1,s2)24)有一數(shù)組inta[8]={1,2,3,4,5,6,7,8},在執(zhí)行scanf(“%d”,&a[a[5]%3+1]),數(shù)組中的值為。(鍵盤輸入值為0)

A、12045678B、12305678

C、12340678D、1034567825)若有以下說明和語句,則輸出結(jié)果是。

charstr[]="\"c:\\abc.dat\"";

printf("%s",str);

A、符串中有非法字符B、\"c:\\abc.dat\"C、"c:\abc.dat"D、"c:\\abc.dat26)有以下語句:intb;charc[10];則正確的輸入語句是。

A、scanf("%d%s",&b,&c);B、scanf("%d%s",&b,c);

C、scanf("%d%s",b,c);D、scanf("%d%s",b,&c);27)以下程序運(yùn)行后的輸出結(jié)果是。

voidmain()

{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7)

if(p[i]%2)j+=p[i];

printf("%d\n",j);

}

A、42B、45C、56D、6028)以下程序運(yùn)行后的輸出結(jié)果是。

voidmain()

{

chara[7]="a0\0a0\0";

inti,j;

i=sizeof(a);/*sizeof()是求a數(shù)組存儲(chǔ)空間的庫(kù)函數(shù)*/

j=strlen(a);

printf("%d%d\n",i,j);

}

A、22B、76C、72D、6229)以下能正確定義一維數(shù)組的選項(xiàng)是。

A、inta[5]={0,1,2,3,4,5}B、chara[]={0,1,2,3,4,5};

C、chara={'A','B','C'};D、inta[5]="0123";30)以下敘述中錯(cuò)誤的是。

A、對(duì)于double類型數(shù)組,不可以直接用數(shù)組名對(duì)數(shù)組進(jìn)行整體輸入或輸出

B、數(shù)組名代表的是數(shù)組所占存儲(chǔ)區(qū)的首地址,其值不可改變

C、當(dāng)程序執(zhí)行中數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時(shí),系統(tǒng)將給出“下標(biāo)越界”的出錯(cuò)信息

D、可以通過賦初值的方式確定數(shù)組元素的個(gè)數(shù)31)以下能正確定義一維數(shù)組的選項(xiàng)是。

A、intnum[];B、#defineN100

intnum[N];

C、intnum[0…100];D、intN=100;

intnum[N];32)若有定義語句"staticcharstr[4][12]={"thank","you","very","much!"};"則str數(shù)組中存儲(chǔ)'\0'的數(shù)組元素有個(gè)。

A、4B、1C、31D、272、填空題1)執(zhí)行以下程序段后,b[0]、b[1]、b[2]的值為。

intb[3]={0,1,2};b[2]=b[(b[0]=2)+b[1]-1]-2;2)下面程序的輸出結(jié)果為。

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};

voidmain()

{inti;

for(i=0;i<3;i++)

printf("%d",a[i][2-i]);

}3)以下程序輸出的結(jié)果是。

voidmain()

{charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;

for(k=1;k<3;k++)printf("%s",&w[k][k]);

}4)請(qǐng)讀程序:

#include<string.h>

voidmain()

{chars[20],t[20],min[20];

scanf("%s\n",s);

scanf("%s\n",t);

if(strcmp(s,t)<0)strcpy(min,s);

elsestrcpy(min,t);

printf("%s\n",min);

}

若分別輸入candy和ann,則上面程序的輸出結(jié)果是:。5)下面程序執(zhí)行時(shí)輸出的結(jié)果是:。

voidmain()

{inta[3][3]={1,2,3,4,5,6,7,8,9},m,k,t;

for(m=0;m<3;m++)

for(k=0;k<=m;k++)

if((m+k)%2)t=a[m][k],a[m][k]=a[k][m],a[k][m]=t;

for(m=0;m<3;m++)

{for(k=0;k<3;k++)

printf("%d",a[m][k]);}

printf("\n");

}6)運(yùn)行以下程序時(shí),若輸入:123321213↙輸出結(jié)果是:。

#include<stdio.h>

voidmain()

{inta[4][4],i,j;

for(i=1;i<4;i++)

for(j=1;j<4;j++)

scanf("%d",&a[i][j]);

for(i=1;i<4;i++)

for(j=1;j<4;j++)

a[i][j]=a[(a[i][j]+1)%3+1][(a[j][i]+2)%3+1];

for(i=1;i<4;i++)

printf("a[%d,%d]=%d",i,i,a[i][i]);

}7)下面程序的功能是檢查一個(gè)二維數(shù)組是否對(duì)稱(即a[i][j]==a[j][i]),請(qǐng)?zhí)羁铡?/p>

voidmain(){inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,4,7};

inti,j,found=1;

for(i=0;i<4&&found;i++)

for(;j<i;j++)

if(a[i][j]!=a[j][i]){;break;}

if()printf("NO");elseprintf("YES");

}8)已知數(shù)組a中的元素已按由小到大順序排列,以下程序的功能是將輸入的一個(gè)數(shù)插入數(shù)組a中,插入后,數(shù)組a中的元素仍然由小到大順序排列

voidmain()

{inta[10]={0,12,17,20,25,28,30};/*a[0]為工作單元,從a[1]開始存放數(shù)據(jù)*/

intx,i,j=6;/*j為元素個(gè)數(shù)*/

printf("Enteranumber:");

scanf("%d",&x);

a[0]=x;

i=j;/*從最后一個(gè)單元開始*/

while(a[i]>x)

{a[]=a[i];;}/*將比x大的數(shù)往后移動(dòng)一個(gè)位置*/

a[++i]=x;

;/*插入x后元素總個(gè)數(shù)增加*/

for(i=1;i<=j;i++)printf("%8d",a[i]);

printf("\n");

}9)以下程序運(yùn)行的結(jié)果是:。

voidmain()

{chara[][6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVW"}

inti;

for(i=0;i<4;i++)

printf(“%s”,a[i]);

printf(“\n”);}10)編寫一個(gè)程序,求1~9之間的隨機(jī)整數(shù)構(gòu)成的4×5矩陣每一行與每一列之和。11)假定在一個(gè)包含16個(gè)元素的數(shù)組中,每一個(gè)元素都是不超過兩位的正整數(shù),試編程統(tǒng)計(jì)該數(shù)組全部元素中數(shù)字0,1,2,……,9各出現(xiàn)多少次。第3部分函數(shù)和預(yù)處理命令1、單項(xiàng)選擇題1)對(duì)于C程序的函數(shù),的敘述是正確的。

A、C語言程序的函數(shù)中必須有return語句

B、C程序中,函數(shù)的類型必須進(jìn)行顯式說明

C、函數(shù)中,return語句必須放在函數(shù)體的最后

D、return語句中表達(dá)式的類型應(yīng)該與函數(shù)的類型一致2)設(shè)有宏定義#defineA(m)5*m,則表達(dá)式A(2+3)/3的值為。

A、15B、4C、8D、113)對(duì)于C程序的參數(shù),會(huì)發(fā)生“類型不匹配”的錯(cuò)誤。

A、實(shí)參和形參均為實(shí)型B、實(shí)參為字符型而形參為整型

C、實(shí)參為整型而形參為字符型D、實(shí)參為整型而形參為實(shí)型4)一個(gè)函數(shù)返回值的類型是由決定的。

A、return語句中表達(dá)式的類型B、在調(diào)用函數(shù)時(shí)臨時(shí)指定

C、定義函數(shù)時(shí)指定的函數(shù)類型D、調(diào)用該函數(shù)的主調(diào)函數(shù)的類型5)以下敘述中正確的是。

A、構(gòu)成C程序的基本單位是函數(shù)B、可以在一個(gè)函數(shù)中定義另一個(gè)函數(shù)

C、voidmain()函數(shù)必須放在其它函數(shù)前D、所有被調(diào)用函數(shù)一定要在調(diào)用之前定義6)以下程序的輸出結(jié)果是。

#include"stdio.h"

intpower(intx,inty);

voidmain()

{floata=2.6,b=3.4;intp;

p=power((int)a,(int)b);

printf("%d\n",p);

}

intpower(intx,inty)

{inti,p=1;

for(i=y;i>0;i--)p=p*x;

returnp;

}

A、8B、9C、27D、817)以下是一個(gè)自定義函數(shù)的頭部,其中正確的是。

A、intfun(inta,b)B、intfun(inta,intb)C、intfun(inta,intb);D、intfun(inta;intb)8)以下程序執(zhí)行時(shí)輸出結(jié)果是:。

intf(intx,inty)

{returnx/y+x%y;}

voidmain()

{floata=1.5,b=3.0,c=f(a,b);

printf("%.2f",c);

}

A、0.50B、0.00C、1.00D、1.509)有如下程序

intfunc(inta,intb)

{return(a+b);}

voidmain()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);

printf("%\d\n",r);

}

該程序的輸出的結(jié)果是:。

A、12B、13C、14D、1510)有如下函數(shù)調(diào)用語句

func(rec1,rec2+rec3,(rec4,rec5));

該函數(shù)調(diào)用語句中,含有的實(shí)參個(gè)數(shù)是:。

A、3B、4C、5D、有語法錯(cuò)11)C提供的編譯預(yù)處理功能包括:。

A、文件包含、宏定義和條件編譯B、構(gòu)造工程文件

C、語句注釋D、包含以上各功能12)以下敘述中正確的是。

A、全局變量的作用域一定比局部變量的作用域范圍大

B、靜態(tài)(static)類別變量的生存期貫穿于整個(gè)程序的運(yùn)行期間

C、函數(shù)的形參都屬于全局變量

D、未在定義語句中賦初值的auto變量和static變量的初值都是隨機(jī)值13)以下所列的各函數(shù)首部中,正確的是。

A、voidplay(inta,b);B、voidplay(inta,b)

C、voidplay(inta,intb)D、voidplay(inta;intb)14)在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是。

A、地址傳遞B、單向值傳遞

C、由實(shí)參傳給形參,再由形參傳回實(shí)參D、傳遞方式由用戶指定15)若有以下程序,則以下敘述中不正確的是。

#include<stdio.h>

voidf(intn);

voidmain()

{voidf(intn);

f(5);}

voidf(intn)

{printf("%d\n",n);}

A、若只在主函數(shù)中對(duì)函數(shù)f進(jìn)行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f

B、若在主函數(shù)前對(duì)函數(shù)f進(jìn)行說明,則在主函數(shù)和其后其它函數(shù)中都能調(diào)用函數(shù)f

C、對(duì)于以上程序,編譯時(shí)系統(tǒng)會(huì)提示出錯(cuò)信息:提示對(duì)f函數(shù)重復(fù)說明

D、函數(shù)f無返回值,所以可用void將其類型定義為無值型16)C語言中,函數(shù)值類型的定義可以缺省,此時(shí)函數(shù)值的隱含類型是。

A、voidB、intC、floatD、double17)若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是。

A、函數(shù)調(diào)用可以作為獨(dú)立的語句存在

B、函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參

C、函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中

D、函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參18)有以下函數(shù)定義:

voidfun(intn,doublex){……}

若以下選項(xiàng)中的變量都已正確定義并賦值,則對(duì)函數(shù)fun的正確調(diào)用語句是。

A、fun(inty,doublem);B、k=fun(10,12.5);C、fun(x,n);D、voidfun(n,x);19)對(duì)于C程序的函數(shù),的敘述是正確的。

A、函數(shù)不能嵌套定義,但可以嵌套調(diào)用B、函數(shù)可以嵌套定義,但不能嵌套調(diào)用

C、函數(shù)的定義和調(diào)用均不能嵌套D、函數(shù)的定義和調(diào)用均可以嵌套20)以下敘述中不正確的是。

A、一個(gè)變量的作用域完全取決于變量說明語句的位置

B、外部變量可以在函數(shù)以外的任何位置定義

C、內(nèi)部變量的生存期只限于本次函數(shù)調(diào)用,無法將內(nèi)部變量的值保存至函數(shù)的下一次調(diào)用

D、用static說明一個(gè)外部變量是為了限制其他編譯單位的引用21)若有以下變量和函數(shù)說明,以下合法的函數(shù)調(diào)用語句是。

inta=4,b=6,c,k;

charch='*';

floatx,y,z;

sub(intx,inty,charch,float*z)

{switch(ch)

{case'+':*z=x+y;break;

case'-':*z=x-y;break;

case'*':*z=x*y;break;

case'/':*z=x/y;break;}

}

A、sub(10,20,ch,y);B、sub(1.2+3,2*2,'+',&z);

C、sub(sub(1,2,'+',&y),sub(3,4,'+',&x),'-',&y);D、sub(a,b,&x,ch);22)以下敘述中不正確的是:。

A、在函數(shù)中通過return語句傳回函數(shù)值

B、在函數(shù)中可以有多條return語句

C、主函數(shù)main后的一對(duì)圓括號(hào)中也可以帶有形參

D、調(diào)用函數(shù)必需在一條獨(dú)立的語句中完成23)以下敘述中不正確的是。

A、在不同的函數(shù)中可以使用相同名字的變量

B、函數(shù)中的形式參數(shù)是局部變量

C、在一個(gè)函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

D、在一個(gè)函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效24)以下對(duì)C語言函數(shù)的有關(guān)描述中,正確的是。

A、調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參

B、C函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C、函數(shù)必須有返回值,否則不能使用函數(shù)

D、C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個(gè)源程序文件中25)以下是一個(gè)自定義函數(shù)的頭部,其中正確的是。

A、intfun(inta[],b)B、intfun(inta[],inta)

C、intfun(inta,intb)D、intfun(chara[][],intb)2、填空題1)static型變量是在時(shí)賦初值。2)假設(shè)有宏定義:#defineMA(x)x*(x-2),則表達(dá)式MA(2+3+1)的值為。3)以下函數(shù)調(diào)用語句中,含有的實(shí)參個(gè)數(shù)是。fun(a+b,(y=10,y),fun(n,k,d));4)C語言中,形參與實(shí)參之間的數(shù)據(jù)傳遞方式是,可以按傳遞也可以按傳遞。5)在同一個(gè)源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),不起作用。6)假設(shè)有宏定義,則表達(dá)式Z(4)的值為。

#defineX5

#defineYX+1

#defineZ(m)Y*X/m7)下面程序執(zhí)行后,x、y、z的結(jié)果分別是:、、。

voidmain()

{intx,y,z;

x=50;y=500;z=0;

xyz(x,y,z);

printf("x=%d,y=%d,z=%d\n",x,y,z);

}

xyz(intx,inty,intz)

{inttemp;

temp=x;x=y;y=temp;

x=x*x;y=y*y;z=x-y;

}8)請(qǐng)?jiān)谝韵鲁绦虻谝恍械南聞澗€處填寫適當(dāng)內(nèi)容,使程序能正確運(yùn)行。

(double,double);

voidmain()

{doublex,y;

scanf("%lf%lf",&x,&y);

printf("%lf\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);

}9)以下程序的輸出結(jié)果是:。

unsignedfun(unsignednum)

{unsignedk=1;

do{

k*=num%10;

num/=10;

}while(num);

return(k);

}

voidmain()

{unsignedn=26;

printf("%d\n",fun(n));

}10)以下程序的輸出結(jié)果是:。

charcchar(charch)

{if(ch>='A'&&ch<='Z')ch=ch-'A'+'a';

returnch;

}

voidmain()

{chars[]="ABC+abc=defDEF";

intj;

while(s[j]!='\0')

{s[j]=cchar(s[j]);

j++;

}

printf("%s\n",s);

}11)以下函數(shù)的功能是計(jì)算s=1+1/2!+1/3!+……+1/n!,請(qǐng)?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

for(i=1;i<=n;i++)

{fac=fac;

s=s+fac;

}

return;

}12)以下程序驗(yàn)證一個(gè)猜想:任意一個(gè)十進(jìn)制正整數(shù)與其反序數(shù)相加后得到一個(gè)新的正整數(shù),重復(fù)該步驟最終可得到一個(gè)回文數(shù)(所謂反序數(shù)是指將原數(shù)從右向左讀所得到的數(shù),如123的反序數(shù)是321;所謂回文數(shù)是指一個(gè)數(shù)從左向右讀的值與從右向左讀的值相等,如12321、234432都是回文數(shù)),請(qǐng)將程序補(bǔ)充完整。

#include<stdio.h>

longinvert(longx);

voidmain()

{longn,c=0;

printf("inputanumber:");

scanf("%ld",&n);

while()

{printf("inputanumber:");

scanf("%ld",&n);

}

n=n+;/*將十進(jìn)制正整數(shù)n與其反序數(shù)相加*/

c++;/*c統(tǒng)計(jì)相加次數(shù)*/

while()

{n=n+invert(n);c++;}

printf("%ld,count=%ld",n,c);

}

longinvert(longx)/*生成并返回x的反序數(shù)*/

{longs;

for(s=0;x>0;)

s=s*10+x%10;

returns;

}13)用6~100間的偶數(shù)驗(yàn)證哥德巴赫猜想:比6大的偶數(shù)均可表示為兩個(gè)素?cái)?shù)之和。

voidmain()

{intm,k;

for(m=6;;m=m+2)

for(k=3;k<m;k=k+2)

if(pr(k)&&pr(m-k))

{printf("%d=%d+%d\n",m,k,);

break;

}

}

pr(intn)

{inti,yes=1;

for(i=2;i<n;i++)

if(n%i==0){;break;}

returnyes;

}14)函數(shù)g的功能是計(jì)算級(jí)數(shù)的值,當(dāng)通項(xiàng)的絕對(duì)值小于eps時(shí)計(jì)算停止,請(qǐng)完善程序。

#include<math.h>

floatg(floatx,floateps);

voidmain()

{floatx,eps;

scanf("%f%f",&x,&eps);

printf("\n%f,%f",x,g(x,eps));

}

floatg(floatx,floateps)

{intn=1;floats,t;

s=1;t=1;

do

{t=t*;

s=s+(n*n+1)*t;

;

}while();

returns;}15)編程計(jì)算(n+1)!+(n+2)!+……+(n+m)!的值,程序運(yùn)行后,從鍵盤輸入整數(shù)m和n。16)函數(shù)voidyhui(inty[][N],intx[][N],intn)生成n行楊輝三角形數(shù)據(jù)構(gòu)成的矩陣,并將其存放到y(tǒng)指向的二維數(shù)組中,再將y數(shù)組中的矩陣順時(shí)針旋轉(zhuǎn)90度后存儲(chǔ)到x指向的二維數(shù)組中。主函數(shù)中分別輸出n行楊輝三角形及順時(shí)針旋轉(zhuǎn)90度后的n行楊輝三角形。測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果如下,n=4時(shí)應(yīng)輸出:11112113311111321311第4部分指針1、單項(xiàng)選擇題1)設(shè)chara[10];intk;,以下正確的表達(dá)式是。

A、[k+2]B、*(a+k)C、(&s+k)D、*((a++)+k)2)若px為指針變量名,y為變量名,則y=*px++;等價(jià)于。

A、y=*px;++px;B、y=(*px)++;C、y=px;px++;D、y=*(++px);3)設(shè)chara[10],*p=a;,以下不正確的表達(dá)式是。

A、p=a+5;B、a=p+a;C、a[4]=p[2];D、*p=a[0];4)設(shè)有char*p,*q;選擇正確的語句。

A、p*=3;B、p=&q;C、p+=3;D、p+=q;5)設(shè)有語句:inta[5]={0,1,2,3,4},*p=a;,以下對(duì)a數(shù)組元素的錯(cuò)誤引用是。

A、a[p-a]B、*&a[1]C、p[1]D、*(*a(a+1))6)設(shè)有說明intx,*p=*&x;要實(shí)現(xiàn)x的內(nèi)容加5,則下面的語句是錯(cuò)的。

A、*p=*&x+5B、x=*p+5C、*p=*p+5D、*p=&x+57)設(shè)char*st;,以下正確的表達(dá)式是。

A、*st='good'B、st='good'C、*st="good"D、st="good"8)以下程序的運(yùn)行結(jié)果為。

voidmain()

{inta[10],i,*ap,*aq;

floatb[10],*bp,*bq;

for(i=0;i<10;i++)

{a[i]=1;b[i]=10;}

ap=&a[2];

aq=&a[8];

bp=&b[2];

bq=&b[8];

printf("%d,%d\n",ap-aq,bp-bq);

}

A、6,6B、–6,-6C、0,0D、1,109)在二維數(shù)組中,以下不能正確表示數(shù)組元素a[1][2]。

A、*(a+1)[2]B、*(a[1]+2)C、*(*(a+1)+2)D、*(1+a[2])10)已知:chars[20]="programming",*ps=s;則不能引用字母o的表達(dá)式是。

A、ps+2B、s[2]C、ps[2]D、ps+=2,*ps11)設(shè)有變量說明:chara[6],*p=a;下面表達(dá)中,正確的賦值語句是。

A、a[6]="Hello";B、a="Hello";C、*p="Hello"D、p="Hello";12)設(shè)有如下說明語句:“inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i=5;”,則下列選項(xiàng)中,對(duì)a數(shù)組元素引用不正確的是。

A、a[10]B、*(a+i)C、a[p-a]D、p[i]13)設(shè)有如下定義:char*aa[2]={"abcd","ABCD"};則以下說法中正確的是。

A、aa數(shù)組元素的值分別是"abcd"和"ABCD"

B、aa是指針變量,它指向含有兩個(gè)數(shù)組元素的字符型一維數(shù)組

C、aa數(shù)組的兩個(gè)元素分別存放的是含有4個(gè)字符的一維字符數(shù)組的首地址

D、aa數(shù)組的兩個(gè)元素中存放了字符'a'的地址14)以下程序中函數(shù)sort的功能是對(duì)a所指數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序,程序運(yùn)行后的輸出結(jié)果是。

voidsort(inta[],intn)

{inti,j,t;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

voidmain()

{intb[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&b[4],4);

for(i=0;i<10;i++)printf("%d,",b[i]);

printf("\n");

}

A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,

C、1,2,3,8,7,6,5,4,9,10,D、1,2,3,4,8,7,6,5,9,10,15)有以下程序,程序運(yùn)行后的輸出結(jié)果是。

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;

}

voidmain()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

printf("%d\n",j);

}

A、4B、3C、2D、116)以下程序中的函數(shù)reverse的功能是將a所指數(shù)組中的內(nèi)容進(jìn)行逆置。程序運(yùn)行后的輸出結(jié)果是。

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

voidmain()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

printf("%d\n",s);

}

A、22B、10C、34D、3017)有以下程序,程序運(yùn)行后的輸出結(jié)果是。

inta=3;

voidmain()

{ints=0;

{inta=5;s+=a++;}

s+=a++;printf("%d\n",s);

}

A、8B、10C、7D、1118)以下程序運(yùn)行后的輸出結(jié)果是。

voidfun(intx,inty)

{x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);}

voidmain()

{intx=2,y=3;

fun(x,y);

printf("%d,%d\n",x,y);

}

A、-1,-1,2,3B、3,2,3,2C、3,2,2,3D、5,2,3,219)有以下程序,程序運(yùn)行后的輸出結(jié)果是。

fun(inta,intb)

{if(a>b)return(a);

elsereturn(b);}

voidmain()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf("%d\n",r);

}

A、3B、6C、8D、1220)以下程序運(yùn)行后的輸出結(jié)果是。

inta=5;

fun(intb)

{staticinta=10;

a+=b++;

printf("%d",a);

}

voidmain()

{intc=20;

fun(c);

a+=c++;

printf("%d\n",a);

}

A、3025B、3130C、2531D、262521)以下程序的輸出結(jié)果是。

voidmain()

{intp(int);

printf("%d",p(3));

printf("%d",p(3));

printf("%d",p(3));

}

p(intx)

{inty=1;

staticintz=2;

y++;z++;

returnx+y+z;}

A、777B、91011C、888D、89102、填空題1)定義inta[]={0,1,2,3,4},*p=a;表達(dá)式(*++p)++的值是。2)swap(int*pt1,int*pt2)

{inttemp;

temp=*pt1;*pt1=*pt2;*pt2=temp;

}

exchange(int*q1,int*q2,int*q3)

{if(*q1<*q2)swap(q1,q2);

if(*q1<*q3)swap(q1,q3);

if(*q2<*q3)swap(q2,q3);}

voidmain()

{inta,b,c,*p1,*p2,*p3;

p1=&a;p2=&b;p3=&c;

*p1=1;*p2=4;*p3=7;

exchange(p1,p2,p3);

printf("a=%d,b=%d,c=%d\n",a,b,c);

}

以上程序的輸出結(jié)果是。3)voidmain()

{int*p,a[]={6,5,4,3,2,1};

p=a;

*(p+3)+=2;

printf("n1=%d,n2=%d\n",*p,*(p+3));}

以上程序的輸出結(jié)果是。4)voidmain()

{inti,j,k,t,*p,a[5]={16,-5,9,0,3};

p=a;

for(i=0;i<4;i++)

{for(j=i+1;j<5;j++)

if(*(p+i)>*(p+j)){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;}

for(k=0;k<5;k++)printf("%d",a[k]);

printf("\n");}

}

以上程序的輸出結(jié)果的第三行是:。5)voidmain()

{inta[]={1,2,3,4,5};

char*s="morning";

printf("%d%d%d%d\n",*a,a[1],*(a+1),*a+1);

}

以上程序的輸出結(jié)果是?。6)#include<stdio.h>

#include<string.h>

voidmain()

{staticchara[50]="test";

charb[40],*p;

p=a;*(p+3)+=1;

strcpy(b,"abcdefg");strcat(a,"string");strcpy(b,a,5);

printf("n1=%c,n2=%c\n",*p,*(p+3));

printf("a=%s,b=%s\n",a,b);

}

以上程序的輸出結(jié)果是?

7)下面的函數(shù)index()用于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論