C語言程序設(shè)計樣卷new_第1頁
C語言程序設(shè)計樣卷new_第2頁
C語言程序設(shè)計樣卷new_第3頁
C語言程序設(shè)計樣卷new_第4頁
C語言程序設(shè)計樣卷new_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

班級:學(xué)號:姓名:PAGE171江蘇科技大學(xué)C語言程序設(shè)計課程試卷(A)班級學(xué)號姓名題號一二三四五得分說明:本試卷卷面滿分為100分。總成績將按平時實驗成績、機考成績和卷面筆試成績各自所占比例折合后累加計算。一、判斷對錯(6分,每題1分,對:√,錯:×)1.在C語言中,可以用typedef定義一種新的類型。()2.C語言中基本數(shù)據(jù)類型包括整型、實型、字符型。()3.不同的函數(shù)中可以使用相同的變量名。()4.形式參數(shù)是局部變量。()5.若有定義int*p[4];則標(biāo)識符p是一個指向有四個整型元素的一維數(shù)組的指針變量。()6.共用體所占的內(nèi)存空間大小取決于占空間最多的那個成員變量。()二、單項選擇題:(10分,每題2分)1.判斷字符串s1與字符串s2相等,應(yīng)當(dāng)使用:。A)if(s1=s2)B)if(strcmp(s1,s2))C)if(!strcmp(s1,s2))D)if(strcmp(s1,s2)=0)2.二維數(shù)組a有m行n列,則在a[i][j]之前的元素個數(shù)為()。A.j*n+iB.i*n+jC.i*n+j-1D.i*n+j+13.#include<stdio.h>#include<string.h>main(){printf("%d\n",strlen("IBM\n012\t\"\\\0"));}則程序運行后的輸出結(jié)果是。A)10B)11C)16D)124.有如下程序片段:inti=0;while(i++<=2);printf("%d",i);則正確的執(zhí)行結(jié)果是:A)2B)3C)4D)程序陷入死循環(huán)5.下面哪個定義是合法的。A)chara[8]="language";B)inta[5]={0,1,2,3,4,5};C)char*a="string";D)inta[2][]={0,1,2,3,4,5,6};三、寫出下列程序的運行結(jié)果。(10分,每題2分)1.#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);}則程序運行結(jié)果是:2.#include<stdio.h>voidfun1(intx){x=20;}voidfun2(intb[4]){intj;for(j=0;j<4;j++) { b[j]=j; }}main(){intx=10;inta[4]={1,2,3,4},k;fun1(x);printf("x=%d\n",x);fun2(a);for(k=0;k<4;k++){printf("%d\n",a[k]);}}運行結(jié)果是:3.#include<stdio.h>main(){ intx,y; scanf("%2d%*4s%2d",&x,&y); printf("%d",y-x);}程序運行時輸入:123456789↙則程序運行結(jié)果是:4.#include<stdio.h>structdate{intyear;intmonth;intday;};voidfunc(structdatep){p.year=2000;p.month=5;p.day=22;}main(){structdated;d.year=1999;d.month=4;d.day=23;printf("%d,%d,%d\n",d.year,d.month,d.day);func(d);printf("%d,%d,%d\n",d.year,d.month,d.day);}程序運行結(jié)果為:5.#include<stdio.h>voidFun(int*y){printf("*y=%d\n",*y); *y+=20; printf("*y=%d\n",*y);}main(){ intx=10; printf("x=%d\n",x); Fun(&x); printf("x=%d\n",x);}程序運行結(jié)果是:四、閱讀程序,在標(biāo)有下劃線的空白處填入適當(dāng)?shù)谋磉_式或語句,使程序完整并符合題目要求。(10分,每空1分)1.從鍵盤任意輸入一個年號,判斷它是否是閏年。若是閏年,輸出“它是閏年”,否則輸出“它不是閏年”。已知符合下列條件之一者是閏年:能被4整除,但不能被100整除。能被400整除。#include<stdio.h>main(){ intyear,flag; printf("Enteryear:"); scanf("%d",); if() { flag=1; } else { flag=0; } if() { printf("它是閏年\n"); } else { printf("它不是閏年\n"); }}2.編程判斷m是否為素數(shù),已知0和1不是素數(shù)。#include<stdio.h>#include<>main(){ intn,flag; printf("Inputn:"); scanf("%d",&n); flag=IsPrime(n); if() { printf("它是素數(shù)\n"); } else { printf("它不是素數(shù)\n"); }}intIsPrime(intm){ inti,k; if(m<=1) { return0; } for(i=2;;i++) { k=; if() { return0; } } return;}五、在下面給出的4個程序中,共有18處錯誤(包括語法錯誤和邏輯錯誤),請找出其中的錯誤,并改正之。(34分,每找對1個錯誤,加1分,每修改正確1個錯誤,再加1分。只要找對17個即可,多找不加分。)1.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計其中有多少單詞。假設(shè)單詞之間以空格分開。已知:判斷是否有新單詞出現(xiàn)的方法——當(dāng)前被檢驗字符不是空格,而前一被檢驗字符是空格,則表示有新單詞出現(xiàn)。#include<stdio.h>main(){ inti,num,n=20; charstr[n]; scanf("%s",str); if(str[0]!='') { num=1; } else { num=0; } for(i=1;i<20;i++) { if(str[i]!=''||str[i-1]=='') { num=num++; } } printf("num=%d\n",num);}2.編寫一個函數(shù)Inverse(),實現(xiàn)將字符數(shù)組中的字符串逆序存放的功能。#include<string.h>#include<stdio.h>#defineARR_SIZE=80;voidInverse(charstr[])main(){ chara[ARR_SIZE]; printf("Pleaseenterastring:");gets(a);Inverse(chara[]); printf("Theinversedstringis:"); puts(a);}voidInverse(charstr[]){ intlen,i=0,j; chartemp;len=strlen(str);for(j=len;i<j;i++,j--) { temp=str[i];str[j]=str[i];str[j]=temp; }}3.韓信點兵。韓信有一隊兵,他想知道有多少人,便讓士兵排隊報數(shù):按從1至5報數(shù),最末一個士兵報的數(shù)為1;按從1至6報數(shù),最末一個士兵報的數(shù)為5;按從1至7報數(shù),最末一個士兵報的數(shù)為4;最后再按從1至11報數(shù),最末一個士兵報的數(shù)為10。你知道韓信至少有多少兵嗎?#include<stdio.h>main(){ intx; while(1) { if(x%5=1&&x%6=5&&x%7=4&&x%11=10) { continue; x++; } } printf("x=%d\n",x);}4.編程輸入10個數(shù),找出其中的最大值及其所在的數(shù)組下標(biāo)位置。#include<stdio.h>intFindMax(intnum[],intn,int*pMaxPos);main(){ intnum[10],maxValue,maxPos,minValue,minPos,i; printf("Input10numbers:\n"); for(i=0;i<10;i++) { scanf("%d",num[i]); } maxValue=FindMax(num,10,maxPos); printf("Max=%d,Position=%d\n",maxValue,maxPos);}intFindMax(intnum[],intn,int*pMaxPos);{ inti,max; max=num[0]; for(i=1;i<n;i++) { if(num[i]>max) { max=num[i]; *pMaxPos=i; } } returnmax;}六、編程(30分)1.編程計算1!+2!+3!+……+10!的值。(10分)2.從鍵盤任意輸入某班20個學(xué)生的數(shù)據(jù)學(xué)生數(shù)據(jù)包括(學(xué)號、姓名、C語言成績),打印C語言最高分的學(xué)生數(shù)據(jù),并統(tǒng)計不及格學(xué)生的人數(shù)。(20分)要求為學(xué)生建立單向鏈表,并按如下函數(shù)原型進行編程,分別查找并打印最高分學(xué)生數(shù)據(jù)和統(tǒng)計并打印不及格學(xué)生的人數(shù):structstudent{intno;charname[10];intc_score;};voidFind_print_Max(structstudent*head);voidCount_print_Fail(structstudent*head);

