安徽建筑大學(xué)C語言程序設(shè)計(jì)及答案_第1頁
安徽建筑大學(xué)C語言程序設(shè)計(jì)及答案_第2頁
安徽建筑大學(xué)C語言程序設(shè)計(jì)及答案_第3頁
安徽建筑大學(xué)C語言程序設(shè)計(jì)及答案_第4頁
安徽建筑大學(xué)C語言程序設(shè)計(jì)及答案_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2/2C語言程序設(shè)計(jì)(總分100分,考試時(shí)長90分鐘)一、單項(xiàng)選擇題(每小題2分,共40分)1、對于存儲(chǔ)同樣一組數(shù)據(jù)元素而言,________。 A、順序結(jié)構(gòu)比鏈接結(jié)構(gòu)多占存儲(chǔ)空間 B、順序結(jié)構(gòu)與鏈接結(jié)構(gòu)相比,更有利于對元素的插入、刪除運(yùn)算 C、順序結(jié)構(gòu)比鏈接結(jié)構(gòu)易于擴(kuò)充空間 D、順序結(jié)構(gòu)占用整塊空間而鏈接結(jié)構(gòu)不要求整塊空間【答案】D【解析】順序結(jié)構(gòu)的存儲(chǔ)空間就是存放數(shù)據(jù)信息的空間,不需要附加空間,而鏈接結(jié)構(gòu)節(jié)點(diǎn)(即元素)的存儲(chǔ)空間包括兩部分:一部分存放數(shù)據(jù)信息,一部分存放指針信息,因此A選項(xiàng)是錯(cuò)誤的:在順序結(jié)構(gòu)中,要插入、刪除元素需移動(dòng)其他元素;而在鏈接結(jié)構(gòu)中,插入、刪除元素不需要移動(dòng)其他元素。因此,選擇項(xiàng)B是錯(cuò)誤的;順序結(jié)構(gòu)中,存儲(chǔ)空間必須事先定義,在運(yùn)算過程中難以擴(kuò)充:鏈接結(jié)構(gòu)中,元素之間通過指針鏈接,空間易于擴(kuò)充。因此選擇項(xiàng)C也是錯(cuò)誤的;順序結(jié)構(gòu)中,元素之間的關(guān)系通過存儲(chǔ)單元的鄰接關(guān)系來表示,其存儲(chǔ)空間必須占用整塊空間:鏈接結(jié)構(gòu)中,節(jié)點(diǎn)之間的關(guān)系通過指針來表示,不要求整塊空間。因此,D是正確答案。2、是不正確的c語言賦值語句。 A、x=1,y=2 B、x++ C、x=y(tǒng)=5 D、y=int(x);【答案】D3、分析下列程序:

#include<stdio.h>

main()

{

int*p1,*p2,*p;

inta=6,b=9;

p1=&a;

p2=&b;

if(a<b)

{

p=p1;

p1=p2;

p2=p;

}

printf("%d,%d",*p1,*p2);

printf("%d,%d",a,b);

}

程序的輸出結(jié)果為________。 A、9,66,9 B、6,99,6 C、6,96,9 D、9,69,6【答案】A【解析】通過p1=&a,p2=&b分別將a、b的地址賦給指針p1、p2,接著執(zhí)行if語句,發(fā)現(xiàn)a<b成立,則通過交換p1、p2的值,即交換a、b所在存儲(chǔ)單元的地址,但是a、b的值并沒有發(fā)生變化。4、執(zhí)行循環(huán)語句后,i變量的值是________i=4;while(i--);printf("%d",i); A、0 B、-1 C、1 D、有錯(cuò)誤【答案】B5、調(diào)用函數(shù)f(27)的輸出結(jié)果是________。

voidf(intn)

{

if(n<5)printf("%d",n);

else

{

printf("%d",n%5);

f(n/5);

}

} A、102 B、201 C、21 D、20【答案】B6、c語言中,錯(cuò)誤的int類型的常數(shù)是________。 A、1E5 B、0 C、037 D、0xaf【答案】A7、下述對c語言字符數(shù)組的描述中錯(cuò)誤的是________? A、字符數(shù)組可以存放字符串. B、字符數(shù)組中的字符串可以整體輸入?輸出. C、可以在賦值語句中通過賦值運(yùn)算符"="對字符數(shù)組整體賦值. D、不可以用關(guān)系運(yùn)算符對字符數(shù)組中的字符串進(jìn)行比較.【答案】C8、下面實(shí)現(xiàn)換行功能的格式符為________? A、\t B、\n C、\a D、\k【答案】B9、下列選項(xiàng)中,表示字符串末尾的結(jié)束標(biāo)志是________。 A、'\n' B、'\r' C、'\0' D、NULL【答案】C【解析】字符串末尾結(jié)束標(biāo)志為'\0'10、以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能

