c語(yǔ)言試題及答案_第1頁(yè)
c語(yǔ)言試題及答案_第2頁(yè)
c語(yǔ)言試題及答案_第3頁(yè)
c語(yǔ)言試題及答案_第4頁(yè)
c語(yǔ)言試題及答案_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

編輯版word編輯版word編輯版wordC語(yǔ)言部分一、選擇題(每小題2分,共10分)(下在各小題,分別有一個(gè)或多個(gè)正確答案,請(qǐng)將所有正確答案的編號(hào),填寫在該小題題干后的括號(hào)內(nèi)。錯(cuò)選或漏選均不得分)。1、若定義:inta[2][3]{0,2,4,6,8,10};以下描述正確的有(

A,C,D,E

)A、*(a+1)為元素6的地址

這里a+1=a[1]的地址;*(a+1)的值是6,故A正確。B、*(a[1]+1)的值為2為8,故B不正確C、**(a+1)+2的值為8這里a+1是一個(gè)指針,指向的是a[1].

*(a+1)為a[1],a[1]指向的是a[1][0].

**(a+1)為6,加2得8,故C正確;D、a[0]與a相同

因二者都是指針,指針的地址都是指向數(shù)組中的第一個(gè)元素的地址,故D正確。E、a[1][2]的值為10它是指第二行的第三個(gè)元素,為10,正確2、對(duì)函數(shù)的正確使用方法描述(

A,C,D

)。A、用數(shù)組做函數(shù)參數(shù)時(shí),必須在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組B、實(shí)參數(shù)組元素和形參數(shù)組元素類型可以不一致C、形參數(shù)組長(zhǎng)度可以不指定

D、形參數(shù)組長(zhǎng)度可以大于實(shí)參數(shù)組長(zhǎng)度E、數(shù)組名做參數(shù)屬于值傳遞3、對(duì)靜態(tài)變量的正確描述(

A,B,D,E

)A、靜態(tài)局部變量在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配單元(

)B、靜態(tài)外部變量可以賦初值,也可以不賦初值C、靜態(tài)外部變量的作用與外部變量相同D、靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束時(shí),仍保存其值,不會(huì)隨著消失。E、靜態(tài)局部變量只賦一次初值4、下列描述正確的是(

A

,C)。A、由main

函數(shù)及其參數(shù)argc和*argv[]可以實(shí)現(xiàn)命令行方式B、使用fclose關(guān)閉文件時(shí),先釋放文件指針,再寫緩沖區(qū)數(shù)據(jù)到文件中//先寫緩沖區(qū)數(shù)據(jù)到文件中,再釋放文件指針C、字符數(shù)組并不要求它的最后一個(gè)字符是‘\0’//是的,以字符指針指向的字符串才要求,因?yàn)橹挥羞@樣,才能知道字符串的長(zhǎng)度,而在字符數(shù)組中,不用\0,一樣可以知道到哪里是字符數(shù)組的結(jié)尾。D、‘A’和“A”都是字符串常量

E、若char*S=“\ta\017bc”;則指針變量S指向的字符串所占的字節(jié)數(shù)是75、在緩沖文件系統(tǒng)中用于讀寫的函數(shù)有(

A,B,D

)A、putchar()

B、fread()

C、rewind()

D、purw()

