版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
班級(jí):學(xué)號(hào):姓名:PAGE2第1頁(yè)(共10頁(yè))班號(hào)姓名哈工大2008年春季學(xué)期C語(yǔ)言試題題號(hào)一二三四五六七八九創(chuàng)新實(shí)踐分卷面總分分?jǐn)?shù)說(shuō)明:本試卷卷面滿(mǎn)分為100分??偝煽?jī)將按平時(shí)實(shí)驗(yàn)成績(jī)、機(jī)考成績(jī)和卷面筆試成績(jī)各自所占比例折合后累加計(jì)算。一、單項(xiàng)選擇題:(10分,每題2分)1.對(duì)于一個(gè)正常運(yùn)行和正常退出的C程序,以下敘述正確的是。A)程序從main函數(shù)第一條可執(zhí)行語(yǔ)句開(kāi)始執(zhí)行,在main函數(shù)結(jié)束B(niǎo))程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開(kāi)始,在main函數(shù)結(jié)束C)程序的執(zhí)行總是從main函數(shù)開(kāi)始,在最后一個(gè)函數(shù)中結(jié)束D)從程序的第一個(gè)函數(shù)開(kāi)始,在程序的最后一個(gè)函數(shù)中結(jié)束2.有如下程序片段:#include<stdio.h>main(){inta=5,b=4,x,y;x=2*a++;printf("a=%d,x=%d\n",a,x);y=--b*2;printf("b=%d,y=%d\n",b,y);}則正確的執(zhí)行結(jié)果是。A)a=6,x=10b=3,y=8B)a=6,x=10b=3,y=6C)a=6,x=12b=3,y=6D)以上均不對(duì)3.在turboC2.0編程環(huán)境下有以下程序片斷:typedefstruct{intb;intp;}TYPEA;voidf(TYPEAc){c.b+=1;c.p+=2;}main(){TYPEAa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}則程序運(yùn)行后的輸出結(jié)果是。A)2,3B)2,4C)1,4D)1,24.對(duì)于以下程序片段,描述正確的是。intx=-1;do{x=x*x;}while(!x);A)是死循環(huán)B)循環(huán)執(zhí)行兩次C)循環(huán)執(zhí)行一次D)有語(yǔ)法錯(cuò)誤5.一個(gè)指針數(shù)組的定義為。A)int(*ptr)[5];B)int*ptr[5];C)int*(ptr[5]);D)intptr[5];二、寫(xiě)出下列程序的運(yùn)行結(jié)果。(10分,每題2分)1.#include<stdio.h>main(){ intn=0; charc; while((c=getchar())!='\n') { if(c>='0'&&c<='9')n=n*10+c-'0'; } printf("value=%d\n",n);}程序運(yùn)行時(shí)輸入為:2008<回車(chē)>時(shí),則程序運(yùn)行結(jié)果是:2.#include<stdio.h>main(){ inta=1,b=0;switch(a){case1: switch(b){case0:a++;b++;printf("a=%d,b=%d\n",a,b);break; case1:a++;b++;printf("a=%d,b=%d\n",a,b);break;} case2:a++;b++;printf("a=%d,b=%d\n",a,b);break; }}運(yùn)行結(jié)果是:3.#include<stdio.h>#include<string.h>main(){printf("%d\n",strlen("IBM\n012\1\\"));}程序運(yùn)行結(jié)果是:4.#include<stdio.h>main(){inti,a[10];int*p;p=a;for(i=0;i<10;i++){scanf("%d",p+i);}for(p=a;p<a+10;p++){printf("%d\t",*p);}printf("\n");for(p=a;p<a+10;p++){if(*p%2)printf("%d\t",*p);}}程序運(yùn)行時(shí)輸入為:1<回車(chē)>2<回車(chē)>3<回車(chē)>4<回車(chē)>5<回車(chē)>6<回車(chē)>7<回車(chē)>8<回車(chē)>9<回車(chē)>10<回車(chē)>時(shí),則程序運(yùn)行結(jié)果為:5.#include<stdio.h>intmod(intx,inty){return(x%y);}main(){intm,n,r;scanf("%d%d",&m,&n);r=mod(m,n);while(r!=0){m=n;n=r;r=mod(m,n);}printf("TheResultis:%d\n",n);}程序運(yùn)行時(shí)輸入:81<空格>18<回車(chē)>,則運(yùn)行結(jié)果是:三、閱讀程序,在標(biāo)有下劃線的空白處填入適當(dāng)?shù)谋磉_(dá)式或語(yǔ)句,使程序完整并符合題目要求。(8分,每空1分)1.以下程序?qū)⑤斎氲氖M(jìn)制數(shù)以十六進(jìn)制的形式輸出。#include<stdio.h>main(){charb[17]={"0123456789ABCDEF"};intc[64],d,i=0,base=16;longnumber;printf("請(qǐng)輸入一個(gè)十進(jìn)制數(shù)\n");scanf("%ld",);do{c[i]=;number=number/base; ;}while(number!=0);printf("對(duì)應(yīng)的十六進(jìn)制數(shù)為:\n");for(--i;;--i) {d=c[i];printf("%c",); }printf("\n");}用戶(hù)從鍵盤(pán)任意輸入一個(gè)數(shù)字表示月份值n,程序顯示該月份對(duì)應(yīng)的英文表示,若n不在1~12之間,則輸出“Illegalmonth”。#include<stdio.h>main(){ intn; staticcharmonthName[][20]={ "Illegalmonth","January","February","March", "April","May","June", "July","August", "September","October","November","December" }; printf("Inputmonthnumber:"); scanf("%d",&n); if() { printf("month%dis%s\n",n,); } else { printf("%s\n",); }}四、在下面給出的4個(gè)程序中,共有16處錯(cuò)誤(包括語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤),請(qǐng)找出其中的錯(cuò)誤,并改正之。(30分,每找對(duì)1個(gè)錯(cuò)誤,加1分,每修改正確1個(gè)錯(cuò)誤,再加1分。只要找對(duì)15個(gè)即可,多找不加分。)1.下面程序?qū)崿F(xiàn)折半查找算法,當(dāng)找到輸入元素后顯示其在數(shù)組中的下標(biāo)。#include<stdio.h>main(){ intup=10,low=1,mid,found,find; inta[10]={1,5,6,9,11,17,25,34,38,41}; scanf("%d",find); printf("\n"); while(up>=low||!found) { mid=(up+low)/2;if(a[mid]=find){ found=1; break; }elseif(a[mid]>find) up=mid+1; else low=mid+1;} if(found)printf("foundnumberis%dth",mid); else printf("nofound");}2.下面程序模擬了骰子的6000次投擲,用rand函數(shù)產(chǎn)生1~6之間的隨機(jī)數(shù)face,然后統(tǒng)計(jì)1~6每一面出現(xiàn)的次數(shù)存放到數(shù)組frequency中。#include<stdlib.h>#include<time.h>#include<stdio.h>main(){ intface,roll,frequency[7]={0}; srand(time[NULL]); for(roll=1;roll<=6000;roll++); { face=rand()%6+1; ++frequency[Face]; } printf("%4s%17s\n","Face","Frequency"); for(face=1;face<=6;face++) { printf("%4d%17d\n",face,frequency[face]); }}3.計(jì)算十個(gè)數(shù)據(jù)的平均值。#include<stdio.h>voidmain(void){ inti,sum; floatavg; intsc[10],*p=sc; for(i=0,i<10,i++) { scanf("%d",p); p++; sum+=*p; } avg=sum/10; printf("avg=%f\n",avg);}4.編程實(shí)現(xiàn)從鍵盤(pán)輸入一個(gè)字符串,將其字符順序顛倒后重新存放,并輸出這個(gè)字符串。(用字符數(shù)組實(shí)現(xiàn))#include<stdio.h>#include<string.h>voidInverse(charrstr[])main(){ charstr[80]; printf("Inputastring:\n"); gets(str); Inverse(str); printf("Theinversedstringis:\n"); puts(str);}voidInverse(charrstr[]){ inti,n; chartemp; for(i=0,n=(strlen(rstr));i<n;i++,n--) { temp=rstr[i]; rstr[i]=rstr[n]; rstr[n]=temp; }}五、編程(42分)1.從鍵盤(pán)任意輸入一個(gè)4位數(shù)x,編程計(jì)算x的每一位數(shù)字相加之和(忽略整數(shù)前的正負(fù)號(hào))。例如,輸入x為1234,則由1234分離出其千位1、百位2、十位3、個(gè)位4,然后計(jì)算1+2+3+4=10,并輸出10。(14分)2.輸入20個(gè)學(xué)生的成績(jī),求出其中大于平均成績(jī)學(xué)生的人數(shù),并對(duì)20名學(xué)生成績(jī)按從高到低進(jìn)行排序。(14分)3.利用公式=×…前100項(xiàng)之積計(jì)算并打印值。
參考答案與評(píng)分標(biāo)準(zhǔn)單項(xiàng)選擇題:(10分,每題2分)1.對(duì)于一個(gè)正常運(yùn)行和正常退出的C程序,以下敘述正確的是?!藺)程序是從main函數(shù)第一條可執(zhí)行語(yǔ)句開(kāi)始執(zhí)行,在main函數(shù)結(jié)束B(niǎo))程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開(kāi)始,在main函數(shù)結(jié)束C)程序的執(zhí)行總是從main函數(shù)開(kāi)始,在最后一個(gè)函數(shù)中結(jié)束D)從程序的第一個(gè)函數(shù)開(kāi)始,在程序的最后一個(gè)函數(shù)中結(jié)束2.在turboC2.0編程環(huán)境下有如下程序片段:#include<stdio.h>main(){inta=5,b=4,x,y;x=2*a++;printf("a=%d,x=%d\n",a,x);y=--b*2;printf("b=%d,y=%d\n",b,y);}則正確的執(zhí)行結(jié)果是。A)a=6,x=10b=3,y=8√B)a=6,x=10b=3,y=6C)a=6,x=12b=3,y=6D)以上均不對(duì)3.在turboC2.0編程環(huán)境下有以下程序片斷:typedefstruct{intb;intp;}TYPEA;voidf(TYPEAc){c.b+=1;c.p+=2;}main(){TYPEAa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}則程序運(yùn)行后的輸出結(jié)果是。A)2,3B)2,4C)1,4√D)1,24.對(duì)于以下程序片段,描述正確的是。intx=-1;do{x=x*x;}while(!x);A)是死循環(huán)B)循環(huán)執(zhí)行兩次√C)循環(huán)執(zhí)行一次D)有語(yǔ)法錯(cuò)誤5.一個(gè)指針數(shù)組的定義為。A)int(*ptr)[5];√B)int*ptr[5];C)int*(ptr[5]);D)intptr[5];二、1、20082、a=2,b=1 a=3,b=23、94、1 2 3 4 5 6 7 8 9 101 3 5 7 95、TheResultis:9三、閱讀程序,在標(biāo)有下劃線的空白處填入適當(dāng)?shù)谋磉_(dá)式或語(yǔ)句,使程序完整并符合題目要求。(8分,評(píng)分標(biāo)準(zhǔn):每空1分,正確得1分,錯(cuò)誤扣1分)1.以下程序?qū)⑤斎氲氖M(jìn)制數(shù)以十六進(jìn)制的形式輸出。#include<stdio.h>main(){charb[17]={"0123456789ABCDEF"};intc[64],d,i=0,base=16;longnumber;printf("請(qǐng)輸入一個(gè)十進(jìn)制數(shù)\n");scanf("%ld",&number);do{c[i]=number%base;number=number/base; i++;}while(number!=0);printf("對(duì)應(yīng)的十六進(jìn)制數(shù)為:\n");for(--i;i>=0;--i) {d=c[i];printf("%c",b[d]); }printf("\n");}用戶(hù)從鍵盤(pán)任意輸入一個(gè)數(shù)字表示月份值n,程序顯示該月份對(duì)應(yīng)的英文表示,若n不在1~12之間,則輸出“Illegalmonth”。#include<stdio.h>main(){ intn; staticcharmonthName[][20]={ "Illegalmonth","January","February","March", "April","May","June", "July","August", "September","October","November","December" }; printf("Inputmonthnumber:"); scanf("%d",&n); if((n<=12)&&(n>=1)) { printf("month%dis%s\n",n,monthName[n]); } else { printf("%s\n",monthName[0]); }}四、在下面給出的4個(gè)程序中,有15處錯(cuò)誤(包括語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤),請(qǐng)找出其中的錯(cuò)誤,并改正之。(30分,評(píng)分標(biāo)準(zhǔn):實(shí)際錯(cuò)誤有16個(gè),只要找對(duì)15個(gè)即可,多找不加分。每找對(duì)1個(gè)錯(cuò)誤,加1分,每修改正確1個(gè)錯(cuò)誤,再加1分。)1.折半查找。#include<stdio.h>main(){intup=9,low=0,mid,found=0,find;inta[10]={1,5,6,9,11,17,25,34,38,41}; scanf("%d",&find);printf("\n");while(up>=low&&!found){ mid=(up+low)/2; if(a[mid]==find) { found=1; break; } elseif(a[mid]>find) up=mid-1; else low=mid+1;}if(found)printf("foundnumberis%dth",mid);elseprintf("nofound");}2.下面程序模擬了骰子的6000次投擲,用rand函數(shù)產(chǎn)生1~6之間的隨機(jī)數(shù)face,然后統(tǒng)計(jì)1~6每一面出現(xiàn)的次數(shù)存放到數(shù)組frequency中。#include<stdlib.h>#include<time.h>#include<stdio.h>main(){ intface,roll,frequency[7]={0}; srand(time(NULL)); for(roll=1;roll<=6000;roll++); { face=rand()%6+1; ++frequency[face]; } printf("%4s%17s\n","Face","Frequency"); for(face=1;face<=6;face++) { printf("%4d%17d\n",face,frequency[face]); }}3.計(jì)算十個(gè)數(shù)據(jù)的平均值。#include<stdio.h>voidmain(void){inti,sum=0;floatavg;intsc[10],*p=sc;for(i=0;i<10;i++){ scanf(“%d”,p); p++; sum+=*(p-1); //或不修改上面的語(yǔ)句,而將p++;移到原sum+=*p;語(yǔ)句的下面}avg=(float)sum/10;printf(“avg=%f”,avg);
}4.編程實(shí)現(xiàn)從鍵盤(pán)輸入一個(gè)字符串,將其字符順序顛倒后重新存放,并輸出這個(gè)字符串。#include<stdio.h>#include<string.h>voidInverse(charrstr[]);main(){ charstr[80]; printf("Inputastring:\n"); gets(str); Inverse(str); printf("Theinversedstringis:\n"); puts(str);}voidInverse(charrstr[]){ inti,n; chartemp; for(i=0,n=(strlen(rstr)-1);i<n;i++,n--) { temp=rstr[i]; rstr[i]=rstr[n]; rstr[n]=temp; }}五、編程1.從鍵盤(pán)任意輸入一個(gè)4位數(shù)x,編程計(jì)算x的每一位數(shù)字相加之和(忽略整數(shù)前的正負(fù)號(hào))。例如,輸入x為1234,則由1234分離出其千位1、百位2、十位3、個(gè)位4,然后計(jì)算1+2+3+4=10,并輸出10。//空格、空行、縮進(jìn)、標(biāo)識(shí)符命名等編程規(guī)范2分#include<stdio.h>#include<math.h> //1分main(){ inti1,i2,i3,i4,k,n=10000; //1分,為避免輸入非數(shù)值類(lèi)型數(shù)據(jù),將n初始化成不在1000和9999之間的數(shù)//1分,變量類(lèi)型定義正確 printf("Inputadecimalbetween1000and9999:"); scanf("%d",&n); //1分 k=fabs(n); /*取絕對(duì)值*/ //1分 if((k<1000)||(k>9999)) //2分有效數(shù)據(jù)判斷 { printf("Inputerror!\n"); return; } i1=k/1000; /*分離出千位*/ //1分 i2=(k-i1*1000)/100;/*分離出百位*///1分 i3=(k-i1*1000-i2*100)/10;/*十位*///1分 i4=k%10; /*分離出個(gè)位*/ //1分 printf("Thesumof
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)內(nèi)訓(xùn)師培訓(xùn)內(nèi)容設(shè)計(jì)框架
- 分級(jí)管控培訓(xùn)課件
- 我的老師人物作文8篇
- 2026福建同安第一中學(xué)附屬學(xué)校校園招聘?jìng)淇碱}庫(kù)完整參考答案詳解
- 2026重慶渝北龍興幼兒園招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 分析檢驗(yàn)技術(shù)講解
- 分支井鉆井技術(shù)
- 護(hù)理人才就業(yè)市場(chǎng)分析與預(yù)測(cè)
- 色彩肌膚護(hù)理的誤區(qū)解讀
- 蘇教版數(shù)學(xué)一年級(jí)上冊(cè)《比一比》
- 傳染病報(bào)告卡的填寫(xiě)
- 公園建設(shè)項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 系統(tǒng)解剖學(xué)顱骨及其連結(jié)
- 基坑支護(hù)設(shè)計(jì)總說(shuō)明資料
- 員工就業(yè)規(guī)則
- GB/T 33598-2017車(chē)用動(dòng)力電池回收利用拆解規(guī)范
- SS3和SS4簡(jiǎn)明電路圖教案
- 路面施工風(fēng)險(xiǎn)告知書(shū)
- 新生兒常用藥物外滲后的處理課件
- 標(biāo)準(zhǔn)園林綠化工程施工組織設(shè)計(jì)方案范本
- 糖尿病治療-三重奏到八重奏課件
評(píng)論
0/150
提交評(píng)論