湖北經濟學院C語言程序設計題庫(八卷)及答案_第1頁
湖北經濟學院C語言程序設計題庫(八卷)及答案_第2頁
湖北經濟學院C語言程序設計題庫(八卷)及答案_第3頁
湖北經濟學院C語言程序設計題庫(八卷)及答案_第4頁
湖北經濟學院C語言程序設計題庫(八卷)及答案_第5頁
已閱讀5頁,還剩154頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

湖北經濟學院C語言程序設計題庫(一)

總分:150分考試時間:120分鐘

注意事項:

>題目包括五大部分,單項選擇題,判斷題,填空題,程序分析題,編程題,請按要求在

規定時間內作答。

>考試中途不能無端離場,否則視為放棄。考試過程中如遇問題請及時向監考老師反饋。

一、單項選擇題(每小題2分,共40分)

L程序必須在有限的步驟、有限的時間內執行完畢,指的是算法的()特點

A、確定性

B、有窮性

C、可行性

D、輸入

【答案】B

2、已知year為整型變量,不能使表達式

(year%4==0&&year%100!=o)||year%400==0的值為"真"的數據>_____。

A、1990

B、1992

C、1996

D、2000

【答案】A

3、以下不正確的語句(設有intp,q)是________

A、p*=3;

B、p/二q;

C、p+=3;

D、p&&=q;

【答案】D

4、設a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、

m=2、n=3則邏輯表達式(m二a>b)&&(n=c>d)運算后,n的值為,

A、0

B、1

C、2

D、3

【答案】D

5、有以下程序:

#include<stdio.h>

