2013年C語言程序設(shè)計(jì)試卷-A卷(正式用卷)_第1頁
2013年C語言程序設(shè)計(jì)試卷-A卷(正式用卷)_第2頁
2013年C語言程序設(shè)計(jì)試卷-A卷(正式用卷)_第3頁
2013年C語言程序設(shè)計(jì)試卷-A卷(正式用卷)_第4頁
2013年C語言程序設(shè)計(jì)試卷-A卷(正式用卷)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)學(xué)院2012-2013學(xué)年第2學(xué)期C語言程序設(shè)計(jì)考試試卷A卷(或B卷): A卷 閉卷(或開卷):閉卷 考試時(shí)間:2013年 7 月 5 日專業(yè) 班級(jí) 學(xué)號(hào) 學(xué)生姓名 題號(hào)一二三四五六七總分核對人題分10101010202020100得分注意:試卷后面附有運(yùn)算符的優(yōu)先級(jí)和結(jié)合性表。得分評卷人一、 單項(xiàng)選擇題(在下面每小題的A、B、C、D四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請選擇正確的選項(xiàng)并填寫到括號(hào)內(nèi),選擇正確得分。本大題共10小題,每小題1分,共10分。) 1、以下為正確的標(biāo)識(shí)符是 【 】A、 forB、u.3 C、3c D、DO2、以下為合法的整型常量是 【 】A、-1U B、01111

2、001B C、ffff D、01383、下列數(shù)據(jù)中屬于字符串常量的是 【 】A、'a' B、"a"b"c" C、'123' D、"a"b"c"4、表達(dá)式-a+b中記號(hào)(token)的個(gè)數(shù)是 【 】A、3個(gè) B、4個(gè) C、5個(gè) D、6個(gè)5、 -3的16位補(bǔ)碼是 【 】A、0xfffd B、0x1011 C、0x7ffdD、0x00036、 以下為正確的轉(zhuǎn)義字符是 【 】A、'' B、'' C、'0x12' D、'0f1'7