E、fseek()二、程序閱讀,并給出運(yùn)行結(jié)果(共10分,每題5分)。(1)main(){

unsigneda,b,x

intn;

a=0x763

輸出結(jié)果:

n=6;

b=a<<(12-n);

x=(a>>n-2)^b;

//+,-,的優(yōu)先級(jí)比<<,>>高。

printf(“\nb=%x,\nx=%x”,b,x);

在用2個(gè)字節(jié)表示整數(shù)的系統(tǒng)中結(jié)果為d8c0d8b6在用4個(gè)字節(jié)表示整數(shù)的系統(tǒng)中結(jié)果為1d8c01d8b6

故以上兩種結(jié)果都正確。

(2)#include

〈stdin.h〉

structm

{intx;int*y;

*p;

inta[4]={12,33,-40,100};

structmb[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[1]}'

main(){

p=b;

輸出結(jié)果:

printf(“%d\n”,++p->x);//->的優(yōu)先級(jí)高于++,因此等于是++(p->x),為11

printf(“%d\n”,(++p)->x);//p后移一個(gè)元素,其x值為9;

printf(“%d\n”,++(*p->y));

//->的優(yōu)先級(jí)高于*,

此時(shí)p已指向b[1],故*(p->y)為a[3]為100.自加后為101;}故輸出結(jié)果為:119101

三、程序設(shè)計(jì)(共10分)設(shè)在文件a.txt和文件b.txt中分別存有兩個(gè)字符串,設(shè)計(jì)一個(gè)程序?qū)⑦@兩個(gè)字符串按依序交叉的方式合并為一個(gè)字符串(例如“aaaaa”與“bbb”的合并結(jié)果為“abababaa”,而“bbb”與“aaaaa”的合作結(jié)果為“

bababaa”,)并將結(jié)果存入文件a.txt中?!敬鸢浮繉懗绦驎r(shí),可以分別讀取a.txt文件和b.txt文件,注意(1),無(wú)論a文件先讀完還是b文件先讀完,程序都能作出適應(yīng)性的判斷。注意(2)把a(bǔ)和b合并的結(jié)果,寫到一個(gè)臨時(shí)文件c中,最后把c的文件覆蓋到a文件中,達(dá)到題意的要求。#include<stdio.h>main(){

FILE*fp,*fq,*fr;

charch;

if((fp=fopen("a.txt","r+"))==NULL)

{printf("cannotopenfilea.txt");

exit(0);

網(wǎng)址:/doc/26/9315.html}

if((fq=fopen("b.txt","r"))==NULL)

{printf("cannotopenfileb.txt");

exit(0);

}

fr=fopen("c.txt","w+");

while(!feof(fp))

{

ch=fgetc(fp);

fputc(ch,fr);

if(!feof(fq))

{

ch=fgetc(fq);

fputc(ch,fr);

}

}

while(!feof(fq))

{

ch=fgetc(fq);

fputc(ch,fr);

}

rewind(fp);rewind(fr);

while(!feof(fr))

{

ch=fgetc(fr);

fputc(ch,fp);

}

fclose(fp);

fclose(fq);fclose(fr);

}

1.2

四川大學(xué)2001年攻讀碩士學(xué)位研究生入學(xué)考試試題

答案1.2.1第2001年――C語(yǔ)言程序設(shè)計(jì)

題目一、單項(xiàng)選擇題(在每小題的四個(gè)備選答案中,選出一個(gè)正確的答案,并將其號(hào)碼寫在答題紙上。請(qǐng)注意注明題號(hào)。每小題1分,共計(jì)6分)1、‘\t’表示什么?①字符串常數(shù)

②標(biāo)識(shí)符

③變量

④字符常量答案:④2、對(duì)宏定義不正確的描述是哪一個(gè)?①在進(jìn)行宏定義時(shí),可以引用已經(jīng)定義的宏名,可以層層置換//可以引用已經(jīng)定義了的宏名,可以層層置換②宏名的有效范圍包括本文件的任何位置//宏名的有效范圍定義命令之后到本源文件結(jié)束,可以用#define終止宏定義的作用域③寵定義不是語(yǔ)句,不必在行末加分號(hào)//是預(yù)處理定義語(yǔ)句④對(duì)程序中雙引號(hào)括起來(lái)的字符串,即使與宏名相同,也不進(jìn)行置換3、若定義staticchars[20]=”computer”;則執(zhí)行語(yǔ)句x=strlen(s);之后,x的值為多少?①20

②9

③8

④19//strlen函數(shù)計(jì)算char*型字符串的長(zhǎng)度的時(shí)候,并不包含末尾的\0;4、以下哪一個(gè)表達(dá)式取值是正確的?①6>5結(jié)果為6

②6&&5結(jié)果為7③6||5結(jié)果為7

④6<5結(jié)果為05、如定義enumweekday

{one,two,thr,fou,fiv};enumweekdayworking;以下哪個(gè)是不正確的枚舉變量的使用?①working=thr;

②working=2;③working=(enumweekday)2;④working=(enumweekday)(5-3);//不能對(duì)其賦值6、下列說(shuō)法中正確的是哪一個(gè)?①sizeof(char)

是結(jié)果為整型的表達(dá)式②sizeof(char)

是一個(gè)不合法的表示形式③sizeof(char)

是一種函數(shù)調(diào)用④sizeof(char)

是結(jié)果為實(shí)型的表達(dá)式二、閱讀程序,并回答問(wèn)題(共12分)1、下列程序的輸出是什么?(3分)#include<stdio.h>voidmain()﹛char*aplha[6]=

