亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

c語言試題及答案

學(xué)人智庫 時(shí)間:2018-01-14 我要投稿
【www.ishadingyu.com - 學(xué)人智庫】

以下關(guān)于c語言試題及答案 分享給大家,歡迎閱讀借鑒。更多內(nèi)容請(qǐng)繼續(xù)關(guān)注unjs網(wǎng)。

c語言試題及答案

《C語言試題及答案》簡(jiǎn)介開始:C語言部分一、選擇題(每小題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+1a[1]的地址;*(a+1)的。。此內(nèi)容文章屬于《考試資料》欄目,以上內(nèi)容為《C語言試題及答案2011-6-6 19:22:09》簡(jiǎn)單介紹,正文正式開始》》》

C語言部分

一、選擇題(每小題2分,共10分)

(下在各小題,分別有一個(gè)或多個(gè)正確答案,請(qǐng)將所有正確答案的編號(hào),填寫在該小題題干后的括號(hào)內(nèi)。錯(cuò)選或漏選均不得分)。

1、若定義:int a[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ù)組長度可以不指定 D、形參數(shù)組長度可以大于實(shí)參數(shù)組長度

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è)字符是‘’

//是的,以字符指針指向的字符串才要求,因?yàn)橹挥羞@樣,才能知道字符串的長度,而在字符數(shù)組中,不用,一樣可以知道到哪里是字符數(shù)組的結(jié)尾。

D、‘A’和“A”都是字符串常量

E、若char*S=“ a17bc”;則指針變量S指向的字符串所占的字節(jié)數(shù)是7

5、在緩沖文件系統(tǒng)中用于讀寫的函數(shù)有( A,B,D )

A、putchar () B、fread() C、rewind () D、purw() E、fseek()

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

(1)main()

