97《計算機程序設計基礎》解答卷981_第1頁
97《計算機程序設計基礎》解答卷981_第2頁
97《計算機程序設計基礎》解答卷981_第3頁
97《計算機程序設計基礎》解答卷981_第4頁
97《計算機程序設計基礎》解答卷981_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1、 指針運算,字符串是指針2、 是轉(zhuǎn)義符,n是一個字符計算機程序設計基礎試卷一、 從下列四個供選擇的答案中選出最正確的一個答案(每題2分,共20分)1、 語句printf(“%s%d”,”Hello World!”+2,strlen(“next”); 將輸出:A) llo World!4 B) Hello World!2 C) llo World!5 D) 上述語句語法有錯運算符的優(yōu)先級:算術運算符(+)優(yōu)先于邏輯運算符(&&), 14&&15=12、 執(zhí)行下列程序段后,a值為:int a,b;a=15; b=-1;同時整除要用&&,整除要用!

2、(i%2)a=a+b&&a; A) 15 B) 0 C) 1 D) 163、 判斷整型變量i,j可同時被2整除的表達式(i,j同時被2整除返回1,否則返回0)是:A) !(i%2)|!(j%2) B) !(i%2)&&!(j%2) C) (i%2)&&(j%2) D) (i%2)|(j%2)4、 C語言while語句中,用于判斷循環(huán)結束的表達式是:A)關系表達式 B)邏輯表達式 C)算術表達式 D)任意表達式 1 2 3 4 5s>i F F F F Ts 0 0 1 3 6i 0 1 2 3 4 5、 下列for循環(huán),將執(zhí)行for(i=0

3、,s=0; i<10; i+) if(s>i) break; else s += i;A)10次 B) 1次 C) 3次 D) 以上均不是6、 下列程序段執(zhí)行后s值為:i 1 2 3 4 5 6 7 8 9 !(i%2) F T F T F T F T Fs 1 1 4 4 9 9 16 16 25int i=1,s=0;do if(!(i%2) continue; s += i; while(+i<10);A)1 B) 45 C) 25 D) 以上均不是7、 對于int a;則表達式1<=a<=5值是:<=自左而右運算(1<=a)<=5 0 |

4、 1 <=5 = 1A) 0 B) 1 C) 不定 D) 表達式語法有錯8、 執(zhí)行下列語句后,a的值為:M(a,b)>6a=b>6a=(b>6) 1int a=12, b=7;#define M(x,y) x=y;M(a,b)>6;A) 0 B) 1 C) 12 D) 7*p=s,*q=s+1相差一個結構(2個整數(shù))(int *)q (int *)p相差2個整數(shù)9、 對于以下結構定義:struct int x; int y; s10,*p=s,*q=s+1; 則表達式(int *)q (int *)p的值等于: A) 1 B) 2 C) 4 D)表達式語法有錯10

5、、 將p定義為數(shù)組指針,數(shù)組元素類型為字符指針,數(shù)組大小為10,可寫成:A)char *p10; B)char *(*p)10; C) char (*p)10; D)以上均不是11、 對于以下程序段,運行后i值為:char (*p)10;為指針數(shù)組char *(*p)10;為數(shù)組指針int i=0,a=1;switch(a) case 1: i += 1; /* a=1 與這個case匹配運算后再往下流*/ case 2: i +=2; break; /* 執(zhí)行后i=3 且退出 */ case 3: i+=3;A) 1 B) 3 C) 6 D) 上述程序有語法錯誤12、 對于以下遞歸函數(shù)f,調(diào)

6、用f(4),其返回值為:f(4)àf(4-2)+4à(f(2-2)+2)+4àf(0)+2+4=6int f(int n)( if(n) return f(n-2)+n; else return n;char *s;只定義了一個指向字符的指針,而沒有指向內(nèi)存空間A) 6 B) 4 C) 0 D) 無限遞歸13、 對于下列程序段,當輸入為123,執(zhí)行后: char *s; scanf(“%s”,s); A)s值為”123” B)編譯時出錯 C)編譯不出錯,但程序有問題 D)以上均不是14、 對于如下說明,則有意義的正確表達式是: int *p3,a3; A) p=a