﹛“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”﹜;char**p;inti;p=aplha;for(i=0;i<4;i++)printf(“%s”,p[i]);printf(“\n”);﹜

//輸出結(jié)果ABCDEFGHIJKL剛好是字符串?dāng)?shù)組里面的前四個(gè)元素的內(nèi)容連接起來(lái)

2、下列程序?yàn)槭裁礋o(wú)法將用戶輸入的三個(gè)整數(shù)按從小到大排序輸出?應(yīng)該如何修改?(6分)#include<stdio.h>voidswap(intx,inty)﹛intt=x;x=y;y=t;﹜voidmain()﹛inta,b,c;scanf(“%d,%d,%d”,

&a,

&b,

&c);if(a>b)

swap(a,b);if(a>c)

swap(a,c);if(b>c)

swap(b,c);printf(“%d,%d,%d”,a,b,c);﹜//函數(shù)swap采用值傳遞,雖然將形參x和y交換了,但是并不影響到實(shí)參。將值傳遞改成指針傳遞就可以了。C函數(shù)參數(shù)采用值傳遞方式,雖然swap函數(shù)將形式參數(shù)x和y的值進(jìn)行了調(diào)換,但是影響不到相應(yīng)的實(shí)在參數(shù)。所以在主函數(shù)中,通過(guò)調(diào)用sawp函數(shù)調(diào)換a和b(或a或c,或b和c)的值是根本達(dá)不到目的的。修改:(1)(2分)voidswap(int*x,int*y)﹛intt=*x;*x=*y;*y=t;﹜(2)(2分)主函數(shù)if(a>b)

swap(&a,&b);if(a>c)

swap(&a,&c);if(b>c)

swap(&b,&c);

3、假設(shè)系統(tǒng)為基本整型量分配2個(gè)字節(jié),為字符型量分配1個(gè)字節(jié)。下列程序完成的功能是什么?(3分)#include<stdio.h>union﹛intn;charch[2];﹜u;voidmain()﹛intm;scanf(“%d”,&m);u.n=m;printf(“\n%u,%u”,u.ch[0],u.ch[1]);﹜

//該程序的功能,取用戶輸入的整數(shù)值的高字節(jié)和低字節(jié),并按照任意整數(shù)的低字節(jié)和高字節(jié)分別輸出。

三、程序設(shè)計(jì)題(12分)假設(shè)一個(gè)文本文件中保存著100個(gè)整數(shù),請(qǐng)將這100個(gè)整數(shù)按從小到大的順序?qū)懙搅硪粋€(gè)文本文件中去,并且在新文件中每10個(gè)整數(shù)占一行。源文件名和目標(biāo)文件名通過(guò)命令行參數(shù)獲取。

分?jǐn)?shù)分配:變量定義

2分命令行參數(shù)處理

1分文件打開(kāi)

1分文件讀

2分排序

3分文件寫

2分文件關(guān)閉

1分#include<stdio.h>voidmain(intargc,char*argv[])﹛FILE*fin,*fout;Inta[100],i,j,t;if(argc!=3)﹛printf(“Youforgottoenterafilename\n”);return;﹜fin=fopen(argv[1],“r”);fout=fopen(argv[2],“w”);for(i=0;i<100;i++)fscanf(fin,

“%d”,

&a[i]);for(i=0;i<99;i++)for(i=0;i<99-i;i++)if(a[j]>a[j+1])﹛t=a[j];a[j]=a[j+1];a[j+1]=t;﹜for(i=0;i<100;i++)﹛if(i%10=0)fprintf(fout,“%s”,“\n”);fprintf(fout,“%d”,a[i]);﹜fclose(fin);fclose(fout);﹜

1.3

四川大學(xué)2002年攻讀碩士學(xué)位研究生入學(xué)考試試題

答案1.3.1

第2002年――C語(yǔ)言題目C語(yǔ)言程序設(shè)計(jì)(共30分)一、單項(xiàng)選擇題(在每小題的四個(gè)備選答案中,選出一個(gè)正確答案。每小題1分,共6分)1、如果I為整型變量,f為float型變量,c表達(dá)式'a'+I*f的類型為

。A、字符型

B、整型

C、單精度型

D、雙精度型//即使是兩個(gè)float型的數(shù)據(jù)相加,都化成double型

float型的數(shù)據(jù)在運(yùn)算時(shí)一律轉(zhuǎn)化成雙精度型,提高其運(yùn)算精度2、關(guān)于c表達(dá)式5||(a=b+c)==3的值,正確的說(shuō)法為