main(){

intc;

while((c=getchar())!=#\n')

switch(c-'3'){

case0:casel:putchar(c+4);

case2:putchar(c+4);

break;

case3:putchar(c+3);

case4:putchar(c+3);

break;

)

printf("\n");

)

從第一列開始輸入數據(<cr>代表f回車符):3845<cr>,則程序輸出結果為

A、77889

B、77868

C、776810

D、77886610

【答案】A

【解析】題中while循環的條件是:當從鍵盤讀入的字符不是‘\N時,執行

while循環。輸入第一個字符3時:執行case0,什么也不輸出;case1,輸

出7;case2,輸出7;遇到break語句,跳出switch語句。輸入第二個字符

8時:C-'3'=5,不執行任何語句。輸入第三個字符4時:c-'3'=1,執

行case1。輸出8;case2,輸出8;遇到break語句,跳出switch語句。輸

入第四個字符5時:C-'3'=2,執行case2,輸出9;遇到break語句,跳

出switch語句。

6、下列選項不屬于函數的組成部分是?

A、返回值類型

B、函數名

C、參數列表

D、局部變量

【答案】D

7、有以下程序:

main()

(

chara,b,c,d;

scanf("%c,%G%d,%d",&a,&b,&c,&d);

M

printf(%c/%c,%c,%c\n",afb,c,d);

若運行時從鍵盤上輸入65,65,66<回車>,則輸出結果是。

A、6,5,A,B

B、6,5,65,66

C、656,5

D、656,6

【答案】A

【解析】char型數據類型以%d的形式輸入時,輸入的是ASCH值。65是字符

A的ASCII碼值,66是字符B的ASCII值。

8、下面程序的輸出結果是____o

main()

inta[3][4]={l,3,5,7,9,11,13,15,17,19,21,23);

int(*p)[4]=aJjzk=0;

for(i=0;i<3;i++)for(j=0;j<2;j++)k=p[i][j];

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

)

A、17

B、18

C、19

D、23

【答案】C

【解析】p是指向長度為4的一維數組的指針變量,可看作是二維數組a的行

指針,可以像使用數組名一樣通過p帶數組下標的形式來引用數組中元素,變

量k最后是元素的值。

9、若要求在if后一對圓括號中表示a不等于0的關系,則能正確表示這一關系

的表達式為

A、a<>0

B、a

C、!a

D、a=0

【答案】B

10、以下正確的字符串常量是______O

A、"\\\"

Bs'abc'

C、OlympicGames

D

【答案】D

IL以下敘述中正確的是______o

A、一條語句只能定義一個數組

B、每個數組包含一組具有同一類型的變量,這些變量在內存中占有連續的

存儲單元

C、數組說明符的一對方括號中只能使用整型常量,而不能使用表達式

D、在引用數組元素時,下標表達式可以使用浮點數

【答案】B

【解析】A選項中,一條語句只能定義一個數組是不準確的,可以通過一條語句

定義多個數組;C選項中,數組說明符的一對方括號中可以是整型常量,可以是整

型常量表達式;D選項中,在引用數組元素時,下標表達式必須是整型的。因此B

選項正確。

12、有以下函數

intfun(char*s){

char*t=s;

while(*t++);

return(t-s)

)

該函數的功能是_____。

A、比較兩個字符串的大小

B、計算s所指字符串占用內存字節個數

C、計算s所指字符串的長度

D、將s所指字符串復制到字符串t中

【答案】C

13、a,b均為整數,且b!=0,則表達式a/b*b+a%b的值是______。

A、a

B、b

C、a被b除的整數部分

D、a被b除的商的整數部分

【答案】A

14、以下敘述不正確的是______。

A、一個C源程序可由一個或多個函數組成

B、一個C源程序必須包含一個main函數

C、C程序的基本組成單位是函數

D、在C程序中,注釋說明只能位于一條語句的后面

【答案】D

【解析】本題考杳C語言的基本基礎知識。在C程序中,注釋用符號7*〃開

始,而以符號"*/"結束。程序的注釋可以放在程序的任何位置。通常將注釋

放在程序的開始,以說明本程序的功能;或者放在程序的某個語句后面,以對

此語句的功能進行說明。無論將注釋放有何處,在程序進行編譯時,編譯程序

不會處理注釋的內容,且注釋內容也不會出現在目標程序中。

15、以下程序輸出的結果是.

#include<stdio.h>

voidmain()

(

inta[]={5,4,3,2,

longs=0;

for(i=0;i<5;i++)s=s*10+a[i];

R

printf(s=%ld\n"/s);

)

A、s=12345

B、s=54321

C、s=54321

D、以上都不對

【答案】C

16、下面程序的運行結果是______o

main()

(

intcl=2,c2=0;

while(!c2-)printf("%d%d",cl-/c2);

)

A、陷入死循環

B、不輸出任何內容

C、輸出2-1

D、輸出20

【答案】C

17、設有如下定義

structss

(

charname[10];

intage;

charsex;

}std[3],*p=std;

下面各輸入語句中錯誤的是______o

A、scanf("%d",&(*p).age);

B、scanf(H%s\&);

C、sean("%c",&std[0].sex);

D、scanf("%c",&(p->sex));

【答案】B

【解析】本題考核的知識點是結構型數組的應用。選項A中"&(*p).age〃代

表的是std[0]age的地址,是正確的,選項C也是正確的,選項D先用指針變

量引用結構型的成員sex,然后取它的地址,也是正確的,選項B中的

"”是錯誤的引用,因為std是數組名,代表的是數組的首地址,地

址沒有成員"name"。所以B選項為所選。

18、若下列語句組,則輸出結果是

intx=0;

if(x++<0)printf("%d",—x);

printf("%d\x++);

A、-1

B、1

C、-1-1

D、-10

【答案】B

19、有如下定義語句:inta[]={123,4,5},則對語句int*p=a;正確的描述是

A、語句int*p=a;定義不正確

B、語句int*p=a;初始化變量p,使其指向數組對象a的第一個元素

C、語句int*p=a;是據a[0]的值賦給變量p

D、語句int*p=a;是把a[l]的值賦給變量p

【答案】B

20、有以下程序

#include<studio.h>

#include<string.h>

structa

inta;

charb[10];

doublec;

);

voidf(structat);

main()

structaa={1001,"zhangda",1098.0};

f(a);

pringt("%d,%s,%6.1f\n",a.aza.b,a.c);

)

voidf(structat)

t.a=1002;

strcpy(t.b,"changrong");

t.c=1202.0;

)

程序運行后的輸出結果是______o

A、1001,ZhangDa,1098.0

B、1002,ChangRong,1202.0

C、1001,ChangRong,1098.0

D、1002,ZhangDa,1202.0

【答案】A

二、判斷題(每小題2分,共20分)

()L函數調用時,如果把數組名作實參,則形參數組元素的值發生變化時,實參數組元素

的值同時發生變化。

【答案】正確

()2、字符數組定義后,不能用賦值語句將一字符串常量或字符數組直接賦給一個字符

數組。

【答案】正確

()3、putchar函數可以向終端輸出一個字符串

【答案】錯誤

()4、內層break語句可以終止嵌套的switch,使最外層的switch結束。

【答案】錯誤

()5、函數strcmp從頭至尾頻序地將其對應字符比較,遇到兩個字符不等時,兩個字

符相減得到一個int型值,兩個字符串完全相同時,則返回0。

【答案】正確

()6、用strcat(字符串L字符串2)連接兩個字符串函數時,字符串1的存儲空間沒有限

制。

【答案】錯誤

()7、在c語言中,引用數組元素時,數組下標的數據類型只能是整型常量。()

【答案】錯誤

()8、c程序是由函數構成的,其中有且只有一個主函數main().

【答案】正確

()9、對于一個具體的函數來說,實參與形參不必一對應。

【答案】錯誤

()10、在同一源文件中,使用extern可將全局變量的作用域向上擴展。

【答案】正確

三.填空題(每小題4分,共20分)

1、在c語言中,'\ri表示。

【答案】回車換行#換行

2、若變量a,b已定義為int類型并賦值21和55,要求用printf函數以

a=21,b=55的形式輸出請寫出完整的的輸出語句

【答案】「printf(匕=%d,b=%d”,a,b);']

3、下面程序段中循環體的執行次數是_______

a=10;

b=0;

do

(

b+=2;

a-=2+b;

)

while(a>=0);

【答案】3次

4、局部變量的作用域是從定義的位置起,到____結束止。

【答案】函數

5、有函數調用funl(x+y,(y,z),10,fun((x,y-l)));

函數funl有【1】個參數。

【答案】4

四.程序分析題(每小題5分,共20分)

1、下面程序的運行結果是______。

main()

inta[5][5]fij/n=l;

for(i=0;i<5;i++)for(j=0;j<5;j++)a[i][j]=n++;

printf("theresultis:\n");

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

for(j=0;j<=i;j++)printf("%4d"/a[i][j]);

printf("\n");

)

)