#defineMIN-2147463647

intfindmax(intx[],intn)

{

inti,max;

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

{

max=MIN;

if(max<x[i])max=x[i];

}

returnmax;

}

造成錯(cuò)誤的原因是________。 A、定義語句inti,max中max未賦值 B、賦值語句max=MIN;中,不應(yīng)該給max賦MIN值 C、語句if(max<x[i])max=x[i];中判斷條件設(shè)置錯(cuò)誤 D、賦值語句max=MIN;放錯(cuò)了位置【答案】D11、在調(diào)用函數(shù)時(shí),如果實(shí)參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是 A、地址傳遞 B、單向值傳遞 C、由實(shí)參傳給形參,再由形參傳回實(shí)參 D、傳遞方式由用戶指定【答案】B12、關(guān)于c語言中數(shù)的表示,以下敘述中正確的是________。 A、只有整型數(shù)在允許范圍內(nèi)能精確無誤地表示,實(shí)型數(shù)會(huì)有誤差 B、只要在允許范圍內(nèi)整型數(shù)和實(shí)型數(shù)都能精確地表示 C、只有實(shí)型數(shù)在允許范圍內(nèi)能精確無誤地表示,整形數(shù)會(huì)有誤差 D、只有用八進(jìn)制表示的數(shù)才不會(huì)有誤差【答案】A13、在c語言中,以作為字符串結(jié)束標(biāo)志 A、’\n’ B、’’ C、’0’ D、’\0’【答案】D14、以下選項(xiàng)中不能正確把cl定義成結(jié)構(gòu)體變量的是________。 A、typedefstruct

{

intred;

intgreen;

intblue;

}COLOR;

COLORcl; B、structcolorcl

{

intred;

intgreen;

intblue;

}; C、structcolor

{

intred;

intgreen;

intblue;

}cl; D、struct

{

intred;

intgreen;

intblue;

}cl;【答案】B15、有以下程序

main()

{

chara[]={'a','b','c','d','e','f','g','h','\0'};

inti,j;

i=sizeof(a);

j=strlen(a);

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

}

程序運(yùn)行后的輸出結(jié)果是______。 A、9,9 B、8,9 C、1,8 D、9,8【答案】D16、下面程序的運(yùn)行結(jié)果是________。

#include<stdio.h>

main(){

inta=1,b=10;

do

{

b-=a;

a++;

}

while(b--<0);

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

} A、a=3,b=11 B、a=2,b=8 C、a=1,b=-1 D、a=4,b=9【答案】B【解析】本題考查兩個(gè)知識點(diǎn):自加自減運(yùn)算符和do-while循環(huán)語句。do-while循環(huán)條件是b--<0,所以循環(huán)體語句只執(zhí)行一次。17、有以下定義和語句

structworkers

{

intnum;

charname[20];

charc;

srruct

{

intday;

intmonth;

intyear;

}

s;

};

structworkersw,*pw;

pw=&w能給w中year成員賦1980的語句是________。 A、*pw.year=1980; B、w.year=1980; C、pw->year=1980; D、w.s.year=1980;【答案】D18、設(shè)有如下定義:intx=10,y=4,z;

4則語句:printf(''%d\n'',z=(x%y,x/y));

的輸出結(jié)果是________。 A、1 B、0 C、2 D、3【答案】C19、若有說明inta[3][4];則a數(shù)組元素的非法引用是________。 A、a[0][2*1] B、a[1][3] C、a[4-2][0] D、a[0][4]【答案】D【解析】此題考查的是數(shù)組元素的引用。對于已定義的數(shù)組a[M][N],數(shù)組元素的正確引用必須滿足行下標(biāo)小于M,列下標(biāo)小于N且為正整數(shù)。此題中,選項(xiàng)D)中列下標(biāo)值出現(xiàn)溢出。20、設(shè)有如下定義

structss

{

charname[10];

intage;

charsex;

}std[3],*p=std;