7、 B) p0=a0 C) p0=a D) p0*=215、 對于struct node char s10; int i; p4;下列哪個賦值是正確的: A) p->i=2 B) p0.s=”abc” C) p0->i=2 D) p->s=a二、 填空題(每題2分,共40分)1、 用下列for循環(huán)將大寫字母逆序輸出(即從Z到A),其語句應為:for(i=0;i<26;i+) (1) putchar(Z-i);2、 執(zhí)行完下列語句段后,i,j值分別為 (2)i=15,j=10 int i,j;j=i=5;i+=j+=i; /* i+=(j+=i); i+= j, j=10

8、; i=15 */3、 對于如下定義,則通過指針p來存取aij的表達式為: (3)*(p+i*20+j) int a1020,*p=&a00;4、執(zhí)行完下列語句段后,i值為: (4) 1 int i;f(1): x=0,k=1,return 0f(f(1)=f(0): x=1,k=0, return 1 int f(int x) static int k=0; int t; t=k; k=x; x=t; return x; i=f(f(1);5、在C語言程序中,若對函數(shù)類型未加顯式說明,函數(shù)的隱含類型為: (5) int 6、執(zhí)行下列語句段后,將輸出: (6)ello world! s

9、tatic char *s=”hello world!”; printf(“%s”,+s); (c<a|c>z)&&(c<A|C>Z)7、對于char c;判斷c不是大或小寫字母的表達式(不是返回1,否則返回0)為: (7) 8、將A定義為整型函數(shù)指針類型名,可寫為: (8)typedef int (*A)(); 9、實現(xiàn)字符串拷貝的函數(shù)strcpy為: void strcpy(char *s,char *t) while( (9)* s+ = *t+ ); 10、下面的C代碼段用于計算s=x-x3/3+x5/5-x7/7+x9/9-的近似值(xn表示x

10、的n次方) i=1; t=x; s=t; while(fabs(t)>0.00001) /* fabs(t): t的絕對值 */ i+; t=-t * (10) x*x*(2*i-3)/(2*i-1) ; s+=t; 11、下面的程序把輸入信息直接復制到輸出,在復制過程中,用t符號代替制表符,用b符號代替退格符,用符號代替右斜杠,這樣這些符號都可以成為可見符號。#include <stdio.h>main() int c; while(c=getchar()!=EOF) if(c=t) (11) printf(“t”) ; /* 二個”代表一個” */ else if(c=b

11、) (12) printf(“b”) ; else if(c=) (13) printf(“”) ; else putchar(c); 12、下面是統(tǒng)計鏈表first中元素個數(shù)的C語言程序段struct link struct link *next;datafirstdatadata char data;0struct link *first;Pstruct link *p;int c;c=0;p=first; while( (14) p ) p= (15) p->next ; (16) c+ ;13、int i=0,s=0,a10; /* 將a數(shù)組中非負數(shù)加到s中 */while(i&

12、lt;10)&&(ai>=0) s+=ai+;等價于int s=0,a10,*p=a;for( (17) ;p<a+10;s+=*p+ ) if(*p<0) break;14、下面的程序Remove_blank刪除字符串中所有空格 Remove_blank(char *s) int i,tmp; char tmpstr81; for(i=0,tmp=0;si!= (18) 0 ; i+) if(si!= ) /* 只對非空格處理 */ tmpstr (19) tmp+ = si; tmpstrtmp= (20) 0 ; /* 加上字符串結束標志 */ strc

13、py(s,tmpstr); 三、 理解程序,并回答相應問題(共20分)1、程序 #include <stdio.h> int f(int x,int a,int n) /* 在an中二分法檢索x */ int low,high,mid; low=0; high=n-1; while(low<=high) mid=(low+high)/2; if(x>amid) high=mid-1; else if(x<amid) low=mid+1; else return(mid); /* 返回x的下標值 */ return(-1); main() /* 主程序 */ sta

14、tic int a=4,0,2,3,1; /* 初始數(shù)據(jù)5個 */ int i,t,j; for(i=1;i<5;i+) /* 從大到小排序 */ t=ai; j=i-1; while(j>=0&&t>aj) aj+1=aj; j-; aj+1=t; /* 排序后a=4,3,2,1,0 */ printf(“%dn”,f(3,a,5); /* 調(diào)用f(3,a,5),即求3的位置,是1 */ 問題1:程序執(zhí)行后的輸出結果是 1 。問題2:若將程序的輸出語句改為:printf(“%dn”,f(5,a,5); 程序執(zhí)行后的輸出結果是 -1 。 /* 調(diào)用f(5,a,

15、5),即求5的位置,找不到為-1 */2、程序 #include <stdio.h> int cal(int a,int b,char op) /* 能計算*或+的計算器 */ if(op=*) return(a*b); else return(a+b); void main() int x,y,z,result; char op1,op2; scanf(“%d%c%d%c%d”,&x,&op1,&y,&op2,&z); /* 輸入2+3*5 */ if(op1=+&&op2=*) /* 先+后* 表達式 */ result=

16、cal(x,cal(y,z,op2),op1); /*問題1當輸入2+3*5時先算3*5,值為17 */ else /* 先*后+ 表達式 */ result=cal(cal(x,y,op1),z,op2); /*問題2當輸入2+3*5時先算2+3,值為25 */ printf(“%dn”,result); 問題1:當輸入為2+3*5時,上述程序?qū)⑤敵?17 。問題2:把op1=+&&op2=*中的op1,op2對調(diào)后,當輸入為2+3*5時,上 述程序?qū)⑤敵?25 。3、程序 f(int n) int i,j; if(n%2|n=2) /* n是奇數(shù)或是2 顯示錯誤*/ pri

17、ntf(“Error: %d is an odd number or equals to 2!n”,n); return; for(i=n-2;i>=n/2;i-) /* 對>2的偶數(shù) */ for(j=2;i%j;j+); if(j!=i) continue; for(j=2;(n-i)%j;j+); if(j!=n-i) continue; printf(“%3d=%3d+%3d “,n,i,n-i); int test_data=6,8,10;main() int i; for(i=0;i<3;i+) f(test_datai); 問題1:程序輸出的結果為 6=3+3

18、8=5+3 10=7+3 10=5+5 。 問題2:函數(shù)f(int n)的功能是: 對給定的>2的偶數(shù),進行分解成兩個質(zhì)數(shù)之和的所有分解,但第一個和數(shù)(質(zhì)數(shù))必須在n-2至n/2范圍內(nèi) 。4、程序 #include <stdio.h> int k=0; /* k是全局變量 */ void f(int n) /* 求f(3); 是遞歸函數(shù) */ k+; /* k1 2 3 ,4 5 6 7 */ if(n!=1) f(n-1); /* f(2) f(1) */ f(n-1); /* f(1) f(2) f(1) f(1) */ main() f(3); printf(“%d”,k); 問題:1 程序輸出的結果為: 7 。 2 當n值范圍為什么時,函數(shù)調(diào)用f(n)無限遞歸 n<=0 。四、 請按下列要求編程(10分)請編寫一個帶命令行參數(shù)的程序prog.c。當運行prog n1 n2 filename時將文本文件filename的第n1行到第n2行按原樣在標準輸出(終端)上輸出;

溫馨提示

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

評論

0/150

提交評論