{ unsigned a,b,x

int n;

a=0x763 輸出結(jié)果:

n=6;

b=a<<(12n);

x=(a>>n2)^b; //+,,的優(yōu)先級(jí)比<<,>>高。

printf(“ b=%x, x=%x”,b,x);

在用2個(gè)字節(jié)表示整數(shù)的系統(tǒng)中

結(jié)果為

d8c0

d8b6

在用4個(gè)字節(jié)表示整數(shù)的系統(tǒng)中

結(jié)果為

1d8c0

1d8b6

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

(2) #include 〈stdin.h〉

struct m {int x;

int *y;

} *p;

int a [4]={12,33,40,100};

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

main()

{

p=b; 輸出結(jié)果:

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

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

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

//>的優(yōu)先級(jí)高于*, 此時(shí)p已指向b[1],故*(p>y)為a[3]為100.自加后為101;

故輸出結(jié)果為:

11

9

101

三、程序設(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中。

【答案】

寫程序時(shí),可以分別讀取a.txt文件和b.txt文件,注意(1),無論a文件先讀完還是b文件先讀完,程序都能作出適應(yīng)性的判斷。注意(2)把a(bǔ)和b合并的結(jié)果,寫到一個(gè)臨時(shí)文件c中,最后把c的文件覆蓋到a文件中,達(dá)到題意的要求。

#include

main()

{

FILE *fp,*fq,*fr;

char ch;

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

{ printf("cannot open file a.txt");

exit(0);

}

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

{ printf("cannot open file b.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語言程序設(shè)計(jì) 題目

一、單項(xiàng)選擇題(在每小題的四個(gè)備選答案中,選出一個(gè)正確的答案,并將其號(hào)碼寫在答題紙上。請(qǐng)注意注明題號(hào)。每小題1分,共計(jì)6分)

1、‘ ’表示什么?

①字符串常數(shù) ②標(biāo)識(shí)符 ③變量 ④字符常量

答案:④

2、對(duì)宏定義不正確的描述是哪一個(gè)?

①在進(jìn)行宏定義時(shí),可以引用已經(jīng)定義的宏名,可以層層置換

//可以引用已經(jīng)定義了的宏名,可以層層置換

②宏名的有效范圍包括本文件的任何位置

//宏名的有效范圍定義命令之后到本源文件結(jié)束,可以用#define終止宏定義的作用域

③寵定義不是語句,不必在行末加分號(hào)

//是預(yù)處理定義語句

④對(duì)程序中雙引號(hào)括起來的字符串,即使與宏名相同,也不進(jìn)行置換

3、若定義static char s[20]=”computer”;則執(zhí)行語句x = strlen(s);之后,x的值為多少?

①20 ②9 ③8 ④19

//strlen函數(shù)計(jì)算char*型字符串的長度的時(shí)候,并不包含末尾的;

4、以下哪一個(gè)表達(dá)式取值是正確的?

①6>5結(jié)果為6 ②6&&5結(jié)果為7

③6||5結(jié)果為7 ④6<5結(jié)果為0

5、如定義

enum weekday {one, two, thr, fou, fiv};

enum weekday working;

以下哪個(gè)是不正確的枚舉變量的使用?

①working = thr; ②working =2;

③working = (enum weekday)2;

④working = (enum weekday) (53);

//不能對(duì)其賦值

6、下列說法中正確的是哪一個(gè)?

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

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

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

④sizeof (char) 是結(jié)果為實(shí)型的表達(dá)式

二、閱讀程序,并回答問題(共12分)

1、下列程序的輸出是什么?(3分)

# include

void main ()

char * aplha [6] = ﹛“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”﹜;

char **p;

int i;

p = aplha;

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

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

printf (“ ”);

//輸出結(jié)果

ABCDEFGHIJKL

剛好是字符串?dāng)?shù)組里面的前四個(gè)元素的內(nèi)容連接起來

2、下列程序?yàn)槭裁礋o法將用戶輸入的三個(gè)整數(shù)按從小到大排序輸出?應(yīng)該如何修改?(6分)

# include

void swap (int x, int y)

int t = x;

x = y;

y = t;

void main ()

int a, 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ù)中,通過調(diào)用sawp函數(shù)調(diào)換a和b(或a或c,或b和c)的值是根本達(dá)不到目的的。

修改:

(1)(2分)

void swap (int *x, int*y)

int t = *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

union

int n;

char ch [2];

﹜u;

void main ()

int m;

scanf (“%d”,&m);

u.n = m;

printf (“ %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)文件名通過命令行參數(shù)獲取。

分?jǐn)?shù)分配:

變量定義 2分

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

文件打開 1分

文件讀 2分

排序 3分

文件寫 2分

文件關(guān)閉 1分

# include

void main(int argc, char *argv[])

FILE *fin, *fout;

Int a [100], i, j, t;

if(argc!=3)

printf (“ You forgot to enter a filename ”);

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”, “ ”);

fprintf (fout, “%d”, a[i]);

fclose (fin);

fclose (fout);

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

1.3.1 第2002年――C語言題目