參考答案與評分標(biāo)準(zhǔn)判斷對錯(6分,每題1分,對:√,錯:×)1.在C語言中,可以用typedef定義一種新的類型。()2.C語言中基本數(shù)據(jù)類型包括整型、實型、字符型。()3.不同的函數(shù)中可以使用相同的變量名。()4.形式參數(shù)是局部變量。()5.若有定義int*p[4];則標(biāo)識符p是一個指向有四個整型元素的一維數(shù)組的指針變量。()6.共用體所占的內(nèi)存空間大小取決于占空間最多的那個成員變量。()單項選擇題:(10分,每題2分)1.判斷字符串s1與字符串s2相等,應(yīng)當(dāng)使用:。A)if(s1=s2)B)if(strcmp(s1,s2))√C)if(!strcmp(s1,s2))D)if(strcmp(s1,s2)=0)2.二維數(shù)組a有m行n列,則在a[i][j]之前的元素個數(shù)為()。A.j*n+i√B.i*n+jC.i*n+j-1D.i*n+j+13.#include<stdio.h>#include<string.h>main(){printf("%d\n",strlen("IBM\n012\t\"\\\0"));}則程序運行后的輸出結(jié)果是。√A)10B)11C)16D)124.有如下程序片段:inti=0;while(i++<=2);printf("%d",i);則正確的執(zhí)行結(jié)果是:A)2B)3√C)4D)程序陷入死循環(huán)5.下面哪個定義是合法的。A)chara[8]="language";B)inta[5]={0,1,2,3,4,5};√C)char*a="string";D)inta[2][]={0,1,2,3,4,5,6};三、1.#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);}則程序運行結(jié)果是:a=6,x=10b=3,y=62.#include<stdio.h>voidfun1(intx){x=20;}voidfun2(intb[4]){intj;for(j=0;j<4;j++) { b[j]=j; }}main(){intx=10;inta[4]={1,2,3,4},k;fun1(x);printf("x=%d\n",x);fun2(a);for(k=0;k<4;k++){printf("%d\n",a[k]);}}運行結(jié)果是:x=1001233.#include<stdio.h>main(){ intx,y; scanf("%2d%*4s%2d",&x,&y); printf("%d",y-x);}程序運行時輸入:123456789↙則程序運行結(jié)果是:664.#include<stdio.h>structdate{intyear;intmonth;intday;};voidfunc(structdatep){p.year=2000;p.month=5;p.day=22;}main(){structdated;d.year=1999;d.month=4;d.day=23;printf("%d,%d,%d\n",d.year,d.month,d.day);func(d);printf("%d,%d,%d\n",d.year,d.month,d.day);}程序運行結(jié)果為:1999,4,231999,4,235.#include<stdio.h>voidFun(int*y){printf("*y=%d\n",*y); *y+=20; printf("*y=%d\n",*y);}main(){ intx=10; printf("x=%d\n",x); Fun(&x); printf("x=%d\n",x);}程序運行結(jié)果是:x=10*y=10*y=30x=30四、閱讀程序,在標(biāo)有下劃線的空白處填入適當(dāng)?shù)谋磉_式或語句,使程序完整并符合題目要求。(8分,評分標(biāo)準(zhǔn):每空1分,正確得1分,錯誤扣1分)1.從鍵盤任意輸入一個年號,判斷它是否是閏年。若是閏年,輸出“Yes”,否則輸出“No”。已知符合下列條件之一者是閏年:能被4整除,但不能被100整除。能被400整除。#include<stdio.h>main(){ intyear,flag; printf("Enteryear:"); scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0) { flag=1; } else { flag=0; } if(flag) { printf("Yes\n"); } else { printf("No\n"); }}2.編程判斷m是否為素數(shù)。#include<stdio.h>#include<math.h>intIsPrime(intm);main(){ intn,flag; printf("Inputn:"); scanf("%d",&n); flag=IsPrime(n); if(flag) { printf("它是素數(shù)\n"); } else { printf("它不是素數(shù)\n"); }}intIsPrime(intm){ inti,k; if(m<=1) { return0; } for(i=2;i<=sqrt(m);i++) { k=m%i; if(k==0) { return0; } } return1;}五、在下面給出的4個程序中,共有18處錯誤(包括語法錯誤和邏輯錯誤),請找出其中的錯誤,并改正之。(34分,每找對1個錯誤,加1分,每修改正確1個錯誤,再加1分。只要找對17個即可,多找不加分。)1.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計其中有多少單詞。假設(shè)單詞之間以空格分開。已知:判斷是否有新單詞出現(xiàn)的方法——當(dāng)前被檢驗字符不是空格,而前一被檢驗字符是空格,則表示有新單詞出現(xiàn)。(5個錯誤)#include<stdio.h>main(){ inti,num,n=20; charstr[n]; //charstr[20]; scanf("%s",str);//gets(str); if(str[0]!='') { num=1; } else { num=0; } for(i=1;i<20;i++)//for(i=1;str[i]!=’\0’;i++) { if(str[i]!=''||str[i-1]=='')//if(str[i]!=''&&str[i-1]=='') { num=num++;//num++; } } printf("num=%d\n",num);}2.編寫一個函數(shù)Inverse(),實現(xiàn)將字符數(shù)組中的字符串逆序存放的功能。(5個錯誤)#include<string.h>#include<stdio.h>#defineARR_SIZE=80;//#defineARR_SIZE80voidInverse(charstr[])//voidInverse(charstr[]);main(){ chara[ARR_SIZE]; printf("Pleaseenterastring:");gets(a);Inverse(chara[]);//Inverse(a); printf("Theinversedstringis:"); puts(a);}voidInverse(charstr[]){ intlen,i=0,j; chartemp;len=strlen(str);for(j=len;i<j;i++,j--)//for(j=len-1;i<j;i++,j--) { temp=str[i];str[j]=str[i];//str[i]=str[j];str[j]=temp; }}3.韓信點兵。韓信有一隊兵,他想知道有多少人,便讓士兵排隊報數(shù):按從1至5報數(shù),最末一個士兵報的數(shù)為1;按從1至6報數(shù),最末一個士兵報的數(shù)為5;按從1至7報數(shù),最末一個士兵報的數(shù)為4;最后再按從1至11報數(shù),最末一個士兵報的數(shù)為10。你知道韓信至少有多少兵嗎?(4個錯誤)#include<stdio.h>main(){ intx;//原來未初始化intx=1; while(1) { if(x%5=1&&x%6=5&&x%7=4&&x%11=10)//缺一個=if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { continue;//break; x++;//位置不對,這里的應(yīng)該刪掉,應(yīng)該放到}下面 } //放到這里x++; } printf("x=%d\n",x);}4.編程輸入10個數(shù),找出其中的最大值及其所在的數(shù)組下標(biāo)位置。(4個錯誤)#include<stdio.h>intFindMax(intnum[],intn,int*pMaxPos);main(){ intnum[10],maxValue,maxPos,minValue,minPos,i; printf("Input10numbers:\n"); for(i=0;i<10;i++) { scanf("%d",num[i]);//缺&scanf("%d",&num[i]); } maxValue=FindMax(num,10,maxPos);//改成&//maxValue=FindMax(num,10,&maxPos); printf("Max=%d,Position=%d\n",maxValue,maxPos);}intFindMax(intnum[],intn,int*pMaxPos);//去掉分號{ inti,max; max=num[0]; //缺初始化語句*pMaxPos=0; for(i=1;i<n;i++) { if(num[i]>max) { max=num[i]; *pMaxPos=i; } } returnmax;}五、編程1.編程計算1!+2!+3!+……+10!的值。(10分)參考答案1:#include<stdio.h>main(){ longterm=1,sum=0;//2 inti; for(i=1;i<=10;i++)//2 { term=term*i;//3 sum=sum+term;//3 } printf("1!+2!+...+10!=%ld\n",sum);//2}參考答案2:#include<stdio.h>main(){ longterm,sum=0;

溫馨提示

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

最新文檔

評論

0/150

提交評論