湖南省歷界對口高考C語言真題_第1頁
湖南省歷界對口高考C語言真題_第2頁
湖南省歷界對口高考C語言真題_第3頁
湖南省歷界對口高考C語言真題_第4頁
湖南省歷界對口高考C語言真題_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

歷界高考C語言真題2007年真題一、程序分析題1、#include<>#*eef241-2main(){intx=3;doprintf(“%d”,x-=2);while(!(--x));}2、#include<>main(){intx=4,y=8,z;z=x<<2|y;printf(“%d”,z);}3、#include<>main(){charx=’E’,y=’e’;printf(“%c”,x+32);printf(“%c”,(x--,y++));printf(“%c\n”,x==y?x+=32:(y-=32));}4、#include<>main(){intt=2;while(t<5)switch(t%2){case0:t++;printf(“#”);break;case1:t+=2;printf(“*”);default:printf(“\n”);}}5、#include<>main(){charstr1[50]=”Beijing2008”,*q=str1;charstr2[50]=”O(jiān)neworldOneDream!”,*p=str2;while(*p!=’\0’)p++;OneworldOneDream!Beijing2008while(*q!=’\0’)*p++=*q++;*p=’\0’;printf(“%s”,str2);}6#include<>#include<>main()gfedcba{chars[]=”abcdefg”,t;inti=0,j=strlen(s)-1;while(i<j){t=s[i],s[i]=s[j],a[j]=t;i++,j--;}puts(s);}二、程序填空題1、下面程序的功能是求1000以內的完數(shù)。完數(shù)是指一個數(shù)的子因子之和等于這個數(shù)本身。#include<>main(){inti,j,sum;for(i=1;i<1000;i++){sum=0;for(j=1;j<i;j++)if(i%j==0)sum+=j;if(sum==i)printf(“%d\n”,i);}}2、以下程序是統(tǒng)計一維數(shù)組arr中小于平均值的元素個數(shù)。#include<>#defineN7intfun(ints[],floataver){inti,count=0;for(i=0;i<N;i++)if(s[i]<aver)count++;returncount;}main(){inti,arr[N]={87,34,5,78,90,66,88};floataver=0;for(i=0;i<N;i++)aver+=arr[i];aver=aver/N;printf(“統(tǒng)計結果為:%d”,fun(arr,aver);}三、程序改錯題,不得增行或刪行。1、下面的程序是求#include<>,在函數(shù)fun()中存在兩處錯誤,請標記并改正。longfun(intx){intm,n,t;longsum;longsum=1;for(m=1;m<=x;m++){t=1;for(n=1;n<=m;n++)t=m*n;t*=n;sum+=t;}returnsum;}main(){intnum;scanf(“%d”,&num);printf(“sum=%ld\n”,fun(num));}2、以下程序的功能是:從字符串str中,刪除所有字母c,不區(qū)分大小寫。如輸入字符串”abcCdefcfCg”,刪除后的字符串為”abdefg”。程序有兩錯誤,請標記并改正。#include<>main(){charstr[81];inti=0,j=0;gets(str);while(str[i]!=’\0’){if(str[i]!=’c’||str[i]!=’C’){if(str[i]!=’c’&&str[i]!=’C’)str[j]=str[i];i++;str[j++]=str[i];}str[j]=’\0’;printf(“%s”,str);}3、以下程序從一個二進制文件中讀出結構體數(shù)據(jù),并將結構體數(shù)據(jù)輸出在屏幕上。程序中有三處錯誤,請標記并改正。#include<>structstudent{charname[10];floatscore;}stu;main(){file*f;{FILE*f;if((f=fopen(“”,”r”))==NULL){printf(“cannotopenoutfile\n”);exit(0);}while(feof(f))while(!feof(f)){fread(stu,sizeof(structstudent),1,f);printf(“%s,%.2f\n”,,;{fread(&stu,sizeof(structstudent),1,f);}fclose(f);}四、程序設計題1、已知一個數(shù)列從1項開始的前6項為:0,0,1,1,2,4,以后的各項都是其相鄰的前3項之和,計算并輸出該數(shù)列前20項之和。2、寫一函數(shù)sort(intx[],intn)實現(xiàn)選擇法排序(從小到大)。2008年真題一、程序分析題1、#include<>21228,10main(){chara=55;a=~a&055;printf(“%x,%o”,a,a);}2、#include<>#definetest(x,y)x+ymain(){floatc;c=2*test,/2;printf(“”,c);}3、#include<>voidfun(){intx=1;staticinty=1;printf(“%d%d”,++x,y++);}main(){inti;for(i=0;i<2;i++)fun();}4、#include<>main()3403{inta=12,b=0,n=0;do{b+=2;a-=2+b;n++;}while(a>=0);printf(“%d”,n);}5、#include<>main(){intn=132,i=1,j,k,b[10];while(n!=0){j=n%6;b[i]=j;n=n/6;i++;}for(k=i-1;k>0;k--)printf(“%d”,b[k]);}二、程序填空題1、任意輸入平面一點坐標(x,y),求該點到原點(0,0)的距離。#include<>#include<>#include<>typedefstructNODE{floatx;floaty;}NODE;main(){NODE*p;p=(NODE*)malloc(sizeof(NODE));scanf(“%f,%f”,&p->x,&p->y);printf(“%”,sqrt(p->x*p->x+p->y*p->y));free(p);}2、下列給定程序中,函數(shù)fun()的功能是:從N個字符串中找出最長的那個串,并將其地址作為函數(shù)值返回。#include<>#include<>#defineN4#defineM50char*fun(char(*q)[M]){inti;char*p;p=*q;for(i=0;i<N;i++)if(strlen(p)<strlen(*(q+i)))p=*(q+i);returnp;}main(){charstr[N][M]={“pingpong”,”basketball”,fieldhockey”,”softball”};char*longest;inti;longest=fun(str);printf(“Thelongeststring:\n”);puts(longest);}3、下列程序定義了3×3的二維數(shù)組,并在主函數(shù)中自動賦值;函數(shù)fun的功能是使二維數(shù)組的上三角元素的值全部置0。調用函數(shù)前123調用函數(shù)后100240246369369#include<>voidfun(intn,inta[][3]);main(){inta[3][3],i,j;for(i=1;i<=3;i++)for(j=1;j<=3;j++)a[i-1][j-1]=i*j;fun(3,a);printf(“theresult:\n”);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(“%4d”,a[i][j]);printf(“\n”);}}voidfun(intn,inta[3][3]){inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)a[i][j]=0;}三、程序改錯題,不得增行或刪行。1、下列程序的功能是求分數(shù)序列:的前8項之和。程序中有2處錯誤,請標記并改正。#include<>main(){inti,flag=1;floata=144,b=89,s=0,t;for(i=1;i<=8;i++){s+=a/b;{s+=flag*b/(a-b);t=b;b=a-b;a=t;flag=-flag;t=b;a=a-b;a=t;}printf(“%”,s);}2、下列程序的功能是采用簡單插入的排序方法,隨機產生10個整數(shù),按從小到大的順序排列。程序中有2處錯誤,請標記并改正。#include<>#include<>main(){inti,j,a[11];for(i=1;i<11;i++)a[i]=rand();for(i=2;i<11;i++){a[0]=a[i];for(j=i-1;j>=1;j--)if(a[0]<a[j])a[j-1]=a[j];a[j+1]=a[j];elsebreak;elsecontinue;a[j+1]=a[0];}for(i=1;i<11;i++)printf(“%d”,a[i]);}四、程序設計題1、有一輛在高速公路上行駛的汽車,司機在某一時刻看到里程表顯示的數(shù)值為95859公里(95859為回文數(shù),回文數(shù)是指正讀反讀均一樣的數(shù)),7小時后,里程表上又出現(xiàn)了一個回文數(shù)。編程求出此回文數(shù)和汽車時速?(注:高速公路限速60公里以上,汽車的里程表為5位數(shù))2、弦數(shù)是指平方值等于某兩個正整數(shù)平方之和的正整數(shù),如:32+42=52,因此5為弦數(shù)。編程輸出10到100之內的所有弦數(shù)及弦數(shù)的數(shù)量。2009年真題一、程序分析題1、#include<>48pho5,125D,-6914main(){structstu{charname[10];intage,sex;};printf(“%d”,sizeof(structstu));}2、#include<>main(){intx=68;printf(“%c,%d\n”,x,~x);}3、#include<>#include<>main(){doublex=;inta=(int)floor(x);intb=(int)pow(floor(x),3);printf(“%d,%d”,a,b);}4、#include<>main(){char**p,*t[]={“compute”,”phone”,”mp3”};for(p=t+2;p>=t;p--)printf(“%c”,*(*p+1))}5、#include<>f(intarr[]){inti=0;for(;arr[i]<=10;i+=2)printf(“%d”,arr[i]);}main(){intarr[]={2,4,6,8,10,12};f(arr+1);}二、程序填空題1、以下程序的功能是:從3個紅球隊、6個白球、5個藍球中任意取出8個球,且其上至少有一個白球,輸出所有可能的方案。#include<>main(){inti,j,k;printf(“\nRedWhiteBlue\n”);for(i=0;i<=3;i++)for(j=1;j<=6;j++){k=8-i-j;if(k>=0&&k<=5)printf(“%d%d%d\n”,i,j,k);}}2、以下程序的功能是:求100以內最大的一對孿生素數(shù)之和,孿生素數(shù)是指兩個素數(shù)之差為2。#include<>#include<>intisPrime(inti){intj,r=0,k=sqrt(i);for(j=2;j<=k;j++)if(i%j==0)break;if(j>k)r=1;returnr;}main(){inti,sum=0;for(i=100;i>=5;i--)if(isPrime(i)&&isPrime(i-2)){sum=i+i-2;break;}printf(“%d\n”,sum);}3、以下程序的功能是:輸入某公司50名職員的工號、姓名和地址并存入名為””的磁盤文件。structEmployee{intempid;charempname[10];charempadd[30];}emp[50];voidsave(){FILE*fp;inti;if((fp=fopen(“”,”wb”))==NULL){printf(“cannotopenfile\n”);return;}for(i=0;i<50;i++)if(fwrite(emp+i,sizeof(structEmployee),1,fp)!=1)printf(“filewriteerror\n”);}main(){inti;for(i=0;i<50;i++)scanf(“%d,%s,%s”,&emp[i].empid,emp[i].empname,emp[i].empadd);save();}三、程序改錯題,不得增行或刪行。1、以下程序的功能是:從一個整數(shù)隊列中找出值最大的數(shù),若有多個則取最先得到的那一個。程序有兩處錯誤,請標出并改正。#include<>int*findmax(inta[],intn){inti,j,max;for(i=1,j=0,max=a[0];i<n;i++)if(a[i]>max){j=i;max=a[i];}return*(a+j);}returna+j;main(){inti,a[50];for(i=0;i<50;i++)scanf(“%d”,&a[i]);printf(“%d”,findmax(a,50));printf(“%d”,*findmax(a,50));}2、以下程序的功能是:輸入一個字符串,將該字符串中的所有字符按ASCII碼降序排序后輸出。程序有兩處錯誤,請標出并改正。#include<>#include<>voidfun(chart[]){charc;inti,j;for(i=0;i<strlen(t)-1;i++)for(j=i+1;j<strlen(t)-1;j++)if(t[i]<t[j]){c=t[j];t[j]=t[i++];t[i]=c;if(t[i]>t[j])t[j]=t[i];}}main(){chars[81];gets(s);printf(\nBeforesorting:\n%s”,s);fun(s);printf(\naftersorting:\n%s”,s);}四、程序設計題1、某學校操場上有一些學生,老師起知道有多少人,便讓學生排隊報數(shù):按1到5報數(shù),最后一名學生的報數(shù)為1,按1到6報數(shù),最后一名學生的報數(shù)為5,按1到7報數(shù),最后一名學生的報數(shù)為4,最后再按1到11報數(shù),最后一名學生的報數(shù)為10。編寫程序求操場上共有多少學生。2、將自然數(shù)1~100按順時圍成一圈,首先取出1,然后按順時針方向以步長30取數(shù),直到所有的數(shù)取完為此。編程序求最后一個取出的數(shù)?2010年真題一、單選題1、下列不是C語言合法標識符的是B。A、_124B、124abcC、sum124D、a_1242、若有如圖1所示存儲結構,且變量定義為structnode{intdata;structnode*next;}*p,*q,*r;若要實現(xiàn)如圖2所示的存儲結構,可選用的賦值語句是D。A、p=r;B、p=q->nextC、p->next=q;D、p->next=q->next;二、程序分析題1、#include<>main(){doublex,y;printf(“%.2f”,(x=5,y=x+3/2));}2、#include<>#defineCUBE(x)(x*x*x)30100,100512main(){intn=5;ints=CUBE(++n);printf(“%d”,s);}3、#include<>voidfun(inta,int*b){a=*b*2;*b=a*5;}main(){intx=10,*y;y=&x;fun(x,y);printf(“%d,%d”,x,*y);}4、#include<>voidfun(int*a){*a=*(a-1)+*(a+1);}main(){inti=0,s=0,arr[5]={1,3,5,7,9};fun(arr+2);for(;i<5;i++)s+=arr[i];printf(“%d”,s);}三、程序填空題1、下列函數(shù)rtrim實現(xiàn)的是刪除字符串str尾部的所有空格。char*rtrim(char*str){intn=strlen(str)-1;if(n<1)return0;while(n>0){if(*(str+n)!=’’){*(str+n+1)=’\0’;break;}elsen--;}returnstr;}2、某超市推行會員優(yōu)惠購物,其中VIP會員八八折,金牌會員九折,銀牌會員九三折,普通會員九六折,非會員不打折。以下程序實現(xiàn)了超市購物的結算,其中非會員、普通會員、銀牌會員、金牌會員、VIP會員分別用0,1,2,3,4表示。#include<>doublecompute(intn,intgrade){intamount,i;doublesum,price,discount[5]={,,,,};sum=;for(i=0;i<n;i++){scanf(“%lf%d”,&price,&amount);/*price:商品單價,amount:商品數(shù)量*/sum+=price*amount;}returnsum*discount[grade];}main(){intn,grade;/*n:商品種數(shù),grade:會員等級*/scanf(“%d%d”,&n,&grade);printf(“%.2lf\n”,compute(n,grade));}3、設文件中存放著學生的基本信息,基本信息包括學號、姓名、專業(yè)等信息。下列程序的功能是:輸入要讀取的學生人數(shù),利用malloc動態(tài)分配內存來存儲從文件中讀取的學生信息,并輸出讀取的學生的學號,姓名,專業(yè)。#include<>#include<>structstudent{longintnum;/*學號*/charname[20];/*姓名*/charmajor[25];/*專業(yè)*/};FILE*fp;main(){structstudentst,*pst;inti,num,realnum;printf(“請輸入讀取的學生人數(shù):”);scanf(“%d”,&num);pst=(structstudent*)malloc(num*sizeof(structstudent));if(!pst)return;fp=fopen(“”,”rb”);if(NULL==fp){free(pst);return;}realnum=0;printf(“%s\t%s\t%s\t%s\n”,”number”,”number”,”name”,”major”);/*文件包含的學生人數(shù)可能少于輸入的人數(shù)*/for(i=0;i<num&&!feof(fp);i++){fread(pst+i,sizeof(structstudent),1,fp);realnum++;st=pst[i];printf(“%d\t%ld\t%s\t%s\n”,realnum,,,;}free(pst);fclose(fp);}四、程序改錯題,不許刪除行或增加行。1、以下程序的功能是:任意輸入一個小于256的正整數(shù),將其轉換成二進制數(shù)并輸出。程序中有兩處錯誤,請標出并改正。main(){intx,i=0,j=0;intresult[8];scanf(“%d”,&x);do{result[i]=x%2;i++;x=x%2;x=x/2;}while(x>=1);for(j=i-1;j>=0;j++)printf(“%d”,result[j]);printf(“\n”);for(j=i-1;j>=0;j--)}五、程序設計題1、在全國青年歌手大獎賽中,有20個評委為參賽的選手打分,分數(shù)為1~100分。選手最后得分為:去掉一個最高分和最低分后其余18個分數(shù)的平均值。請編寫程序實現(xiàn),輸入20個評委評分,求出選手的最后得分。2、編寫程序,輸入5行5列整數(shù)方陣,計算并輸出該方陣兩條對角線上各元素的平方和。2011年真題一、單選題1、C語言中,不合法的整型常量是B。A、88B、018C、-0xabcdD、2e52、C語言中,定義常量指針p(p的值不可變)的正確語法是A。A、char*constp;B、charconst*p;C、const*charp;D、constchar*p;2、C語言中,一個2行3列矩陣M的值如圖所示,能得到M中數(shù)值5的表達式是C。389256A、*(M+1)+1B、*(*M+1)+1C、*(*(M+1)+1)3、C語言中,關于函數(shù)不正確的說法有C。A、實參可以是常量、變量或表達式D、**((*M+1)+1)B、實參與其對應的形參各占用獨立的存儲單元C、實參與形參的類型不一致時,以實參類型為準D、函數(shù)的類型與返回值的類型不一致時,以函數(shù)的類型為準二、程序分析題1、#include<>3583b,d1,8main(){enumColor{Red,Blue,Green,Yellow=6,Black,Purple,Pink};printf(“%d,%d”,Blue,Purple);}2、#include<>main(){chara[]={‘a’,‘b’,‘c’,‘d’};char*p=(char*)(&a+1);printf(“%c,%c”,*(a+1),*(p-1));}3、#include<>intbits_count(unsignedvalue){intcount=0;for(count=0;value!=0;value>>=1)if((value&1)!=0)count++;returncount;}main(){printf(“%d”,bits_count(14));}4、#include<>int*fun(int*q){staticinta=2;int*p=&a;a+=*q;returnp;}main(){inti=1;for(;i<4;i++)printf(“%4d”,*fun(&i));}三、程序填空題。1、會計記賬時通常要求大整數(shù)用逗號進行分隔,下列函數(shù)實現(xiàn)將以分為單位的數(shù)字字符串轉變?yōu)橐栽獮閱挝?,具體輸出格式如下表所示。輸入空輸出¥輸入輸出¥12345123456123456791¥¥1,12¥¥12,¥1,234,1234¥#include<>#include<>#include<>char*dollars(charconst*src){intlen,len1,i;char*dst,*resultp;if(NULL==src)returnNULL;len=strlen(src);len1=len<4?6:len+len/3+2;dst=(char*)malloc(len1);if(!dst)returnNULL;resultp=dst;*dst++=‘¥’;if(len>=3){inti;for(i=len-2;i>0;){*dst++=*src++;if(--i%3==0)*dst++=’,’;}}else*dst++=‘0’;*dst++=‘.’;*dst++=len<2?’0’:*src++;*dst++=len<1?‘0’:*src;*dst=0;returnresultp;}2、下列程序的功能是實現(xiàn)向head指向的鏈表中插入新結點s使之仍然有序。鏈表已按id值升序排序。#include<>#include<>typedefstructNode{intid;char*name;structNode*next;}Node;voidInnode(Node*head,intid,char*str){intj=0Node*p,*q,*s;p=head;while(p!=NULL&&id>p->id){q=p;p=p->next;}s=(Node*)malloc(sizeof(Node));s->id=id;s->name=str;s->next=p;q->next=s;}main(){/*省略創(chuàng)建鏈表head的代碼*/Innode(head,3,“Jone”);/*參數(shù)為若插入的數(shù)據(jù)*/}3、下列程序采用快速排序算法對任意輸入的10個整數(shù)進行排序??焖倥判蛩惴ㄊ且环N經典的排序方法,它是冒泡排序算法的改進。該算法的主要思想是在待排序的n個數(shù)據(jù)中取第一個數(shù)據(jù)作為基準值,將所有的數(shù)據(jù)分為兩組,使得第一組中各數(shù)據(jù)值均小于或等于基準值,第二組中各數(shù)據(jù)值均大于基準值,這便完成了第一趟排序,再分別對第一組和第二組重復上述方法,直到每組只有一個數(shù)據(jù)為止。#include<>voidqusort(ints[],intstart,intend){inti,j;i=start;j=end;/*將每組首個元素賦給i*//*將每組末尾元素賦給j*/s[0]=s[start];/*設置基準值*/while(i<j){while(i<j&&s[j]>=s[0])j--;/*位置左移*/if(i<j)s[i++]=s[j]/*將s[j]放到s[j]的位置上,且i自增*/while(i<j&&s[i]<=s[0])i++;/*位置右移*/if(i<j)s[j--]=s[i];}s[i]=s[0];if(start<i)qusort(s,start,j–1);if(i<end)qusort(s,j+1,end);}/*將基準值放入指定位置*//*對分割出的部分遞歸調用函數(shù)qusort()*/main(){inta[11],i;printf(“pleaseinput10numbers:\n”);for(i=1;i<=10;i++)scanf(“%d”,&a[i]);qusort(a,1,10);printf(“thesortednumbers:\n”);for(i=1;i<=10;i++)print(“%4d”,a[i]);}四、程序改錯題,不得刪除行或增加行。1、以下函數(shù)的功能是:在指針數(shù)組表示的字符串列表中查找特定的字符,指針數(shù)組以NULL指針結束,如果找到返回TRUE,否則返回FALSE。程序中有兩處錯誤,請標出并改正。L1#include<>L2#include<>L3#defineTRUE1L4#defineFALSE0L5intfind_string(char**string,charvalue)L6{char*cur_str;L7if(*string==NULL)L8returnFALSE;L9while((cur_str=*strings)!=NULL)L10{while(cur_str!=‘\0’)while((cur_str=*strings++)!=NULL){while(*cur_str!=‘\0’)L11L12L13if(*cur_str++==value)returnTRUE;}L14returnFALSE;L15}五、程序設計題1、一串數(shù)碼是否構成合法的信用卡號,可以通過CheckCard算法來驗證。CheckCard算法驗證的過程如下:①卡號的長度必須是16位。②從卡號最后一位數(shù)字開始,將奇數(shù)位數(shù)字求和。③從卡號最后一位數(shù)開始,將偶數(shù)位數(shù)字乘以2(如果乘積為兩位數(shù),則減9),再求和。④將②和③所得的和值相加,當結果能被10整除時,則校驗通過。例如,卡號是5432奇數(shù)位和等于35偶數(shù)位乘以2(乘積為兩位數(shù)的減去9)的結果:16261577,求和等于35。35+35=70可以被10整除,校驗通過。編寫函數(shù)實現(xiàn)CheckCard算法,判斷輸入的卡號是否能通過驗證,通過則顯示“成功”,否則顯示“失敗”。2、隨著信息化進程的不斷推進,數(shù)據(jù)的安全性越來越受到人們的重視,數(shù)據(jù)加密技術是保證數(shù)據(jù)安全的重要手段。編程實現(xiàn)對C盤根目錄下名為“”文件的數(shù)據(jù)進行加密,加密方式是將“”文件中每個字符與字符A進行異或運算,運算后的加密數(shù)據(jù)存儲到“”文件中。2012年真題一、單選題1、以下正確的C語言自定義標識符是C。A、int2、已知i=3,執(zhí)行j=i++后,i和j的值分別為B。A、42B、43C、33D、323、C語言中,以下語句能跳過循環(huán)體中未執(zhí)行的語句,接著執(zhí)行本循環(huán)下一次迭代的語句是D。B、C、_7cD、5d_A、空語句B、break語句C、return語句D、continue語句二、填空題1、C語言中,文件操作fopen函數(shù)的原型為FILE*fopen(char*filename,char*mode);用于打開一個指定文件,若成功則返回一個與之關聯(lián)的流,否則返回NULL;代碼片段FILE*fp=fopen(“c:\\”,”a”)的含義是以追加的方式打開路徑”c:\\”對應的文件,當訪問的文件是二進制文件時,還需要在字符串”a”后增加一個字符b,以上代碼片段對應的關閉文件的C語言代碼是fclose(fp);。三、綜合應用題1、30人參觀博物館共花50美元,其中成年男子門票為3美元/人,成年女子2美元/人,小孩1美元/人。編程輸出成年男子、成年女子和小孩人數(shù)的所有組合。題目分析如下:設x,y,z分別代表成年男子、成年女子和小孩人數(shù)??傻靡韵路匠蹋簒+y+z=30⑴3x+2y+z=50⑵用程序求此不定方程的非負整數(shù)解,可先通過⑵-⑴式得:2x+y=20⑶由⑶式可知,x變化范圍是[0,10]。根據(jù)以上分析編寫程序如下:#include<>main(){intx,y,z;printf(“MenWomenChildren\n”);for(x=0;x<=10;x++){y=20-2*x;z=30-x-y;if(3*x+2*y+z==50)printf(“%d%d%d\n”,x,y,z);}}四、程序分析題1、#include<>main(){inta=3,b=4;a%=b+=a+=a+b;printf(“%d,%d”,a,b);}2、#include<>main(){intx=2,y=7,z=5;switch(x>2){case1:switch(y>0){case1:printf(“1”);break;case2:printf(“2”);break;}case0:10,1446switch(z==5){case0:printf(“3”);break;case1:printf(“4”);break;default:printf(“5”);break;}default:printf(“6”);}}3、#include<>main(){inta=8,y=0;do{a+=2;y+=a;if(y>30)break;}while(a=10);printf(“a=%dy=%d\n”,a,y);}4、#include<>func(inta,intb){returna=a+b,a%b;}main(){intx=9,y=7,z=3,rels;rels=func(func(x,y),z);printf(“%d\n”,1<<rels);}5、#include<>main(){charch[2][5]={“1981”,”0921”},*p[2];inti,j,s=0;a=12y=3449191for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=1;j<=3;j+=2)s=10*s+p[i][j]-‘0’;printf(“%d”,s);}五、程序填空題1、下面程序輸出x,y,z三個數(shù)中的最大值。#include<>main(){intx=3,y=7,z=6;inta,b;a=x<y?y:x;b=a<z?z:a;printf(“%d”,b);}2、下面程序接受鍵盤上的輸入,直到按回車鍵為止,然后將輸入的字符串輸出,輸出時如果原輸入字符是英文大寫字母則轉成小寫字母輸出,如果是小寫字母則轉成大寫字母輸出,如果有連續(xù)的一個以上的空格時只輸出一個空格。#include<>main(){charcx,pre=’\0’;while((cx=getchar())!=’\n’){if(cx!=’‘)if(cx>=’a’&&cx<=’z’)putchar(cx-32);elseif(cx<=’Z’&&cx>=’A’)putchar(cx+32);elseputchar(cx);elseif(pre!=’‘)putchar(cx);pre=cx;}}3、Merge函數(shù)用于將兩個升序的鏈表head1和head2合并成一個鏈表,并保持合并后鏈表依然升序。排序的依據(jù)為結構體類型Node中的data成員,合并中不得刪除節(jié)點。typedefstructNode{intdata;structNode*next;}Node;Node*Merge(Node*head1,Node*head2){Node*head=NULL,*p1=NULL,*p2=NULL,*pcurrent;if(head1==NULL)returnhead2;if(head2==NULL)returnhead1;if(head1->data<head2->data){head=head1;p1=head->next;p2=head2;}else{head=head2;p2=head->next;p1=head1;}pcurrent=head;while(p1!=NULL&&p2!=NULL){if(p1->data<=p2->data){pcurrent->next=p1;pcurrent=p1;p1=p1->next;}else{pcurrent->next=p2;pcurrent=p2;p2=p2->next;}}if(p1!=NULL)pcurrent->next=p1;if(p2!=NULL)pcurrent->next=p2;returnhead;}六、程序改錯題,不得增行或刪行。1、以下程序用于輸入兩個學生的姓名和成績,然后輸出這兩個學生的平均成績,運行結果如圖所示。程序中存在三處錯誤,請標出并改正。inputscorsofstudent1name:Lilyscore:05inputscorsofstudent2name:Lucyscore:09avgscoreis#include<>defineN2#defineN2structStudent{charname[10];floatscore;};main(){structStudentstu[N];inti=0;floatrels=0;for(;i<N;i++){printf(“inputscoresofstudent%d:\n”,i+1);printf(“name:“);scanf(“%s”,stu[i].name);printf(“score:“);scanf(“%f”,stu[i].score);scanf(“%f”,&stu[i].score);}for(;i<N;i++)for(i=0;i<N;i++)rels+=stu[i].score;printf(“avgscoreis:%”,rels/N);}2、以下程序將數(shù)組中元素逆序輸出,運行結果如圖所示。程序中存在兩處錯誤,請標出并改正。ddccbbaa#include<>main(){char*array[]={“aa”,”bb”,”cc”,”dd”};char(**pt)[];intj;char**pt;pt=array+3;for(j=3;j>=0;j--)printf(“%s“,*(pt)[j]);printf(“%s“,pt[j-3]);}2013年真題一、單選題1、下列選項中正確的C語言變量定義是B。A、chara1=’A’,a2=A;C、floata1=a2=;B、unsignedlonga=1000;D、doublea=,a=2、假設有floata=5,b=a+5/2;則執(zhí)行語句printf(“%f”,b);的輸出結果為D。A、B、7C、D、3、有輸入語句:scanf(“a=%d,b=%d”,&a,&b);為了使變量a的值為1,b的值為2,正確的數(shù)據(jù)輸入方式是C。A、12B、1,2C、a=1,b=2D、a=1b=2二、填空題1、在C語言中,可以使用函數(shù)strlen()來獲取字符串的長度,使用函數(shù)strcmp()來對兩個字符串進行比較。使用宏定義命令#define來定義宏,使用文件包含命令#include實現(xiàn)“文件包含”操作。三、綜合應用題1、民警小張在某個案件中帶回4個嫌疑人A,B,C,D,其中有一位是小偷,現(xiàn)在小張分別對4個嫌疑人進行詢問:A說:我不是罪犯;B說:C是罪犯;C說:D是罪犯;D說:我不是罪犯而且B也不是罪犯。已知其中3個人說的是真話,1人說的是假話,請根據(jù)以上信息幫助小張找出罪犯。#include<>#include<>main(){inti;charwho=’A’;intisFound=0;for(i=0;i<4;i++){intsum=0;who=‘A”+i;if(who!=’A’)sum++;if(who==’C’)sum++;if(who==’D’)sum++;if(who!=’D’&&who!=’B’)sum++;if(sum==3){printf(“罪犯是%c\n”,who);isFound=1;}}if(!isFound)printf(“沒有找到符合條件的人\n”);}四、程序分析題1、#include<>main()366871{inta=7,b=3,c=2;intd=(a>b!=c);printf(“%d”,d);}2、當以下程序輸入為125時,運行結果是#include<>main(){intc;while((c=getchar())!=’\n’)switch(c-‘2’){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}}3、#include<>staticintf=1;intfunc(intn){f+=n;returnf;}36main(){inti;for(i=2;i<=3;i++)printf(“%d”,func(i));}4、#include<>main(){inta[9]={1,2,3,4,5,6,7,8};int*p=a;57620intsum=0;for(;p<a+8;p++)if(*p%2==0)sum+=*p;printf(“%d”,sum);}5、#include<>voidf(int*q){inti;for(i=0;i<3;i++)(*q)--;}main(){inta[5]={8,7,6},i;f(a);for(i=0;i<3;i++)printf(“%d”,a[i]);}五、程序填空題1、下面程序從文本文件逐個讀入字符,并顯示在屏幕上。#include<>main(){FILE*fp;charch,*filename=”)if((fp=fopen(filename,”r”))==NULL){printf(“cannotopenfile\n”);exit(0);}while(!feof(fp)){ch=fgetc(fp);putchar(ch);}fclose(fp);}2、以下程序的功能是:讀入一行字符,以回車結束,按輸入時的逆序使用單鏈表進行存儲,先輸入的位于鏈表尾,然后再遍歷輸出鏈表。structnode{charvalue;structnode*link;};main(){structnode*top,*p;charc;top=NULL;while((c=getchar())!=’\n’){p=(structnode*)malloc(sizeof(structnode));p->value=c;p->link=top;top=p;}p=top;while(p){putchar(p->value);p=p->link;}}3、折半查找也稱為二分查找,適用于有序數(shù)組。已知數(shù)組按照升序排列。#include<>intmain(){intkey=0;intdata[10]={1,3,5,7,8,9,13,18,22,28};intret;printf(“請輸入要查找的數(shù):”);scanf(“%d”,&key);ret=BinarySearch(key,data);if(ret>=0)printf(“\n%d是數(shù)組中的第%d個數(shù)\n”,key,ret+1);elseprintf(“\n%d在數(shù)組中未找到!\n”,key);system(“pause”);return0;}intBinarySearch(intkey,intdata[]){intlow=0,high=9,middle;while(low<=high){middle=(low+high)/2;if(key==data[middle])returnmiddle;elseif(key<data[middle])high=middle-1;elselow=middle+1;}return-1;}六、程序改錯題,不得增選或刪行,也不得更改程序結構。1、矩陣乘法是指兩個矩陣相乘,生成一個新矩陣,其乘法公式如下:以下程序實現(xiàn)兩個2×2的矩陣相乘。只對程序中的兩行代碼進行修改,使其可以正確運行。#include<>#defineM2#defineN2#defineK2intmain(){inta[M][K]={1,-1,0,2};intb[K][N]={4,0,2,5};intc[M][N};inti,j,l;intc[M][N}={0};for(i=0;i<M;i++)for(j=0;j<N;j++)for(l=0;l<k;l++)c[i][j]=a[i][l]*b[l][j];return0;c[i][j]+=a[i][l]*b[l][j];}2、某班舉行歌唱比賽,賽后需要顯示成績最高的選手名字和成績,以下程序實現(xiàn)了查找得分最高選手的功能。只對程序中的三行代碼進行修改,使其可以正確運行。#include<>#defineMAX3structPLAYER{char*name;floatscore;}Player;typedefstructPLAYERintmain(){Playerplayers[]={{“丁一”,},{”陳二”,},{“張三”,}};Player*player;Playertopplayer=players[0];for(player=players;player<players+MAX;player++)if>if(player->score>topplayer=player;topplayer=*player;printf(”TopPlayeris%s,scoreis%”,,;return0;}2014年真題一、單選題1、算法的復雜度主要包括算法的時間復雜度和空間復雜度,算法的時間復雜度是指DA、算法程序中的指令數(shù)B、算法程序的長度C、算法程序所占的存儲空間2、C語言程序的基本單位是BD、算法執(zhí)行過程中所需要的基本運算次數(shù)A、字節(jié)B、函數(shù)C、語句D、字符3、若變量a,i已正確定義,且i已正確賦值,合法的C語言語句是CA、a=int(i);B、a==0C、++i;D、a=a++=2;二、填空題1、在C語言中,文件的打開方式決定對該文件所能進行的操作權限,文件打開方式參數(shù)“r”以只讀方式打開一個文本文件,“w”以寫方式打開一個文本文件,“r+”以讀寫方式打開一個文本文件,“a”以在文件后面添加數(shù)據(jù)方式打開文本文件。三、綜合應用題1、輸入三角形的三邊a、b、c,判斷a、b、c能否構成三角形,如果能夠構成三角形則判斷為何種類型的三角形:等腰三角形、等邊三角形、直角三角形、等腰直角三角形、一般三角形。#include<>#include<>main(){floata,b,c;printf(“請輸入三角形邊長\n”);scanf(“%f%f%f”,&a,&b,&c);if(a+b<=c||a+c<=b||b+c<=a)printf(“不能構成三角形\n”);elseif(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)if(a==b||b==c||a==c)printf(“等腰直角三角形\n”);elseprintf(“直角三角形\n”);elseif(a==b&&a==c)printf(“等邊三角形\n”);elseif(a==b||b==c||c==a)printf(“等腰三角形\n”);elseprintf(“一般三角形\n”);}四、程序分析題1、#include<>main()1,2,2{inti=0,j=1,z=2;if((j++||z++)&&i++);printf(“%d,%d,%d\n”,i,j,z);}2、#include<>main(){intn=’b’;switch(++n){default:printf(“error”);break;case‘a’:case‘A’:j=6i=5googluckcase‘b’:case‘B’:printf(“pass”);break;case‘c’:case‘C’:printf(“good”);case‘d’:case‘D’:printf(“l(fā)uck”);}}3、#include<>main(){inti,j;for(i=0;i<5;i++)for(j=1;j<10;j++){

溫馨提示

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

評論

0/150

提交評論