C語言程序設(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的值,正確的說法為 。

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均為字符型變量,下列語句執(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得值b

5、以下c 語句執(zhí)行后,

int i, s=0;

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

printf ('%d ', i);

輸出的內(nèi)容為 。

A、0 B、9 C、10 D、11

//i值在循環(huán)外定義,所以其值循環(huán)結(jié)束仍有意義,得值10

6、以下c語句執(zhí)行后,

char s1[100] =″I like C 1anguage″,s2[100];

strcpy(s2, s1);

strcat (s1, s2);

puts (s2);

輸出的內(nèi)容為 。

A、I B、I like C language C、I like C language I like C language

D、I like C language I like C language I like C language

//連接后的串存在s1里,對(duì)s2沒有影響

二、閱讀程序,寫出該程序的執(zhí)行結(jié)果。(4分)

# include 〈stdio.h〉

void main ( )

{ char a [3] [10]={"Beijing ","Shanghai", "Chengdu"};

char p1, (*p2)[10];

p1=a[0];

p2=a;

printf("%c ",*(a[1]+1));

// a[1]代表是第一行字符串Shanghai,加1后得值第一個(gè)字符h的地址,*取出其地址里的值h

printf("%c ",*(*(a+1)+2));

// *(a+i)=a[i] 代表是第一行字符串Shanghai,加2后得值第2個(gè)字符a的地址,*取出其地址里的值

printf("%c ",*(p1+1));

//p1是一字符指針,加一指向第零行第1個(gè)字符e的位置,*取出其地址里的值

printf("%c ",*(*(p2+1)+2));

//p2為一指向數(shù)組的指針,p2是與數(shù)組名等價(jià)的指針,它指向2維數(shù)組的首行,p2+1指針指向了第一行字串Shanghai,加2后得值第2個(gè)字符a的地址,*取出其地址里的值

printf("%s ",*(p1+1));

//打印的從第一個(gè)字符開始的第零行余下的字符串eijing

printf("%s ",*(p2[2]);

//p2[2]指的是第二行,打印第二行字符串Chengdu

printf("%s ",*(p2+1));

//p2+1指向的是第一行字符串shanghai

三、按要求編寫函數(shù)。(8分)

在一程序中定義了如下結(jié)構(gòu)類型用于處理單向鏈表:

struct linkage {

int value;

struct linkage *pNext;

};

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

create ( ),如下所示:

struct linkage * create (void )

{

struct linkage * pHead;

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

pHead=NULL;

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

pHead=addItem(pHead,a[i]);

return pHead;

在該函數(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:并通過第一個(gè)參數(shù)鏈表首節(jié)點(diǎn)確定適當(dāng)位置放置該新節(jié)點(diǎn)。

請(qǐng)完成函數(shù):

struct linkage * addItem (struct linkage *pHead, int value );

返回值指向單向鏈表頭節(jié)點(diǎn)。

你可能用到下面的動(dòng)態(tài)內(nèi)存分配函數(shù)。

void* malloc (unsigned int size);其作用是在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配一個(gè)長度為size的連續(xù)空間。返回值為指向分配域起始地址的指針。

1、在空鏈表中加第一個(gè)節(jié)點(diǎn)2分;

2、加到當(dāng)前鏈表頭節(jié)點(diǎn)前2分;

3、加到當(dāng)前鏈表頭節(jié)之后適當(dāng)位置,可分為兩步。2分;

4、其它部分2分,包括整體結(jié)構(gòu),變量定義,返回值。

struct linkage *addItem (struct linkgae *pHead ,int value)

{ struct linkage *p ,*q,*r,*s;

p=pHead;

if (!p)

{ r=(struct linkage *) malloc (sizeof (struct linkage));

r>a=value;

r>pNext =NULL;

pHead=r;

else if (value <=p>a)

{ r=(struct linkage *) malloc (sizeof (struct linkage));

r>a=value;

r>pNext =p;

pHead=r;

else

{ q=p>pNext;

while (q)

if (value<=q>a)

break;

else

{ p=q;

q=p>pNext;

r=(struct linkage *)malloc (sizeof (struct linkage));

r>a=value;

r>pNext=q;

p>pNext=r;

return pHead;

四、程序設(shè)計(jì)。(12分)

單位HTML文件由標(biāo)簽,標(biāo)題和正文主體等部分組成。如下所示:

〈HTML〉

〈HEAD〉

〈TITLE〉HTML標(biāo)題部分

〈/HEAD〉

這里是HTML文件的主體部分。

換新行。

〈/HTML〉

符號(hào)"<與">"及其之間的內(nèi)容是標(biāo)簽,如〈HTML〉,等。其它部分是標(biāo)題和主體。請(qǐng)按以下說明和要求完成程序,將簡(jiǎn)單的HTML文件轉(zhuǎn)換為TXT文件:

1. 序?qū)⒑?jiǎn)單HTML文件的有標(biāo)簽和換行符( )(去掉。標(biāo)題部分結(jié)束(遇到標(biāo)簽)后加上一個(gè)換行符( )。每一個(gè)

標(biāo)簽換成一個(gè)換行符( )。其余部分原樣保留。如上面的簡(jiǎn)單HTML文件處理為(↙表示換行):

HTML標(biāo)題部分↙

這里是HTML文件的主體部分。↙

換新行。

2.簡(jiǎn)單HTML文件的標(biāo)簽內(nèi)沒有嵌套情況,即在"<和">"這間不會(huì)再出現(xiàn)"<或">"。

3.標(biāo)簽內(nèi)的內(nèi)容大小寫無關(guān)。如

,

,

等價(jià)。

4.示簽的"<和">"與標(biāo)簽內(nèi)容間無空格。即不會(huì)出現(xiàn)

或< BR>等情況。

5.標(biāo)題和正文中不會(huì)出現(xiàn)"<和">"字符,它們通過轉(zhuǎn)義字符實(shí)現(xiàn),這時(shí)尤需考慮。

6.程序需要處理命令行參數(shù)。第一個(gè)參數(shù)指要處理的HTML文件名,第二個(gè)參數(shù)指定處理后要存放的文件名。這兩個(gè)文件都是文本文件。

7.程序必須進(jìn)行必要的出錯(cuò)處理,如無法打開文件等。

8.程序不需要包含頭文件。

1、main()函數(shù)形參處理:2分。

2、變量定義1分。

3、打開關(guān)閉文件2分;

4、讀源文件1分;

5、能從標(biāo)簽中找出內(nèi)容〈BR〉〈/TITLE〉換為' '部分2分;

6、區(qū)分開標(biāo)簽和其它部分,并按要求寫入目標(biāo)文件2分;

7、整體結(jié)構(gòu)正確2分;

void main (int argc, char *argv[])

{ char C,tag[7];

int status ,len ;

FILE*fin,*fout;

if (argc!=3)

{ printf("參數(shù)個(gè)數(shù)不對(duì)!")

exit (1)

if ((fin=fopen (argv [1],"r")))==NULL)

{

printf(“打不開源文件”);

exit(1);

}

if ((fout=fopen (argv [2],"w")))==NULL)

{

printf("無法寫入文件!");

fclose (fin);

exit (1);

}

status =0;

while ((c=fgetc (fin)))!=EOF)

switch (C)

{

case '<':

status=1;

len=0;

break;

case ‘>’:

status=0;

if(len<=6)

tag[len]=0;

if(!strcmp(tag,”/title”)||!strcmp(tag,”br”))

fputc(‘ ’,fout);

break;

case ' ':break;

default:

if (! status)

fputc (c,fout);

else

{ len++;

if (len<=6);

tag[len1]=c;

fclose (fin);

fclose (fout);

1.4 四川大學(xué)2003年攻讀碩士學(xué)位研究生入學(xué)考試試題及 答案

1.4.1 第2003年――C語言題目

C語言程序設(shè)計(jì)(40分)

一、分析下面的 程序,寫出程序執(zhí)行結(jié)果。(每小題4分,共2分)

1、

#include 〈stdio.h〉

void swap (int **p1,int **p2)

{ int *t;

t=*p1;

p1=p2;

*p2=t;

void main( )

{ int a=1、b=3、*p=&a、*q=&b;

swap(&p、&q);

printf('%d、5d、%d、%d "、a、b、*p、*q;

}

//因?yàn)樵趕wap函數(shù)里交換的是兩個(gè)參數(shù)的地址,所以參數(shù)使用的是兩級(jí)指針,表示交換的是指針的地址,最終使p指向了b,q指向了a。

1,3,3,1

2.

# include

void merge (char *d、char sl、char、S2)

{ while (*sl!='' && *S2!='')

if (*sl<*s2)

d++=*sl++;

else

d++=*s2++;

while (*sl!=') *d++=sl++;

while (*s2!='') *d++=s2++;

*d='',

}

void main( )

{ char sl="acdgh",s2="bcfhi",s3[20];

merge(s3,s1,s2);

puts(s3)

}

//將兩個(gè)字符串合為一個(gè)按照字母順序排列的串

abccdfghhi

二、按要求完成C函數(shù)。(每小題10分,共20分)

1.int maxsameChar(char *s);

該函數(shù)計(jì)算字符串 s中最大連續(xù)相同的字符個(gè)數(shù)。例如,若s 為"aaabbbb",則返回值為4;若s為"abcde",則返回值為1。

int maxSameChar (char *s)

{ int temp=1, max=0;

char c='';

while (*s)

{ if (c==*s)

tmpe++;

else

{ c=*s;

temp=1;

if (max

max=temp;

s++;

return max;

2. struct mode *reverse(struct mode *pHead);

其中,struct node 定義如下:

struct node

{ int key ;

struct node *pNext;

};

此函數(shù)傳入的pHead指向要處理的單向鏈表頭,該鏈表以NULL指針結(jié)束。函數(shù)實(shí)現(xiàn)鏈表鏈接方向(包括pHead 指向的原頭節(jié)點(diǎn))的反轉(zhuǎn),如圖1所示。并將新鏈表頭指針作為函數(shù)值返回。在完成此函數(shù)時(shí),你只能利用原有鏈表節(jié)點(diǎn),不能申請(qǐng)新節(jié)點(diǎn)空間。

struct node* reverse (struct node* pHead)

{ struct nodt *p,*q,*t;

if (pHead==NULL)

return NULL;

p=pHead;

q=p>pNext;

while (q! NULL)

{ t =q>pNext;

q>pNext=p;

p=q;

q=t;

pHead>pNext=NULL;

pHead=p;

return pHead;

三、按要求完成簡(jiǎn)單的客車車次查詢程序。(12分)

某車站需要一個(gè)簡(jiǎn)單的客車車次查詢程序。說明如下:

1. 客車車次數(shù)據(jù)文件checi.txt放在c:data目錄下,格式為:

T8 成都 北京西 09:30

1364 成都 北京西 14:20

K118 攀枝花 北京西 22:00

… … …

其中每行為一次車的信息,分為4個(gè)數(shù)據(jù)項(xiàng):車次,始發(fā)站,終點(diǎn)站和離開本站時(shí)間。前三個(gè)數(shù)據(jù)項(xiàng)留的寬度為8字符,最后一項(xiàng)結(jié)束后即換行。數(shù)據(jù)項(xiàng)間一定有空格隔開,每一數(shù)據(jù)項(xiàng)內(nèi)無空格。

2.你的程序?qū)τ脩敉ㄟ^命令行參數(shù)指一的車次,在客車車次數(shù)據(jù)文件中查找相應(yīng)車次信息并輸出該次車的始發(fā)站,終點(diǎn)站和離開本站時(shí)間,如果未找到,則輸出“找不到該次車信息!”。

3.你的程序可以使用標(biāo)準(zhǔn)的C庫函數(shù),可以不引用文件。程序中應(yīng)給出必要的注釋。

int main (int argc, char *argv [ ])

{ char info [4] [20];

FILE * fp;

int I,found=0;

if (argc!=2)

{ printf("參數(shù)個(gè)數(shù)不正確! ");

return 1;

fp=fopen ("c:checi. txt ","r");

if (fp==NULL)

{ printf ("無法打開數(shù)據(jù)文件! ");

return 1;

while (! feof (fp))

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

fscanf (fp,"%s",info[i]);

if (!stricmp (info[0],argv[1]))

{ found=1;

printf("始發(fā)站:%s ",info [1]);

printf("始發(fā)站:%s ",info [2]);

printf("離本站時(shí)間:%s ",info [3]);

break;

if (! found )

printf("找不到該次車信息! ");

return 0;

1.5 四川大學(xué)2004年攻讀碩士學(xué)位研究生入學(xué)考試試題及 答案

1.5.1 第2004年――C語言題目

C語言程序設(shè)計(jì)(40分)

一、寫出下列表達(dá)運(yùn)算后a的值,設(shè)a,b 均為 int ,每個(gè)表達(dá)式運(yùn)算到a=2,b=3。(5分)

(1) a+=b*5

//a=a+b*5,為17

(2) a=b++

//a=3

(3) a%=(a%=b)

//結(jié)果為0

(4) a=a>b&&b>a||a

//>的優(yōu)先級(jí)高于&&和||原式理解為(a>b)&&(b>a)||a

&&運(yùn)算符高于||,原式理解為((a>b)&&(b>a))||a,因?yàn)閍值為2,結(jié)果為1真;蜻\(yùn)算是有一為1

(5) a=!b

//!的運(yùn)算符最高,<其次,&&最小原式理解為((!b)

二、下面的程序構(gòu)造一個(gè)有向圖,請(qǐng)畫出其示意圖。(10分)

include 〈stdio.h〉

struct node /*有向圖的節(jié)點(diǎn)類型*/

{ int key;

struct node *left,*right,*up,*down;

};

int main (int argc ,char * argv [])

{ int i;

struct node nodes[5];

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

{ nodes [i].key=i;

nodes [i].left=NULL;

nodes [i].right=NULL;

nodes [i].up=NULL;

nodes [i].down=NULL;

nodes [0].left=nodes+1;

nodes [1].left=nodes;

nodes [1].up=nodes+2;

nodes [2].down=nodes+3;

nodes [3].right=nodes+4;

nodes [4].up=nodes;

nodes [4].down=nodes+1;

return 0;

三、按要求完成函數(shù)。(10分)

int sameChar sAT SamePos (char *s1,char *s2);

兩個(gè)字符串的字符進(jìn)行同位置比較,返回相同的字符數(shù)(串結(jié)束符‘’不比較)。

例如,若s1="abc",s2="Abc",則返回值為2。

int sameCharAtSame Pos (char *s1,char *s2)

{

int counter =0;

while (*sl && *s2)

{

if (*s1 == *s2)

counter ++;

s1++;

s2++;

return counter;

四、按要求編寫程序?qū)σ环N特殊字符串解碼。(15分)

要處理的特殊字符串由A,C,G,U四個(gè)字符組成,如下所示:

ACUGCCCAUGAAAAACUUUUGACAC

其有效信息子串從第一次出現(xiàn)“AUG”后開始,遇到“UGA”結(jié)束(不包括“AUG”和“UGA”。)如上面的編碼串需解碼的有效子串為:

AAAAACUUU

有效子串中每3個(gè)字符(如“AAA”,“CGA”)作為一個(gè)密碼子(可以保證,有效子串的長度一定為3的整數(shù)倍。)可能的密碼子(62種)及相應(yīng)碼值以如下形式放在編碼文件code.txt中(按密碼子字典序排列);

AAA K

AAC N

…………

UUU F

請(qǐng)編寫C程序?qū)Υ娣旁谖募械奶厥庾址獯a,在屏幕輸出解碼串。如:KNF

KNE

要求:

1、編碼文件code.txt放在c盤根目錄下;

2、要解碼的特殊字符串以文件形式存放,其串長不超過1024字符;

3、你編寫的程序應(yīng)能處理命令參數(shù),指定要解碼的字符串文件;

4、程序中可以使用C語言的標(biāo)準(zhǔn)庫函數(shù),不需要寫出頭文件;

5、程序中應(yīng)有必有的注釋。

#include 〈stdio.h〉

#include 〈string.h〉

struct

{

char name[4];

char code;

} table [62];

int main (int argc,char *argv [ ])

{

FILE *code? file=NULL, *string file =NULL;

char string [1024+2],buffer[4],*p,*end ;

int I;

/* 檢查命令行參數(shù)*/

if (argc<=1)

/*打開編碼文件以及待解碼文件*/

code? file=fopen ("c:code. txt","r");

string file =fopen (argv[1],"r");

if (code_file= = NULL | | string_file = =NULL)

return 1;

/* 讀編碼文件,將結(jié)果記入表中 */

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

{

fscanf(code_file, "%s %c ", tabie[i], name, &table[i].code);

}

/*讀待解碼文件內(nèi)容到string中 */

fgets (string, sizeof (string), string_file);

/* 掃描有效子串頭 */

p= strstr(string, "AUG");

end = strstr (p + 3 , "UGA");

/*讀有效子串,查表輸出解碼字符,直到子串尾 */

for (p+=3; p

{

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

{

buffer [i] = p [i];

}

buffer [i] ='';

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

{

if (strcmp (buffer, table [i].name)) = = 0)

{

printf("%c", table[i]. code);

break;

}

}

}

/* 關(guān)閉編碼文件以及待解碼文件 */

fclose (code_file);

fclose (string_file);

return 0;

}

1.6 四川大學(xué)2011年攻讀碩士學(xué)位研究生入學(xué)考試試題及 答案

1.6.1 第2011年――C語言題目

C語言程序設(shè)計(jì)(50分)

一、 讀程序,寫執(zhí)行結(jié)果(8分)

1、

#include

int main( )

{ int a=4,b=3,c=1,x;

x=a>b;

printf(“%d ”,x);

//結(jié)果為1

x=a+b++;

printf(”%d ”,x);

//結(jié)果為6

x=a>b;

printf(”%d ”,x);

//結(jié)果為假,0

x=c&&b==c;

printf(”%d ”,x);

//==的運(yùn)算級(jí)高于&&, c&&(b==c)結(jié)果為假0

return0;

}

2.

#include

int main( )

{ inti,j;

for(I=0;I=8;I+=2)

{ for(j=0;j<(8I)/2;j++

printf(”+”);

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

printf(”*”);

printf( ”);

}

return0;

}

++++*

+++***

++*****

+*******

二.按要求完成函數(shù)。(28分)

1. 一種最簡(jiǎn)單的字符串加密方法是將字符串的每一字符加上一個(gè)偏移量offset(不考慮溢出)。請(qǐng)編寫木相應(yīng)的編解碼函

數(shù),其原型分別為:

char*encode(char*s,int offset);

char *decode(char *s,offset);

char *encode(char *s,int offset)

{

char *p=s;

while (*p)

{

*p +=offset;

}

renturn s;

}

char *decode(char *sm int iffset)

{

char *p= s;

while(*p)

{

*p=offset;

}

return s;

}

2編寫函數(shù)將兩個(gè)節(jié)點(diǎn)值遞增的單向鏈表歸并為一個(gè)。要求利用原節(jié)點(diǎn)空間。鏈表節(jié)點(diǎn)定義為:

struct node

{ int value;

struct node *pNext;

};

函數(shù)原型為:

struct node *merge(struct node *a, struct node *b);

其中a,b為要?dú)w并的兩個(gè)單向鏈表頭節(jié)點(diǎn)指針,函數(shù)返回值為歸并后的單向鏈表頭節(jié)點(diǎn)指針。

struct node

{

int value

struct node *pNext;

}

struct node *merge(struct node *a, struct node *b)

{

struct node *p;

struct node *q

struct node *t;

if (a>value <=b>vaLue)

{

p=a;

q=b

}

else

{

p=b

q=a;

}

t=p;

while (q)

{

if (p>pNext ==NULL)

{

P>Pnext=q

break;

}

if (q>value

pNext>value)

{

struct node.*k=q>pNext;

q>pNxt=p>pNext;

p>pNext=q;

q=k;

continue;

}

p=p>pNext;

}

return t;

}

三.編寫程序模擬數(shù)字LED顯示。(14分)

編寫程序完成如下功能:用戶鍵盤輸入最多四位的整數(shù),在屏幕上以類似LED方式顯示。如用戶輸入為:

8234

則輸出

其中每個(gè)數(shù)字字模均為7行×4列。09+個(gè)數(shù)字的字模順序地以文本形式存放在方件C:font.txt中。

要求:

1、 輸出的各數(shù)字間有1個(gè)空格;

2、 你的程序可以使用C語言標(biāo)準(zhǔn)庫函數(shù),不需要寫出頭文件;

3、 程序中應(yīng)有必有的注釋。

char font[10][7][5];

94 int n;

95 int digit[4];

96 int length=0;

97

98/ * 裝載字體文件 */

99 void load fontsO

100 {

101 int I, j, k;

102 FILE *file;

103

104 file = fopen(”c:font”,”r”);

105 if (file==NULL)

106 {

107 printf(” 打開字體文件 font. Txt 錯(cuò)誤|n”);

108 exit(1);

109 }

110

111 for (k = 0; k<10;k++)

112 {

113 for (I=0; I<7; I++)

114 {

115 char line[10];

116 fgets(line, 5, file);

117 for (j=0; j<4;j++)

118 {

119 font[k][I][j]=line[j];

120 }

121 font[k][I][4]=0;

122 }

123 }

124

125 fclose(file);

126 }

127

128/* 將輸入的整數(shù)解碼為單個(gè)的數(shù)字*/

129 void decode()

130 {

131 int I;

132 int m=n;

133 for (I=0; I <4;I++)

134 {

135 digit[I]=m % 10;

136 m =m/10;

137

138 if (m==0)

139 break;

140 }

141

142 length = I + 1;

143 if (length >=4)

144 length=4;

145 }

146

147 /* 顯示LED */

148 void disnlav()

149 {

150 int I,j;

151 for (I=0; I<7;I++)

152 {

153 for (j = lengthI; j>=0;j__)

154 {

155 printf(”%s”, font[j][I]);

156 printf(” ”);

157 }

158 printf(” ”);

159 }

160 }

161

162 int main()

163 {

164

165 load fonts();

166

167 scanf(”%d”, &n);

168 decode();

169 display();

170 }

C語言試題及答案的延伸閱讀——c語言學(xué)習(xí)體會(huì)

記得上次開班會(huì)的時(shí)候我吹牛說要和你們一起學(xué)習(xí)c語言,不知不覺已經(jīng)快半個(gè)月拉。我得對(duì)自己的話負(fù)責(zé)。今天我把借來的教材看了看,以前真的是不了解,今天才知道它是貝爾實(shí)驗(yàn)室的設(shè)計(jì)師Dennis在1972年設(shè)計(jì)的。c語言是其他計(jì)算機(jī)語言的基礎(chǔ),其他的計(jì)算機(jī)語言都是在它的基礎(chǔ)上研發(fā)。所以學(xué)好c語言對(duì)于以后要在自動(dòng)化專業(yè)有所發(fā)展的同學(xué)是非常有好處的,尤其是將來的plc編程、電子產(chǎn)品設(shè)計(jì)等等,都需要用到c語言。

今天我學(xué)習(xí)了一個(gè)最最簡(jiǎn)單的程序,感覺十分有收獲,明白了它的最基本的道理——它也是一門語言,和我們的漢語是一樣的,它也有自己的語法、邏輯結(jié)構(gòu),只要是能真正的去理解它,還是很容易學(xué)會(huì)的。

今天學(xué)習(xí)的程序如下:

#include

#include

main()

{

double x,s;

printf("input number: ");

scanf("%lf",&x);

s=sin(x);

printf("sine of %lf is %lf ",x,s);

}

這個(gè)的功能

[c語言試題及答案]