下面各輸入語句中錯(cuò)誤的是________。 A、scanf("%d",&(*p).age); B、scanf("%s",&); C、sean("%c",&std[0].sex); D、scanf("%c",&(p->sex));【答案】B【解析】本題考核的知識點(diǎn)是結(jié)構(gòu)型數(shù)組的應(yīng)用。選項(xiàng)A中“&(*p).age”代表的是std[0]age的地址,是正確的,選項(xiàng)C也是正確的,選項(xiàng)D先用指針變量引用結(jié)構(gòu)型的成員sex,然后取它的地址,也是正確的,選項(xiàng)B中的“"是錯(cuò)誤的引用,因?yàn)閟td是數(shù)組名,代表的是數(shù)組的首地址,地址沒有成員“name”。所以B選項(xiàng)為所選。二、填空題(每小題2分,共20分)1、c語言中free(p)的作用是釋放由________所指向的內(nèi)存區(qū)間?!敬鸢浮縫2、若有語句doublex=17;inty;,當(dāng)執(zhí)行y=(int)(x/5)%2;之后y的值是________?!敬鸢浮?3、C語言源程序經(jīng)過編譯后,生成文件的后綴名是___?!敬鸢浮?c4、c語言規(guī)定,不能使用c語言中的________做標(biāo)識符?!敬鸢浮筷P(guān)鍵字5、c語言程序的三種基本結(jié)構(gòu)是順序結(jié)構(gòu)?選擇結(jié)構(gòu)和________?【答案】['循環(huán)結(jié)構(gòu)']6、下列給定程序中函數(shù)fun()的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第1項(xiàng)起,斐波拉契數(shù)列為:l,1,2,3,5,8,13,21,…例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為13。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

longfun(intg)(

switch(g);

{

case0:

return0;

case1:case2:return1;

}

return(fun(g-1)+fun(g-2));)

voidmain()

{

longfib;

intn;

printf("inputn:");

scanf("%d",&n);

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

fib=fun(n);

printf("fib=%d\nkn",fib);

}【答案】(1)錯(cuò)誤:switch(g);

正確:switch(g)(2)錯(cuò)誤:casel:case2:returnl;

正確:casel;

case2:returnl;7、在c語言中,將字符串中大寫字母轉(zhuǎn)換成小寫字母的函數(shù)是_____________。【答案】strlwr#strlwr()#strlwr(字符串)8、從文件讀入一行,讀取字符包括空格,使用函數(shù)________?!敬鸢浮縢ets()9、輸入一個(gè)字符,如果它是大寫字母,則把它變成小寫字母,如果它是一個(gè)小寫字母,則把它變成大寫字母,其它字符不變。請分析程序填空。

main()

{

charch;

scanf("%c",&ch);

if(【1】________)ch=ch+32;

elseif(ch>='a'&&ch<='z')【2】________;

printf("%c",ch);

}【答案】【1】ch>='a'&&ch<='z'【2】ch=ch-3210、有以下程序

#include<stdio.h>

main(){

inti,n[]={0,0,0,0,0};

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

{

n[i]=n[i-1]*3+1;

printf("%d",n[i]);

}

程序運(yùn)行后的輸出結(jié)果是________?!敬鸢浮縖'141340']三、編程題(每小題分,共40分)1、編寫程序:打印出楊輝三角形(要求打印出10行)。

結(jié)構(gòu)如下所示:

1

11

121

1331

14641

(本題10分)【答案】#include<stdio.h>

intmain()

{

inti,j;

inta[10][10];

printf("\n");

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

a[i][0]=1;

a[i][i]=1;

}

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

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

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

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

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

printf("\n");

}

}2、編寫程序:從鍵盤上輸入一個(gè)數(shù)字組成的字符串(字符串長度小于8),將該字符串轉(zhuǎn)換成一個(gè)十進(jìn)制數(shù)

例如:從鍵盤上輸入2345,則程序運(yùn)行的結(jié)果應(yīng)當(dāng)為:n=2345()(本題14分)【答案】#include"stdio.h"

main()

{

chars[10];

inti;

longintn=0;

scanf("%s",s);

for(i=0;i<strlen(s);i++)

n=n*10+s[i]-'0';

printf("n=%ld\n",n);

}3、編寫程序:使用結(jié)構(gòu)體,創(chuàng)建一個(gè)長度為n的鏈表。(本題16分)【答案】#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

typedefstructLNode{

intdata;

structLNode*next;

}LNode,*LinkList;

LinkListCreateList(intn);

voidprint(LinkListh);

intmain()

{

Li

溫馨提示

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

評論

0/150

提交評論