【答案】167111213161718192122232425

2、#include<stdio.h>

voidmain()

(

inta[3][3]={{lf2}/{3/4},{5,6}}JJ/s=0;

for(i=l;i<3;i++)for(j=O;j<i;j++)s+=a[i][j];

printf(H%d\n,s);

)

【答案】14

【解析】該程序即計算a[即[0]+a[2][0]+a[2][l]的值,對應數組中的數為:

3+5+6=14。

3、有以下程序

#include<stdio.h>

main()

intm,n;

scanf("%d%d",&m,&n);

while(m!=n)

(

while(m>n)m=m-n;

while(m<n)n=n-m;

)

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

)

程序運行后,當輸入1463〈回車>時,輸出結果是______o

【答案】7

4、以下程序中,select函數的功能是:在N行M列的二維數組中,選出一個最大

值作為函數值返回,并通過形參傳回此最大值所在的行下標。請填空。

#defineN3

#defineM3select(inta[N][M],int*n)

(

inti,j,row=l,colum=l;

for(i=0;i<N;i++)for(j=0;j<M;j++)if(a[i][j]>a[row][colum])

row=i;

colum=j;

*n=;

return;

)

main()

(

inta[N][M]={9/ll/23/6,l,15,9/17/20)/max/n;

max=select(a,&n);

,

printf("max=%d/line=%d\n',max,n);

)

【答案】[Tow','a[row][colum]']

五、編程題(每小題分,共50分)

1、輸入n的值,計算并輸出l*l+2*2+3*3+4*4+5*5+...+n*n的值。要求編

寫函數f求平方。(本題12分)

【答案】#include

voidmain()

(

intf(intx);

intn,sum;

printf("

請輸n值:)

scanf("%d",&n);

sum=f(n);

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

)

intf(intx)

(

intj,z=O;

for(j=l;j<=x;j++)

z=z+j*j;

returnz;

)

2、編寫程序:鍵盤輸入一個八進制數字,用程序轉換為十進制(本題18

分)

【答案】#include<stdio.h>

#include<stdlib.h>

intmain()

(

intn=0,i=0;

chars[20];

prints請輸入一個8進制數:\n)

gets(s);

while(s[i]!='\O'){

n=n*8+s[i]-'O';

i++;

)

printf("剛輸入的8進制數轉化為十進制為\n%d\n”,n);

return0;

)

3、編寫程序:利用結構體類型,編程計算一名同學5門課的平均分。(本題

20分)

【答案】structstudent{

charname[30];

floatscore[5];

);

intmain(intargc,constchar*argv[])

(

structstudenta={"zhangsan",20,30,40,50,60);

floatsum=0;〃定義一個5科分數之和變量

floatAverageScore=0;〃定義一個平均分變量

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

sum=sum+a.score[i];

AverageScore=sum/5;

)

n姓名科成績平均分是:

printf(%s\n5%.lf^",AverageScore);

return0;

)

湖北經濟學院C語言程序設計題庫(二)

總分:150分考試時間:120分鐘

注意事項:

>題目包括五大部分,單項選擇題,判斷題,填空題,程序分析題,編程題,請按要求在

規定時間內作答。

>考試中途不能無端離場,否則視為放棄。考試過程中如遇問題請及時向監考老師反饋。

一、單項選擇題(每小題2分,共40分)

L下列關于指針運算的描述中,錯誤的是_______

A、在一定條件下,兩個指針可以相加

B、在一定條件下,兩個指針可以進行邏輯判斷

C、在一定條件下,指針可以為空值

D、在一定條件下,兩個指針可以相互賦值

【答案】A

【解析】本題考核指針的賦值和運算。在C語言中,指針可以進行賦值運算、

算術運算、比較運算(邏輯判斷)。但是在任何條件下,兩個指針都不能允許相

加。因為地址相加后可能會對內存進行不合法的訪問。所以選項A的描述是錯

誤的。

2、以下選項中,合法的一組c語言數值常量是______。

A、028

.5e-3

-Oxf

B、12.

OXa23

4.5eO

C、.177

4cl.5

Oabc

D、0x8A

10,000

3.e5

【答案】B

3、下面四個選項中,均是不正確的八進制數或十六進制數的選項是______o

A、0160x8f018

B、Oabc017Oxa

C、010-0x110x16

D、0al27ff-123

【答案】D

【解析】八進制中,不可能包括8以上的數字,它的范圍只在0~7之間,以0

開頭。同樣,十六進制是以Ox開頭,數字在0~9和A~F之間。

4、在c的if語句中,可用作條件的表達式是_______。

A、關系表達式

B、邏輯表達式

C、算術表達式

D、任意表達式

【答案】D

5、若變量已正確定義,有以下程序段

inti=0;

do

printf("%d,",i);

while(i++);

printf(M%d"J)其輸出結果是_______

A、0,0

B、0,I

C.1.1

D、程序進入無限循環

【答案】B

6、下列關于指針變量的描述,不正確的是_______

A、在沒有對指針變量賦值時,指針變量的值是不確定的

B、同類指針類型可以進行相減操作

C、在使用沒有賦值的指針變量時,不會出現任何問題

D、可以通過指針變量來取得它指向的變量值

【答案】C

【解析】沒有賦值的指針變量,可能指向任何地方,如果指向系統,那么使用

該指針可能導致系統崩潰。

7、若變量已正確定義為int型,要給a、b、c輸人數據,正確的輸入語句是

A、read(a,b,c);

B、scanf(n%d%d%d",a,b,c);

C、scanf("%D%D%D",&a,%b,%c);

D、scanf("%d%d%d「&a,&b,&c);

【答案】D

8、若定義staticinta[2][2]={l,2z3,4},則a數組的各數組元素分別為,

A、a[O][O]=l.a[0][l]=2xat[l][0]=3,a[l][l]=4

B、a[O][O]=l.a[0][l]=3.a[l][0]=2.a[l][l]=4

C、a[0][0]=4xa[0][l]=3xa[l][0]=2.s[l][l]=l

D、a[0][0]=4.a[0][l]=2.a[l][0]=3.a[l][l]=l

【答案】A

9、為了要計算s=10!(10的階乘),則以下對s的定義正確的是_______標識

符由字母,數字和下劃線組成且第一個字符必須為字母或下劃線auto自動變量

register寄存器變量extern外部變量static靜態變量

A、ints

B、unsigneds

C、shorts

D、longs

【答案】D

10、判斷字符串a和b是否相等,應當使用。

A、if(a==b)

B、if(a=b)

Cxif(strcmp(a,b))

Dxif(strcmp(a,b)==O)

【答案】D

11、下列程序的運行結果是。

main()

(

inta[6]J;

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

(

a[i]=4*(i-2*(i>3)}%5;

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

)

)

A、2323

B、1212

C、3232

D、2222

【答案】C

【解析】本題程序的功能是對數組元素賦值,難點是對表達式4*(i-2*(i>

3))%5的分析。

有以下函數

12xintfun(char*s)

char*t=s;

while(*t++);

return(t-s);

)

該函數的功能是______o

A、匕檄兩個字符串的大小

B、計算S所指字符串占用內存字節的個數

C、計算S所指字符串的長度

D、將S所指字符串復制到字符串t中

【答案】B

【解析】循環語句while(*t++);執行完時,指針變量t就指向了字符串結束符

'\0'之后的位置,所以語句return(t-s);返回的就是字符串s所用內存的字

節個數。

13、對for(表達式1;;表達式3)可理解為

A、for(表達式1;0;表達式3)

B、for(表達式1;1;表達式3)

C、for(表達式表達式3)

D、缺少一個表達式

【答案】B

14、以下關于字符串的敘述中正確的是

A、c語言中有字符串類型的常量和變量

B、兩個字符串中的字符個數相同時才能進行字符串大小的比較

C、可以用關系運算符對字符串的大小進行比較

D、空串一定比空格打頭的字符串小

【答案】D

15、有以下程序:

main()

{

ints,t,a=10;

doubleb=6;

s=sizeof(a);

t=sizeof(b);

printf("%d,%d\rT,s,t);

)

在vc6平臺上編譯運行,程序運行后的輸出結果是______o

A、2,4

B、1,4

C、4,8

D、10,6

【答案】C

16、以下敘述中錯誤的是______。

A、C語言是一種結構化程序設計語言

B、結構化程序由順序、分支、循環三種基本結構組成

C、使用三種基本結構構成的程序只能解決簡單問題

D、結構化程序設計提倡模塊化的設計方法

【答案】C

【解析】本題考查的知識點是:結構化程序設計。結構化程序由3種基本結構

組成:順序結構、選擇結構和循環結構。已經得到證明,由3種基本結構組成

的算法結構可以解決任何復雜的問題。故本題中選項。是錯誤的。

17、下列描述說明正確的是_______

A、定義結構體時,它的每個成員的數據類型可以不同

B、不同結構體的成員名不能相同

C、結構體定義時,其成員的數據類型不能是結構體本身

D、結構體定義時各成員項之間可用分號也可用逗號隔開

【答案】A

18、下列程序的輸出結果是_______

main()

{

chara[10]={9,8,7,6,5,43,2,1,0}/p=a+5;

printf("%d"/*-p);

)

A、非法

B、a[4]的地址

c、5

D、3

【答案】C

19、以下能正確定義一維數組的選項是

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]=w0123”;

【答案】B

20、若有下面的說明和定義:

structtest

(

intml;

charm2;

floatm3;

unionuu

(

charul[5];

intu2[2];

)

ua;

)

myaa;

則sizeof(structtest)的值是

A、12

B、16

C、14

D、9

【答案】A

二.判斷題(每小題2分,共20分)

()1、C語言程序中,出現非法字符時會發出錯誤信息。

【答案】正確

()2、關系表達式的值只能為1和0

【答案】正確

()3、數組名是一個指針,它可以指向數組中的任何元素。()

【答案】錯誤

()4、若有intk=1;

while(k=l)k++;

則while循環執行的次數是1次

【答案】錯誤

()5、c語言中,字符串常量存放在字符數組中要有一個結束符,該結束符是0。

【答案】錯誤

()6、數組名作為函數參數,傳送的是地址.

【答案】正確

()7、若有定義一維數組inta[4]的首地址為0078h廁a[l]元素的首地址是

0079h(設int型數據占兩個字節)。

【答案】錯誤

()8、在標準c中,變量定義一定要出現在函數開始部分

【答案】錯誤

()9、c語言中簡單變量作為實參時,它和對應的形參之間的數據傳遞方式是單向值傳

遞。

【答案】正確

()10、fseek函數一般用于文本文件。

【答案】錯誤

三、填空題(每小題4分,共20分)

1、以下程序對輸入兩個整數,按從大到小的順序輸出。請在—內填入正確的

內容。

voidmain()

(

intx,y,z;

scanf("%d,%d”,&x,&y);

if(_________)

(

z=x;

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

)

【答案】x<y|

x=y;

y=z;

【解析】其中這里用到了交換變量的方法,如果交換2個變量,則增加一個臨

時變量,然后讓三個變量在賦值語句中的位置形成一個環,如a=b;b=c;

如果是個變量交換,同樣是讓他們位置形成一個環。如

c=aonal=a2;

a2=a3;a3=...an-l=an;an=alo

2、在c語言中,用轉義字符\t表示答題提示:雙引號/單引號/反斜

線/橫向跳格/回車換行

【答案】橫向跳格

3、在循環的過程中,有時要提前中止循環,通常采用()語句。

【答案】break

4、已知charstr□="student,,則strlen(str)的值為o

【答案】7

5、在c語言中,如果采用printf函數將整個字符串一次輸出,那么對應的格式控

制符為"\

【答案】%s

四.程序分析題(每小題5分,共20分)

L輸入一個字符,如果它是大寫字母很駐巴它變成小寫字母,如果它是一個小寫字

母,則把它變成大寫字母,其它字符不變。請分析程序填空。

main()

charch;

scanf("%c",&ch);

if(LU1)ch=ch+32;

elseif(ch>='a'&&ch<='z')[2]

printf(n%c",ch);

【答案】【1】ch>='a'&&ch<='z,[2]ch=ch-32

2、有以下程序

#include<stdio.h>

main()

(

chara[20]="howareyou?",b[20];

scanf("%s",b);

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

)

程序運行時從鍵盤輸入:howareyou?〈回車〉則輸出結果為

【答案】['howareyouhow']

3、以下函數fun的功能是返回str所指字符串中以形參c中字符開頭的后續字

符串的首地址,例如:str所指字符串為:hell。!,c中的字符為e,則函數返回字符

串:ello!的首地址。若str所指字符串為空串或不包含c中的字符,則函數返回

nullo請填空。char*fun(char*str,charc)

intn=0;

char*p=str;

if(p!=null)while(p[n]!=c&&p[n]!=>\O')n++;

if(p[n]==f\0*)returnnull;

return();

)

【答案】「p+n']

4、下面程序的運行結果是_______

#include<stdio.h>

main()

(

inti,t,sum=0;

for(t=i=l;i<=10;)

(

sum+=t;

++i;

if(i%3==0)t=-i;

elset=i;

)

printf(wsum=%d",sum);

)

【答案】sum=19

五.編程題(每小題分,共50分)

1、打印出所有的“水仙花數",所謂"水仙花數”是指一個三位數,其各位數

字立方和等于該數本身。例如:153是一個"水仙花數",因為153二1的三次

方+5的三次方+3的三次方,(本題12分)

【答案】程序分析:利用for循環控制100-999個數,每例分解出個位,十

位,百位。

程序源代碼:

main()

(

inti,j,k,n;

printf("'waterflower'numberis:");

for(n=100;n<1000;n++)

(

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出個位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

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

)

)

printf(n\n");

2、求1+2+3+........+100。(本題18分)

【答案】#include<stdio.h>

voidmain()

(

intizsum=0;

for(i=l;i<=100;i++)

sum=sum+i;

printf("%d",sum);

)

3、給定N個職員的信息,包括姓名、基本工資、浮動工資和支出,要求編寫

程序順序輸出每位職員的姓名和實發工資(實發工資=基本工資+浮動工資一支

出I

輸入格式:

輸入在一行中給出正整數N。隨后N行,每行給出一位職員的信息,格式為

“姓名基本工資浮動工資支出",中間以空格分隔。其中"姓名"為長度小

于10的不包含空白字符的非空字符串,其他輸入、輸出保證在單精度范圍

內。

輸出格式:

按照輸入順序,每行輸出一位職員的姓名和實發工資,間隔一個空格,工資保

留2位小數。

輸入樣例:

3

zhao24040075

qian36012050

zhou56015080

輸出樣例:

zhao565.00

qian430.00

zhou630.00(本題20分)

【答案】#include<stdio.h>

structmessage

chara[9];

doublebasic;

doublefu;

doubleoutput;

};

structmessaged[100];

intmain()

(

intN;

doublef[100];

scanf("%d",&N);

for(inti=0;i<N;i++)

(

scanf("%s%lf%lf%lf",d[i].a,&d[i].basic/&d[i].fu/&d[i].output);

f[i]=d[i].basic+d[i].fu-d[i].output;

)

for(inti=0;i<N;i++)

(

printf("%s%.2f\n",d[i].aff[i]);

)

return0;

)

湖北經濟學院C語言程序設計題庫(三)

總分:150分考試時間:120分鐘

注意事項:

>題目包括五大部分,單項選擇題,判斷題,填空題,程序分析題,編程題,請按要求在

規定時間內作答。

>考試中途不能無端離場,否則視為放棄。考試過程中如遇問題請及時向監考老師反饋。

一、單項選擇題(每小題2分,共40分)

L在下列給出的表達式中,與while(e)中的(e)不等價的表達式是_______

A、(!E==0)

B.(E>0||E<0)

C(E==0)

D.(E!=0)

【答案】B

2、閱讀以下程序廁執行下面語句后m的值是_______

intw=l,x=2,y=3,z=4,m;

m=w<x?w:x;

m=m<y?m:y;

m=m<z?m:z;

A、1

B、2

C、3

D、4

【答案】A

3、下列選項不是c關鍵字的是______。

A、typedef

B、void

C、bool

D、inc

【答案】D

4、設變量x和y均已正確定義并賦值。以下if語句中,在編譯時將產生錯誤信

息的6______O

A、if(x++);

B、if(x>y&&y!=O);

C、if(x>0)x-elsey++;

D、if(y<0){;}elsex++;

【答案】C

【解析】c語言規定,在"if(表達式)語句l;else語句2這種形式的if語句

中,在每一個else前面有一個分號,整個語句結束處有一分號。在本題的C)

選項中,else前面少了一個分號,這樣程序在編譯時,會出現語法錯誤。

5、以下程序中,while循環的循環次數是_____。

main()

(

inti=0;

while(i<10)

if(i<1)continue;

if(i==5)break;

i++;

)

)

A、1

B、10

C、6

D、死循環

【答案】D

6、下列選項中,能夠正確定義數組的語句是________

A、intnum[0..2008];

B、intnum[];

C.intN=2008;

D、#defineN2008

intnum[N];intnum[N]

【答案】D

7、設intx=10,a=0,b=25;條件表達式x<l?a+10:b的值是

A、0

B、1

C、10

D、25

【答案】D

8、已知:inta[2][3];則對數組元素的非法引用是_______

A.*(a[0]+2)

B、.a[l]⑶

C、a[l][0]

D、*(*(a+l)+2)

【答案】B

9、以下標識符中,不能作為合法的c用戶定義標識符的是

A、answer

B、to

C、signed

D、_if

【答案】C

10、字符串指針變量中存入的是_______

A、字符串

B、字符串的首地址

C、第一字符

D、字符串變量

【答案】B

11、下列字符數組初始化語句中,不正確的是

A、charc[]=,goodmorning,;

B、chare[20]="goodmorning":

、,

Ccharc[]=('a/'b'/'c'/d');

D、charc[]={nffgoodmorning");

【答案】A

12、每個c程序中都必須有且僅有一個

A、類

B、預處理命令

C、主函數

D、語句

【答案】C

【解析】每個c程序中都要有且僅有一個主函數,該函數是程序的入口,而語

句、預處理命令和函數及類在程序中都可以有多個。

13、在16位編譯器環境下,double類型占多少字節?

A、2

B、4

C、1

D、8

【答案】D

【解析】在16位編譯器環境下,double類型占8個字節。

14、下面程序段輸出兩個字符串中對應相等的字符。請分析程序填空。

charx[]="programming";

chary[]="fortran";

inti=0;

while(x[i]!='\0,&&y[i]!=,\0)

if(x[i]==y[i])printf("%c\

elsei++;

A、x[i++]

B、y[++i]

C、x[i]

D、y[i]

【答案】A

15、以下程序的輸出結果是一

main()

(

charc='z';

printf("%c",c-25);

)

A、a

B、z

C、z-25

D、y

【答案】A

16、有以下程序:

main()

(

inti,j;

for(j=10;j<ll;j++)

(

for(i=9;i<j;i++)if(!(j%i))break;

if(i==j-l)printf(H%d"j);

)

)

輸出結果是_______o

A、11

B、10

C、9

D、1011

【答案】B

17、下列關于共用體類型變量的描述中,正確的是______

A、可以對共用體變量直接賦值

B、一個共用體變量可以同時存放其所有的成員

C、一個共用體變量中不可以同時存放其所有的成員

D、共用體類型定義中,不能出現結構體類型的成員

【答案】C

18、以下程序E殳運行后的結果是_______

intx=lzy=2,z=3;

y+=x+=z;

printf("%d",x<y?x++:y++);

A、6

B、5

C、4

D、3

【答案】C

【解析】請仔細閱讀交規難度:簡單

19、以下敘述中正確的是_____

A、每個數組包含一組具有同一類型的變量,這些變量在內存中占有連續的

存儲單元

B、一條語句只能定義一個數組

C、數組說明符的一對方括號中只能使用整型常量,而不能使用表達式

D、在引用數組元素時,下標表達式可以使用浮點數

【答案】A

【解析】數組的元素是同一類型,占用連續空間,所以選擇A。

20、設有下面的定義:

structst

inta;

floatb;

}d;

int*p;

要使p指向結構變量d中的a成員,正確的賦值語句是_______o

A、*p=d.a;

B、p=&a;

C、p=d.a;

D、p=&d.a;

【答案】D

【解析】本題主要考杳按結構數組元素方式引用結構成員。結構體變量的成員

引用方法有3種:①結構體變量名,成員名;②指針變量名?>成員名;③(*指

針變量名).成員名。因為p是指針變量,所以應該將地址值賦給po

二.判斷題(每小題2分,共20分)

()1、在標準C語言中,共用體變量中的各成員是共同占用一塊存儲空間

【答案】正確

()2、c語言中整型、實型和字符型都屬于基本數據類型。

【答案】正確

()3、c語言約定、0'計入字符串的長度。

【答案】錯誤

()4、循環體如包括有一個以上的語句,則必須用{}括起來,組成復合語句。

【答案】正確

()5、在c語言中,字符數組可以存放字符串。()

【答案】正確

()6、使用strcpy(字符數組,字符串)函數時,字符數組長度沒有限制。

【答案】錯誤

()7、對字符數組元素進行引用時,可以一次引用整個數組。

【答案】錯誤

()8、在c程序中,函數既可以嵌套定義,也可以嵌套調用。()

【答案】錯誤

()9、在c程序中,不同函數中所定義的變量允許同名

【答案】正確

()10、要使用標準輸入、輸出函數,正常情況下應該在文件的開頭加上以下內容:

#include<stdio.h>

#include"stdio.h"o

【答案】正確

三、填空題(每小題4分,共20分)

LC語言中,關系表達式和邏輯表達式的值是1//0

【答案】

2、若inta=3,b=2,c=l,f;表達式f=a>b>c的值是___

【答案】0

3、下列程序段的運行結果是一。

main()

(

intn,s=0;

for(n=l;n<=6;n++)

(

if(n%3==0)continue;

s=s+n;

)

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

)

【答案】12

4、函數strlen(“1234\0xy”)的值為:

【答案】9

5、C語言替換字符的函數是什么?

【答案】strcpy(a,b);

四.程序分析題(每小題5分,共20分)

1、輸入一個3*3的實數矩陣求主對角線元素中的最大值。

main()

(

floats[3][3],maxl,max2/x;

inti,j;

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

(

scanf("%f",&x);

s[i][j]=x;

)

max=s[0][0];

for(i=l;i<3;i++)if(max<)max=;

printf("maxl=%f\n'max);

)

【答案】

2、下列程序段的運行結果是______o

#defineadd(x,y)x+y

main()

inta,b,s;

A=5,b=6;

S=add(a,b);

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

)

【答案】s=ll

3、以下程序的運行結果是

inti=O;

main()

(

inti=5;

reset(i/2);

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

reset(i=i/2);

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

reset(i/2);

printf("i=%d\n"J);

workover(i);

printf(ni=%d\nH,i);

}

workover(inti)

(

i=(i%i)*((i*i)/(2*i)+4);

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

returni;

)

reset(inti)

(

i=i<=2?5:0;

returni;

)

【答案】j=5i=2i=2i=0i=2

4、以下程序運行的結果為()

#include<stdio.h>

voidfunl(int*ajnt*b)

(

int*c;

c=a;

a=b;

b=c;

)

voidfun2(int*ajnt*b)

(

intc;

c=*a;

*a=*b;

*b=c;

)

voidmain()

(

intx=3,y=5,*p=&x,*q=&y;

funl(pzq);

printf("%d,%d,",*p,*q);

fun2(p,q);

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

)

【答案】3,5,5,3

五.編程題(每小題分,共50分)

1、編寫程序:編程序實現求1-10之間的所有數的乘積并輸出(本題12分)

【答案】#include<stdio.h>

voidmain()

{inti;

longsum=l;

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

sum=sum*i;

printf("thesumofoddis:%ldM,sum);

)

2、編寫程序:計算sum=l?l/3+l/5?l/7+…+1/19(本題18分)

【答案】#include<stdio.h>

main()

(

inti;

floatsum=0,k=-l;

for(i=l;i<=19;i=i+2)

(

sum=sum+1.0/i*k;

k=-k;

)

printf("%f"fsum);

getch();

)

3、編寫input。和output。函數,輸入輸出5個學生記錄,每個記錄包括

num、name、score[3],使用結構體實現。(本題20分)

【答案】#include<stdio.h>

structstudent{

intnum;

charname[20];

intscore[3];

}stu[5];

voidinput(structstudent*pstu){

intnj;

for(n=0;n<5;n++){

printf("Inputstudentsnum:");

scanf("%d",&pstu[n].num);

printf(n\n");

printf("Inputstudentsname:");

scanf("%s",&pstu[n].name);

printfCXn");

printf(MInputstudentsscore:");

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

scanf("%d",&pstu[n].score[j]);

)

printf(n\n");

)

)

voidoutput(structstudentstu[]){

inti=0j;

for(i;i<5;i++){

printf("%d,%s",stu[i].num,stu[i].name);

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

printf("%3d",stu[i].score[j]);

)

printfCAn");

)

)

intmain(){

voidinput(structstudent*pstu);

voidoutput(structstudentstu[]);

input(stu);

output(stu);

)

湖北經濟學院C語言程序設計題庫(四)

總分:150分考試時間:120分鐘

注意事項:

>題目包括五大部分,單項選擇題,判斷題,填空題,程序分析題,編程題,請按要求在

規定時間內作答。

>考試中途不能無端離場,否則視為放棄。考試過程中如遇問題請及時向監考老師反饋。

一、單項選擇題(每小題2分,共40分)

L分塊語句(塊if)的控制轉移中,有一些基本的規則,下列()條規則是最不正確的。

A、T塊IF必須與一個ENDIF語句相對應

B、一個塊IF語和ENDIF語句間可以含有零個或多個ELSEIF語句

C、一對塊IF語句和ENDIF語句間可含有一個零或零個SLSE塊

D、允許越過塊IF語句頭進入核IF嵌套層

【答案】D

2、下面單位換算中,正確的是_______

A、1KB=1024X1024B

B、1KB=1O24MB

C、1MB=1024X1024B

D、1GB=1O24B

【答案】C

【解析】存儲器容量常用的單位有KB、MB、GB、TB,換算關系如下:

1TB=1024GB

=1024x1024MB=1024x1024x1024KB=1024x1024x1024x1024B

3、已知[x/2]補=c6h,計算機的機器字長為8位二進制編碼,則岡補二(11)。

A、8CH

B、18H

C、臼H

D、F1H

【答案】A

【解析】已知[X/2]補=C6H,C6H化成二進制數是11000110,求其真值,得

到-0111010。再乘以2(即左移一位)得?1110100,求此數的補碼可得

10001100,8CHO

4、能正確表示a和b同時為正或同時為負的邏輯表達式是_______

A、(a>=0||b>=0)&&(a<0||b<0)

B、(a>=0&&b>=0)&&(a<0&&b<0)

C、(a+b>0)&&(a+b<=0)

D、a*b>0

【答案】D

5、以下for語句中不是死循環的是_______

A、for(inti=0;i<1;i++);

B、for(inti=0;i++);

C、for(inti=l;i>0;++i);

D、for(;

【答案】A

【解析】考查循環語句for的使用。

[解題要點]for循環的一般格式為for(初始化部分;終止條件判斷部分;迭代部

分){循環體;}說明如下:for循環開始時,首先執行初始化操作,然后判斷終

止條件是否滿足,如果滿足,則執行循環體中的語句,最后執行迭代部分。完

成一次循環后,重新判斷終止條件。

作昔解分析]在for語句中,如果省略了終止條件判斷部分,開且在語句中沒有

break,或者是終止條件判斷部分始終沒有終止,者閥各出現死循環。

[考點鏈接]for循環語句可由while循環語句來代替。

6、以下答案中不是c語言最基本數據類型的是______。

A、邏輯型

B、整型

&字符型

D、指針型

【答案】A

7、以下選項中可作為c語言合法整數的是______。

A、10110B

B、0386

C、OXffa

D、x2a2

【答案】C

8、下列程序的執行結果是

#include<stdio.h>

unionun{

inti;

charc[2];

)

voidmain(){

unionunx;

x.c[0]=10;

x.c[l]==l;

printf("\n%d",x.i);

)

A、266

B、11

C、265

D、138

【答案】A

【解析】由于本題定義的是共用體,所以成員表列中的整型變景x與字符數組

c共占用同一個存儲單元,且此存儲單元為2個字節,通常c[0]位于低字節,

c[l]位于高字節,所以x.i的值為266。

9、在c語言中,以下敘述不正確的是.

A、在C程序中,無論是整數還是實數,都能被準確無誤的表示

B、在C程序中,變量名代表存儲器中的一個位置

C、靜態變量的生存期與整個程序的生存期相同

D、C語言中變量必須先定義后引用

【答案】A

10、在下列各項中,運算級別最低的為。

A、算術運算符

B、關

溫馨提示

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

評論

0/150

提交評論