。A、值為1

B、值為5

C、值為0

D、僅這一個(gè)表達(dá)式,不能確定值,必須知道a,b,c的值后才能計(jì)算。//等號(hào)==的優(yōu)先級(jí)高于||所以先計(jì)算(a=b+c)==3但是不論它為真或假,在與5進(jìn)行或運(yùn)算時(shí),按照或運(yùn)算的法則,只要一方為真,表達(dá)式的結(jié)果為真。

3、若整型變量a的值為50,則c表達(dá)式a>>2的值為

。A、50

B、25

C、12.5

D、12//每右移一位除以2,且由于a為整型,結(jié)果為整型4、若c,c1,c2均為字符型變量,下列語(yǔ)句執(zhí)行后。c='a';c1=++c;c2=c++;c1,c2的值分別為

。A、c1='b',c2='c'

B、c1='a',c2='c'

C、c1='b',c2='b'

D、c1='a',c2='b'//前加加,先加1后使用值,后加加是先使用其值在加加,所以c加加后的值賦予c1,c1得值b,c2先使用值,再加加,c2得值b5、以下c

語(yǔ)句執(zhí)行后,

inti,

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

('%d\n',i);輸出的內(nèi)容為

。A、0

B、9

C、10

D、11//i值在循環(huán)外定義,所以其值循環(huán)結(jié)束仍有意義,得值106、以下c語(yǔ)句執(zhí)行后,chars1[100]=″IlikeC1anguage″,s2[100];strcpy(s2,s1);strcat(s1,s2);puts(s2);輸出的內(nèi)容為

。A、I

B、IlikeClanguage

C、IlikeClanguageIlikeClanguageD、IlikeClanguageIlikeClanguageIlikeClanguage//連接后的串存在s1里,對(duì)s2沒(méi)有影響二、閱讀程序,寫出該程序的執(zhí)行結(jié)果。(4分)#include

〈stdio.h〉voidmain(

){

chara[3][10]={"Beijing","Shanghai","Chengdu"};charp1,(*p2)[10];p1=a[0];p2=a;printf("%c\n",*(a[1]+1));//a[1]代表是第一行字符串Shanghai,加1后得值第一個(gè)字符h的地址,*取出其地址里的值hprintf("%c\n",*(*(a+1)+2));//*(a+i)=a[i]

代表是第一行字符串Shanghai,加2后得值第2個(gè)字符a的地址,*取出其地址里的值printf("%c\n",*(p1+1));//p1是一字符指針,加一指向第零行第1個(gè)字符e的位置,*取出其地址里的值printf("%c\n",*(*(p2+1)+2));//p2為一指向數(shù)組的指針,p2是與數(shù)組名等價(jià)的指針,它指向2維數(shù)組的首行,p2+1指針指向了第一行字串Shanghai,加2后得值第2個(gè)字符a的地址,*取出其地址里的值printf("%s\n",*(p1+1));

//打印的從第一個(gè)字符開(kāi)始的第零行余下的字符串eijingprintf("%s\n",*(p2[2]);//p2[2]指的是第二行,打印第二行字符串Chengduprintf("%s\n",*(p2+1));

//p2+1指向的是第一行字符串shanghai三、按要求編寫函數(shù)。(8分)在一程序中定義了如下結(jié)構(gòu)類型用于處理單向鏈表:structlinkage

intvalue;

structlinkage*pNext;};現(xiàn)已經(jīng)編寫出按節(jié)點(diǎn)的成員a值從小到大建立初始鏈表的函數(shù)create(

),如下所示:

structlinkage*create(void){

structlinkage*pHead;inta[4]={2,1,3,5};pHead=NULL;for

(i=0;i<4;i++)pHead=addItem(pHead,a[i]);returnpHead;}在該函數(shù)的for循環(huán)前,pHead為NULL;在執(zhí)行整個(gè)for循環(huán)后,創(chuàng)建的鏈表如下所示:

即在被調(diào)函數(shù)addItem()中,需要?jiǎng)討B(tài)分配內(nèi)存,生成新節(jié)點(diǎn),將傳入的第二參數(shù)的值賦給該節(jié)點(diǎn)的成員value:并通過(guò)第一個(gè)參數(shù)鏈表首節(jié)點(diǎn)確定適當(dāng)位置放置該新節(jié)點(diǎn)。請(qǐng)完成函數(shù):structlinkage

溫馨提示

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