3、、設(shè)有聲明: enum U,V,W=0,X,Y=0,Z a; 則值為1的枚舉常量的個(gè)數(shù)是 【 】A、1個(gè)B、2個(gè)C、3個(gè)D、4個(gè)8、設(shè)有聲明: 【 】union U long a; short b; char c; char s20; v=0x01020304,*p=&v;則下列選項(xiàng)正確的是A、printf("%dn",sizeof(v)輸出4B、printf("%dn",p->s0)輸出4C、printf("%dn",v.c)輸出1D、printf("%xn",v.b)輸出1029、設(shè)有聲明和語句:

4、FILE *fp; fp=fopen("c:abc.dat","r+"); 【 】則下列選項(xiàng)正確的是A、打開文件的文件名為abc.datB、打開的是二進(jìn)制文件C、打開的是文本文件D、打開的文件只能進(jìn)行讀操作10、設(shè)有如下代碼片段: 【 】int a=1,2,3,4,5,i;char *p=(char *)a;for(i=0;i<3;i+)printf("%d ",*(p+=sizeof(int)-sizeof(int);printf("n");則該代碼片段的輸出結(jié)果是A、1 2 3 4 5B、1 2 3C、1

5、 1 1D、2 3 4得分評卷人二、 多項(xiàng)選擇題(下面每小題的A、B、C、D備選項(xiàng)中,有兩個(gè)或兩個(gè)以上的選項(xiàng)是正確的,請選擇正確的選項(xiàng)并填寫到括號(hào)內(nèi)。本大題共5小題,每小題2分,共10分。)1、設(shè)有聲明:char s="abcdefg",*p=s,ch;則運(yùn)算結(jié)果為e的選項(xiàng)有 【 】A、ch=s4;B、*(p+4);C、*(s+4);D、*s 2、設(shè)有聲明:int x=10,y=20,*p=&x;下面選項(xiàng)中非法的表達(dá)式有 【 】A、y+=*p;B、*p+1=y;C、y+1=x;D、x=y+=10;3、設(shè)有聲明: int a=5,b=10,t;則下面各表達(dá)式功能及結(jié)果

6、都相同的有 【 】A、a+=b,b=a-b,a-=b B、a*=b,b=a/b,a/=b C、a=b,b=a,a=b D、t=b,b=a,a=t4、設(shè)part.exe程序帶形如int main(int argc,char *argv).的 【 】main函數(shù)。則輸入命令行:part.exe abc.dat def.dat xyz.dat uvw.dat 時(shí)下面選項(xiàng)正確的有A、printf("%dn",argc)輸出5B、printf("%dn",argc)輸出4C、printf("%sn",argv1)輸出abc.datD、print

7、f("%cn",argv22)輸出f5、設(shè)有以下說明: 【 】struct T unsigned short a : 1;unsigned short b : 2;unsigned short c : 3;unsigned short d : 4;unsigned short e : 6; x,*p=&x;則下面對字段變量各成員賦值正確的有A、x.a = 2 B、p->b = 3 C、*p.c = 4 D、x.d = 5得分評卷人三、 填空題(本大題共10小題,每小題1分,共10分。)本大題的第1題至第5題請參考下面的說明,請計(jì)算出表達(dá)式的值和類型并填入各題前

8、面的括號(hào)中,各題的表達(dá)式相互無關(guān)。以下程序假設(shè)在32位機(jī)上運(yùn)行。char c1=A, c2;unsigned short i=65535,j=2;short int m=4, n=1;float x=7.34, y=7.0;【 】 1、c2=c1+j 【 】 2、m=i 【 】 3、m=n<<j 【 】 4、n<m&&(int)x=(int)y 【 】 5、sizeof(int)+sizeof(c1) 本大題的第6小題至第10小題請參考下面的說明,請計(jì)算出表達(dá)式的值并填入各題前面的括號(hào)中,各題的表達(dá)式相互無關(guān)。struct T int i;char c20;c

9、har *pc;struct T *next; t2=2,“final exam.”,t2.c,NULL,t1=1,“This is the”,t1.c,&t2, *p=&t1; 【 】6、t1.i【 】7、p->c0【 】8、t1.next->i【 】9、*+p->pc【 】10、p->next->next=p,t2.next->i得分評卷人四、 判斷改錯(cuò)題 (先判斷下面各題中是否存在錯(cuò)誤;如果存在錯(cuò)誤,請改正之;否則不必改。本大題共5小題,每小題2分,共10分。)1、本小題的程序段如下:char s120="abcde"

10、;,s220;s2=s1;2、以下代碼段接受從鍵盤輸入的字符串,并輸出:char *p;gets(p);printf("%s",p);3、定義一個(gè)帶參的宏THR (x),它求x的三次方,#define THR(x) (x)*(x)*(x) 4、輸出2維數(shù)組元素m12的代碼片段如下:int m34, (*p)4=m;p=p+1;printf("%d", *p2);5、下面程序希望計(jì)算并輸出2n。例如輸入2,程序輸出4;輸入3,程序輸出8。#include "stdio.h"int f(void);int main(void)int i,

11、n;scanf("%d",&n);for(i=1;i<n;i+)f();printf("2的%d次方是: %dn",n,f();return 0;int f()int f=1;return f*=2;得分評卷人五、簡答題(本大題共5小題,每小題4分,共20分)1. 寫一個(gè)表達(dá)式,判斷字符變量ch的值是否是字母。2. 寫一個(gè)表達(dá)式,將unsigned short int型數(shù)x的高低字節(jié)對調(diào)。3. 定義一個(gè)帶參的宏ABS(e),用來求表達(dá)式e的絕對值。表達(dá)式e的類型可以是char、short、int或long,宏調(diào)用表達(dá)式的值為e的絕對值。4.

12、 用完全等效的新代碼段替代以下代碼,要求新代碼段中不得使用轉(zhuǎn)移語句。for (i=2; i*i<=n; i+) if (!(m = n % i) break;5.設(shè)p是長度為3的函數(shù)指針數(shù)組,該數(shù)組中元素的類型為指向無參字符指針函數(shù)的指針。請寫出相應(yīng)的聲明語句。得分評卷人六、閱讀程序并寫出其運(yùn)行結(jié)果(本大題共5小題,每小題4分,共20分。)1、請寫出下面程序的運(yùn)行結(jié)果。#include<stdio.h>int f(int m) switch(m) case 0:break; case 1:m+; case 2:m-; return m;int main(void) int i

13、=0,a=2,1,0,m; while(m=f(ai)i+;printf("%d ",m); return 0;2、 請寫出下面程序的運(yùn)行結(jié)果。#include "stdio.h"int s(int *p,int n);int main(void)int a3=1,2,7;printf("the result is %dn",s(a,3);return 0;int s(int *p,int n)if(n=0)return 0;elsereturn (*p + s(p+1,n-1);3、請寫出下面程序的運(yùn)行結(jié)果。#include &qu

14、ot;stdio.h"#include "math.h"int f(int n);int main(void) int i,a3=3,10,7,*p=a;for(i=0;i<3;i+)if(f(pi)printf("%dt",*(p+i);printf("n"); return 0;int f(int n)int i,m,flag=0;for (i=2; i<=sqrt(n); +i) if(!(m = n % i) break; if (m) flag=1; return flag;4、請寫出下面程序的運(yùn)行結(jié)果

15、。#include<stdio.h>void f(char * s,int c)char ch; while(ch=*(s+)if('a'<=ch && ch<='z') cch-'a'+=1;else if ('A'<=ch && ch<='Z') cch-'A'+=1; int main(void)char a="Keep on going never give up"static int count26,i

16、;f(a,count);for(i=0;i<26;i+) if(counti>2)printf("%ct",'A'+i); return 0; 5、請寫出下面程序的運(yùn)行結(jié)果。#include<stdio.h>typedef structint m;int n; pair_t;int f(int x,int n,int s,pair_t * r) int i,j; i=0,j=n-1; while(i<j) if(xi+xj=s)r->m=i,r->n=j;return 1; if(xi+xj<s) i+;els

17、e j-; return 0;int main(void) int a=2,3,4,7,9,11,12,16,s=16; pair_t r; if(f(a,8,s,&r)printf("%d %d %d",ar.m,ar.n,s);else printf("No solution!"); return 0;得分評卷人七、完善程序(本大題有,3小題,給出的都是部分程序,通過填空來完善程序。本大題共10空,每空2分,共20分。)1、 本大題第、空請參閱下面的部分程序。程序說明 下面的程序輸出:BooksBooks are our friends.請將

18、下面程序中、處應(yīng)該完善的內(nèi)容填寫在本小題后、后面的下劃線處。#include<stdio.h> char* copy(char to, char from); char *mystrcat(char *t,char *s);int main(void)char a80,b40="Books ",c40="are our friends."printf("%sn",copy(a,b);printf("%sn", (a,c);return 0; char * copy (char to, char from

19、 ) /* 拷貝串from到串to */int i=0;while(toi=fromi)!='0') ;return to; char *mystrcat(char *t,char *s) /* 連接串s到串t的尾部*/int i=0,j=0;while(ti!=0) i+;while(sj!=0)ti=sj,i+,j+;ti= ;return t; 2、 本大題第、空請參閱下面的部分程序。程序說明 下面的程序首先用直接插入法對數(shù)組a排序,然后用二分查找法在a中找輸入值y。請將下面程序中、應(yīng)該完善的內(nèi)容填寫在本小題后、后面的下劃線處。#include<stdio.h>

20、;int BinSearch(int a, int n,int x);void InsertSort(int x, int n);int main(void) int a10=9,1,52,-12,2,26,48,32,15,16; int y,index; InsertSort(a,10); scanf("%d",&y); if(index=BinSearch(a,10,y)!=-1) printf("%dn",index); else printf("a中不存在%dn",y); return 0;/* 直接插入排序算法,

21、對n個(gè)整數(shù)遞增排序 */ void InsertSort(int x, int n) int i,j,t; for (i=1; i<n; i+) /* 依次將xi插入到有序區(qū) */ t = xi; /* 使用變量t臨時(shí)保存待插入元素xi */for (j=i-1; j>=0 && t < xj; j-) /* 在有序區(qū)中查找應(yīng)插入的位置 */ _ _ _ = xj; /* 后移一個(gè)位置 */ xj+1 = t; /* 插入 */ /* 采用二分法在n個(gè)數(shù)組成的有序序列a中查找x, 找到,返回x在a中的下標(biāo)值,否則,返回-1。 */ int BinSearch(

22、int a, int n,int x) int low,high,mid,i,j,temp;low=0;high = _ _ _ ;while(low <= high) mid= (low+ high)/ 2;if (x = amid) _ _ _;else if(x<amid) high= mid- 1;else low= mid + 1; return -1; 3、本大題第、空請參閱下面的部分程序。程序說明 約瑟夫環(huán)問題。約瑟夫環(huán)問題的一種描述是:編號(hào)為1,2,3,n 的n個(gè)人按順時(shí)針方向圍坐一圈 ,每人手持一個(gè)密碼(正整數(shù)),開始任意選一個(gè)整數(shù)m,從第一個(gè)人開始順時(shí)針自1開始

23、順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù)。報(bào)m的人出列,將他的密碼作為新的m值,從下一個(gè)人開始重新從1開始報(bào)數(shù),如此下去直到所有的人全部都出列為止。 下面的程序利用循環(huán)單鏈表(即將單向鏈表尾結(jié)點(diǎn)指針域的指針指向該鏈表的頭結(jié)點(diǎn))結(jié)構(gòu)模擬此過程,循環(huán)單鏈表的特點(diǎn)是鏈表中最后一個(gè)節(jié)點(diǎn)的指針域指向第一個(gè)節(jié)點(diǎn),從而使鏈表形成一個(gè)環(huán),如圖1示。圖1 循環(huán)單鏈表結(jié)構(gòu)程序運(yùn)行后首先要求用戶輸入總?cè)藬?shù)以及每人的密碼,建立鏈表。然后輸入初始報(bào)數(shù)值,開始報(bào)數(shù),按照出列的順序輸出各人的編號(hào)。例如,當(dāng)人數(shù)為7,密碼分別為3 ,1,7,2,4,8,4時(shí),輸入初始報(bào)數(shù)值20,正確的結(jié)果:6 1 4 7 2 3 5 請將下面程序中、應(yīng)該完

24、善的內(nèi)容填寫在本小題后、后面的下劃線處。#include<stdio.h>#include<stdlib.h>typedef struct node int num; /* 編號(hào) */ int code; /* 密碼 */struct node *next; lnode; int n; /* n為人的總個(gè)數(shù) */void creatlist(lnode *phead)int i,key; /* key為輸入的密碼 */ lnode *p,*s,*head; head=(lnode *)malloc(sizeof(lnode); /*為頭結(jié)點(diǎn)分配空間*/ p=head; printf("Please enter the num of the person: "); /*輸入人的總個(gè)數(shù)*/ scanf("%d",&n); for(i=1;i<=n;i+) printf("Person %d code: ",i); scanf("%d",&key); /*輸入各個(gè)人的密碼*/ s=p; p=(lnode *)malloc(sizeof(lnode); /*創(chuàng)

溫馨提示

  • 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

提交評論