




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章C語言概述?一、選擇題:1、一個C程序的執行是從(A)。A本程序的main函數開始,到main函數結束B本程序文獻的第一個函數開始,到本程序文獻的最后一個函數結束C本程序的main函數開始,到本程序文獻的最后一個函數結束D本程序文獻的第一個函數開始,到本程序main函數結束
?2、在C語言中,每個語句必須以(D)結束。A.
回車符
B.
冒號
C.
逗號
D.
分號
3、C語言規定:在一個源程序中,main函數的位置(C)。A.必須在最開始
B.必須在系統調用的庫函數的后面C.可以任意
D.
必須在最后
?4、一個C語言程序是由(B)。A.一個主程序和若干子程序組成
B.函數組成C.若干過程組成
D.若干子程序組成
?5、下列說法中錯誤的是(
D
)。A.
主函數可以分為兩個部分:主函數說明部分和主函數體B.
主函數可以調用任何非主函數的其他函數C.
任何非主函數可以調用其他任何非主函數D.
程序可以從任何非主函數開始執行
6、用C語言編寫的源文獻通過編譯,若沒有產生編譯錯誤,則系統將(
C
)。A.
生成可執行目的文獻
B.
生成目的文獻C.
輸出運營結果
D.
自動保存源文獻
二、填空題:1、C語言只有32
個關鍵字和
9
種控制語句。2、每個源程序有且只有一個
main
函數,系統總是從該函數開始執行C語言程序。3、C語言程序的注釋可以出現在程序中的任何地方,它總是以
\*
符號作為開始標記,以
*/
符號作為結束標記。4、C語言中,輸入操作是由庫函數
scanf
完畢的,輸出操作是由庫函
數
printf
完畢的。5、系統默認的C語言源程序文獻的擴展名是.c
,通過編譯后生成的目的文獻的擴展名是.obj
,通過連接后生成的可執行文獻的擴展名是.exe
。6、C語言的標記符只能由字母、數字和
下劃線
三種字符組成。
第三章數據類型、運算符和表達式
一、選擇題:1、以下選項中,不對的的C語言浮點型常量是(C)。A.160.
B.0.12
C.2e4.2
D.
0.02、以下選項中,(D)是不對的的C語言字符型常量。A.'a'
B.'\x41'
C.'\101'
D."a"3、在C語言中,字符型數據在計算機內存中,以字符的(C)形式存儲。A.
原碼
B.
反碼
C.ASCII碼
D.BCD碼4、若x、i、j和k都是int型變量,則計算下面表達式后,x的值是(C
)。x=(i=4,j=16,k=32)A.4
B.16
C.32
D.525、算術運算符、賦值運算符和關系運算符的運算優先級按從高到低依次為(B)。A.
算術運算、賦值運算、關系運算
B.
算術運算、關系運算、賦值運算C.
關系運算、賦值運算、算術運算
D.
關系運算、算術運算、賦值運算6、若有代數式,則不對的的C語言表達式是(C)。A.a/b/c*e*3
B.3*a*e/b/c
C.3*a*e/b*c
D.a*e/c/b*37、表達式!x||a==b等效于(
D)。A.!((x||a)==b)
B.!(x||y)==b
C.!(x||(a==b))
D.(!x)||(a==b)8、設整型變量m,n,a,b,c,d均為1,執行(m=a>b)&&(n=c>d)后,m,n的值是(A)。A.0,0
B.0,1
C.1,0
D.1,19、設有語句inta=3;,則執行了語句a+=a-=a*=a;后,變量a的值是(B)。A.3
B.0
C.9
D.-1210、在以下一組運算符中,優先級最低的運算符是(
D)。A.*
B.!=
C.+
D.=
11、設整型變量i值為2,表達式(++i)+(++i)+(++i)的結果是(
B)。A.6
B.12
C.15
D.
表達式犯錯12、若已定義x和y為double類型,則表達式x=1,y=x+3/2的值是(C)。A.1
B.2
C.2.0
D.2.513、sizeof(double)的結果值是(
A
)。A.8
B.4
C.2
D.
犯錯14、設a=1,b=2,c=3,d=4,則表達式:a<b?a:c<d?a:d的結果為(D)。A.4
B.3
C.2
D.115、設a為整型變量,不能對的表達數學關系:10<a<15的C語言表達式是(A)。A.10<a<15
B.a==11||a==12||a==13||a==14C.a>10&&a<15
D.!(a<=10)&&!(a>=15)16、設f是實型變量,下列表達式中不是逗號表達式的是(
D)。A.f=3.2,1.0
B.f>0,f<10
C.f=2.0,f>0
D.f=(3.2,1.0)
17、表達式18/4*sqrt(4.0)/8值的數據類型是(C
)。A.int
B.float
C.double
D.不擬定18、已知字母A的ASCII碼為十進制數65,且c2為字符型,則執行語句C2=’A’+’6’-‘3’;后c2中的值是(A)。A.D
B.68
C.不擬定的值
D.C19、以下用戶標記符中,合法的是(B)。A.int
B.nit
C.123
D.a+b20、C語言中,規定運算對象只能為整數的運算符是(A
)。A.%
B./
C.>
D.*21、若有說明語句:charc='\72';則變量c在內存占用的字節數是(A)。A.1
B.2
C.3
D.422、字符串"ABC"在內存占用的字節數是(
B)。A.3
B.4
C.6
D.823、要為字符型變量a賦初值,下列語句中哪一個是對的的(B)。A.chara="3";
B.chara=’3’;
C.chara=%;
D.chara=*;24、下列不對的的轉義字符是(C)。A.\\
B.\'
C.074
D.\0
二、填空題:1、C語言中的邏輯值“真”是用
1
表達的,邏輯值“假”是用
0
表達的。2、若x和n都是int型變量,且x的初值為12,n的初值為5,則計算表達式x%=(n%=2)后x的值為
0
。3、設c='w',a=1,b=2,d=-5,
則表達式'x'+1>c,'y'!=c+2,-a-5*b<=d+1,b==a=2的值分別為
1
、
0
、
1
、
1
。4、設floatx=2.5,y=4.7;inta=7;,表達式x+a%3*(int)(x+y)%2/4的值為
2.5
。5、判斷變量a、b的值均不為0的邏輯表達式為a!=0&&b!=0
。6、求解賦值表達式a=(b=10)%(c=6),表達式值、a、b、c的值依次為
4,4,10,6
。7、求解逗號表達式x=a=3,6*a后,表達式值、x、a的值依次為18,3,3
。8、數學式a/(b*c)的C語言表達式
a/b/c
。
?三、編程題:1、設長方形的高為1.5,寬為2.3,編程求該長方形的周長和面積。2、編寫一個程序,將大寫字母A轉換為小寫字母a。1.main(){floatx=1.5,y=2.3;printf(“areais%6.2f\n”,x*y);}2.main(){charc=’A’;printf(“%d”,c+32);}
?順序結構答案一、單項選擇題AADABCCBBD
?二、程序改錯題1.對的的程序為#include"stdio.h"main(){
char
c;
getchar(c);
putchar('\007');
/*鳴笛*/
putchar();}2.對的的程序為main(){inta,b,s,l;
scanf("%d,%d",&a,&b);
s=a*b;l=2*(a+b);
printf("l=%d,s=%d\n",l,s);
}
三、寫出程序運營結果1.682.x=4y=11
?四、編程題1.main(){inta,b,c,sum;floatave;scanf(“%d%d%d”,&a,&b,&c);sum=a+b+c;
ave=sum/3.0;printf(“sum=%d,ave=%.2f\n”,sum,ave);}
?五、選做題1.voidmain()
{
floata,b,temp;
printf("inputaandb:");
scanf("%d,%d",&a,&b);
temp=a;a=b;b=temp;
printf("a=%d,b=%d\n",a,b);
}選擇結構答案一、單項選擇題1.B
2.A
3.D
4.C
5.D
6.B
7.C
?二、填空題1.
5
5
4
5
5
4
3
3
42.
4
03.
VeryGood
Good
VeryGood
Fail
Pass
Pass
?三、閱讀程序,寫出運營結果1.
10,4,3;
-1?
3?
6?
1四、程序設計題1.main(){inta,b,x,y;
scanf(“%d%d”,&a,&b);
x=a*a+b*b;
if(x>100)
{y=x/100;printf(“%d”,y);}
elseprintf(“%d”,a+b);}
2.if結構main(){floatt;charc;printf(“inputscore,maxas100:\n”);scanf(“%f”,&t);if(t>=90)ch=’A’;elseif(t>=80)ch=’B’;elseif(t>=70)ch=’C’;elseif(t>=60)ch=’D’;elsech=’E’;printf(“Grade=%d\n”,ch);}switch結構main(){floatt;charc;printf(“inputscore,maxas100:\n”);scanf(“%f”,&t);switch(t/10){case10:case9:ch=’A’;break;case8:ch=’B’;break;case7:ch=’C’;break;case6:ch=’D’;break;case5:ch=’E’;}printf(“Grade=%d\n”,ch);}
五、選做題1.main(){inta,b,c,t;scanf(“%d%d%d”,&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;}printf(“%d,%d,%d\n”,a,b,c);}
?2.switch((s>0)&&(s<=10))
{case1:switch((s>=3)&&(s<=6))
{case1:x=2;break;
case0:switch(s>1)||(s>8))
{case1:x=3;break;
case0:x=1;break;
}}break;case0:x=0;break;}
?循環結構答案一、選擇題1.B
2.A
3.A
4.C
5.A
6.B
7.A
8.C9.D
10.D
二、填空題1.x1
x1/2-22.ch=getchar()
ch>=’A’&&ch<=’Z’3.s=s+t*i
t=-t
?三、閱讀下列程序,寫出程序運營的輸出結果1.8522.
89213.
54.
SUM=2468
四、程序改錯1.main(){inti=200,n=0;/*n用來記錄每行已打印數的個數*/
while(i<=300)
{if(i%7==0)
{//break;
printf("%5d",i);
n=n+1;
if(n==5)
/*滿5個換行*/
{printf("\n");
n=0;
}
}
i++;
}}
2).main(){inti,s=0,t=1;
for(i=1;i<=7;i++)
{
t=t*i;
s=s+t;
}
printf("sum=%d\n",s);
}
?五、程序設計題1.main(){intx,g,s,b;for(x=100;x<1000;x++){b=x/100;s=x%100/10;g=x%10;if((g*g*g+s*s*s+b*b*b)==x)printf(“%d\n”,x);}}
?2.main(){inti,s=0,f=1;for(i=2;i<80;i++){s=s+f*(i-1)/i;f=-f;}printf(s=%f\n”,s);}
六、選做題1.main(){floats=0,m=2.0,n=1.0,p;
inti;for(i=1;i<=20;i++){s=s+m/n;p=m;m=m+n;n=p;}printf(s=%f\n”,s);}
2.#include<stdio.h>
main()
{inti,j,k,s=1;for(i=1;i<=20;i++)
for(j=1;j<=50;j++)
{k=100-i*5-j*2;
if(k>=0)
{printf(“%2d%2d%2d”,i,j,k);
s=s+1;
if(s%5==0)
printf(“\n”);
}
}}
?第7章
數組習題?A卷1.單項選擇題(1)inta[4]={5,3,8,9};其中a[3]的值為(
)。DA.5
B.3
C.8
D.9(2)以下4個字符串函數中,(
)所在的頭文獻與其他3個不同。AA.gets
B.strcpy
C.strlen
D.strcmp(3)以下4個數組定義中,(
)是錯誤的。DA.inta[7];
B.#defineN5
longb[N];
C.charc[5];
D.
intn,d[n];(4)對字符數組進行初始化,(
)形式是錯誤。BA.charc1[]={'1','2','3'};
B.charc2[]=123;
C.charc3[]={'1','2','3','\0'};
D.charc4[]="123";(5)在數組中,數組名表達(
)。AA.數組第1個元素的首地址
B.數組第2個元素的首地址C.數組所有元素的首地址
D.數組最后1個元素的首地址(6)若有以下數組說明,則數值最小的和最大的元素下標分別是(
)。Binta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12
B.0,11
C.1,11
D.0,12(7)若有以下說明,則數值為4的表達式是(
)。
Dinta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc=’a’,d,g;
A.a[g-c]
B.a[4]
C.a['d'-'c']
D.a['d'-c]
(8)設有定義:chars[12]="string";
則printf("%d\n",strlen(s));
的輸出是(
)。AA.6
B.7
C.11
D.12(9)設有定義:chars[12]="string";
則printf("%d\n",sizeof(s));的輸出是(
)。DA.6
B.7
C.11
D.12(10)合法的數組定義是(
)。AA.chara[]="string";
B.inta[5]={0,1,2,3,4,5};
C.chara="string";
D.chara[]={0,1,2,3,4,5}(11)合法的數組定義是(
)。DA.inta[3][]={0,1,2,3,4,5};
B.inta[][3]={0,1,2,3,4};C.inta[2][3]={0,1,2,3,4,5,6};
D.inta[2][3]={0,1,2,3,4,5,};(12)下列語句中,對的的是(
)。DA.chara[3][]={'abc','1'};
B.chara[][3]={'abc','1'};C.chara[3][]={'a',"1"};
D.chara[][3]={"a","1"};(13)下列定義的字符數組中,輸出printf("%s\n",str[2]);的輸出是(
)。Cstaticstr[3][20]={"basic","foxpro",
"windows"};
A.basic
B.foxpro
C.windows
D.
輸出語句犯錯(14)下列各語句定義了數組,其中哪一個是不對的的(
)。CA.chara[3][10]={"China","American","Asia"};
B.intx[2][2]={1,2,3,4};C.floatx[2][]={1,2,4,6,8,10};
D.intm[][3]={1,2,3,4,5,6};(15)
數組定義為inta[3][2]={1,2,3,4,5,6},值為6的數組元素是(
)。BA.a[3][2]
B.a[2][1]
C.a[1][2]
D.a[2][3](16)下面的程序中哪一行有錯誤(
)。D#include<stdio.h>main(){
floatarray[5]={0.0};
//第A行
inti;
for(i=0;i<5;i++)
scanf("%f",&array[i]);
for(i=1;i<5;i++)
array[0]=array[0]+array[i];//第B行
printf("%f\n",array[0]);
//第C行}
A.第A行
B.第B行
C.第C行
D.沒有(17)下面哪一項是不對的的字符串賦值或賦初值的方式(
)。C
A.char*str;str="string";
B.charstr[7]={'s','t','r','i','n','g'};
C.charstr1[10];str1="string";
D.charstr1[]="string",str2[]="12345678";(18)若有以下說明和語句,則輸出結果是哪一項(
)。C
(strlen(s)為求字符串s的長度的函數)
chars[12]="abook!";
printf("%d",strlen(s));
A.12
B.8
C.7
D.11(19)若有以下說明和語句,則輸出結果是(
)。B
(strlen(s)為求字符串s的長度的函數)
charsp[]="\t\v\\\0will\n";
printf("%d",strlen(sp));
A.14
B.3
C.9
D.字符串中有非法字符(20)若有以下說明和語句,則輸出結果是(
)。C
charstr[]="\"c:\\abc.dat\"";
printf("%s",str);A.字符串中有非法字符
B.\"c:\\abc.dat\"
C."c:\abc.dat"
D."c:\\abc.dat"
2.填空題(1)C語言中,數組的各元素必須具有相同的
,元素的下標下限為
,下標必須是正整數、0、或者
。但在程序執行過程中,不檢查元素下標是否
。數據類型,0,符號常量,越界(2)C語言中,數組在內存中占一片
的存儲區,由
代表它的首地址。數組名是一個
常量,不能對它進行賦值運算。連續,數組名,地址(3)執行staticintb[5],a[][3]={1,2,3,4,5,6};后,b[4]=
,a[1][2]=
。0,6(4)設有定義語句staticinta[3][4]={{1},{2},{3}};則a[1][0]值為
,a[1][1]值為
,a[2][1]的值為
。2,0,0(5)如定義語句為chara[]="windows",b[]="95";,語句printf("%s",strcat(a,b));的輸出結果為
。Windows95(6)根據以下說明,寫出對的的說明語句:men是一個有10個整型元素的數組。
step是一個有4個實型元素的數組,元素值分別為1.9,-2.33,0,20.6。
grid是一個二維數組,共有4行,10列整型元素。
intmesh[10];
floatstep[4]={1.9,-2.33,0,20.6};
intgrid[4][10];(7)array是一個一維整形數組,有10個元素,前6個元素的初值是9,4,7,49,32,-5,對的的說明語句為:
。該數組下標的取值范圍是從___到___(從小到大)。用scanf函數輸入數組的第二個元素表達為:
。用賦值語句把39存入第一個元素表達為:
。把第六個和第四個元素之和存入第一個元素表達為:
。intarray[10]={9,4,7,49,32,-5};
0
9
scanf("%d",&array[1]);
array[0]=39;
array[0]=array[5]+array[3];(8)寫出以下初始化數組的長度:①intchn[3];數組chn的長度為___。②floatisa[]={1.0,2.0,3.0,4.0,5.0};數組isa的長度為___。③intdoom[8];數組doom的長度為___。④floatpci[4][2];數組pci的長度為___。⑤intast[3][3];數組ast的長度為___。⑥intatt[3][4];數組att的長度為___。⑦floatdell[][3]={{1,4,7},{2,5},{3,6,9}};數組dell的長度為___。
6
20
16
32
18
24
36(9)若有以下整型的a數組,數組元素和它們得值如下所示:
數組元素:
a[0]a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
元素的值:
9
4
12
8
2
10
7
5
1
3
①請寫出對該數組的說明,并賦以上初值。
②該數組的最小下標值為___,最大下標值為___。③寫出下面各式的值:a[a[9]]的值為___;a[a[4]+a[8]]的值為___。inta[10]={9,4,12,8,2,10,7,5,1,3};
0
9
8
8(10)字符串"ab\n\\012/\\\""的長度為___。10
?3.判斷題(×)(1)C允許對數組的大小作動態定義,即可用變量定義數組的大小。(×)(2)字符數組不規定它的最后一個字符為‘\0’,甚至可以不包含‘\0’。(×)(3)數組定義inta[10];也可以寫成inta(10);。(√)(4)在對所有數組元素賦初值時,可以不指定數組長度。(×)(5)定義s為5×6(5行6列)的數組可寫成floata[5,6];(√)(6)數組定義inta[10];表達數組名為a,此數組有10個元素。(×)(7)數組定義inta[10];表達數組名為a,此數組有10個元素,第10個元素為a[10]。(√)(8)staticcharc[]={“abook”};與staticcharc[]=“abook”;等價。(×)(9)staticcharc[]={'a','','b','o','o','k','\0'};與staticcharc[]={'a','','b','o','o','k'};等價。(×)(10)設已有說明:staticcharc1[10],c2[10];下面程序片段是合法的。c1={“book”};c2=c1;
4.程序填空題(1)輸入20個數,輸出它們的平均值,輸出與平均值之差的絕對值為最小的數組元素。請填空。#include<stdio.h>voidmain(){
floata[20],pjz=0,s,t;inti,k;
for(i=0;i<20;i++)pjz+=a[i];
s=fabs(a[0]-pjz);
for(i=1;i<20;i++)
if(fabs(a[i]-pjz)<s)
{
s=fabs(a[i]-pjz);t=a[i];
}
}--------------------------------------------------------------------------------?for(i=0;i<20;i++)scanf(“%f”,&a[i]);pjz/=20;printf(“%f,%f\n”,piz,t);
(2)以下程序以每行10個數據的形式輸出a數組,請填空。
voidmain(){
inta[50],i;
printf("輸入50個整數:");
for(i=0;i<50;i++)
scanf("%d",
);
for(i=1;i<=50;i++)
{if(
)
printf("%3d\n",
);
printf("%3d",a[i-1]);
}}&a[i]i%10==0
a[i-1]
(3)
下面程序的功能是輸出數組s中最大元素的下標,請填空。voidmain(){
intk,p;
ints[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])
;
printf("%d\n",k);}
k=p
?(4)
這個程序輸入了20個數存放在一個數組中,并且輸出其中最大者與最小者、20個數的和及它們的平均值。請填空。
voidmain()
{
chararray
;
intmax,min,average,sum;
inti;
for(i=0;i<
;i++)
{
printf("請輸入第%d個數:",i+1);
scanf("%d",
);
}
max=array[0];
min=array[0];
for(i=0;i<=
;i++)
{
if(max<array[i])
if(min>array[i])
sum=
;
}
average=
;
printf("20個數中最大值是%d,",max);
printf("最小值是%d,",min);
printf("和是%d,",sum);
printf("平均值是%d.\n",average);}[20]
20
&array[i]
19
max=array[i];
min=array[i];
sum+array[i]
sum/20
?B卷5.閱讀程序,分析程序的功能。(1)#include<stdio.h>#include<string.h>voidmain()
{
chars[80];
inti;
for(i=0;i<80;i++)
{
s[i]=getchar();
if(s[i]=='\n')break;
}
s[i]='\0';
i=0;
while(s[i])
putchar(s[i++]);
putchar(‘\n’);}從鍵盤輸入一個字符串,并逐個輸出
(2)#include<stdio.h>#include<string.h>voidmain(){
char
str[10][80],c[80];
int
i;
for(i=0;i<10;i++)
gets(str[i]);
strcpy(c,str[0]);
for(i=1;i<10;i++)
if(strlen(c)<strlen(str[i]))strcpy(c,str[i]);
printf("%s\n",c);
printf("%d\n",strlen(c));}從鍵盤輸入若干字符串,找到其中最長的一個輸出及它的長度
?(3)#include<stdio.h>#include<string.h>voidmain(){
chara[10][80],c[80];
int
i,j,k;
for(i=0;i<10;i++)
gets(a[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(strcmp(a[j],a[k])<0)
k=j;
if(k!=i)
{strcpy(c,a[i]);strcpy(a[i],a[k]);strcpy(a[k],c);}
//字符串互換
}
for(i=0;i<10;i++)
puts(a[i]);}從鍵盤輸入若干字符串,并將它們按大到小順序排好再輸出
?(4)閱讀程序,寫出運營結果#include<stdio.h>voidmain(){
inta[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)if(a[i]==b[j])break;
if(j<6)printf("%d",a[i]);
}
printf("\n");}4252716
?(5)閱讀程序,寫出運營結果。#include<stdio.h>voidmain(){
chara[8],temp;intj,k;
for(j=0;j<7;j++)a[j]='a'+j;
a[7]='\0';
for(j=0;j<3;j++)
{
temp=a[6];
for(k=6;k>0;k--)a[k]=a[k-1];
a[0]=temp;
printf("%s\n",a);
}}gabcdeffgabcdeefgabcd
(6)
閱讀下列程序,寫出程序運營的輸出結果。#include<stdio.h>#include<string.h>voidmain(){
charstr1[]="*******";
for(inti=0;i<4;i++)
{
printf("%s\n",str1);
str1[i]='';
str1[strlen(str1)-1]='\0';
}}
****************
?(7)該程序的運營結果是:min=
,m=
,n=
。
voidmain()
{
floatarray[4][3]={
{3.4,-5.6,56.7},
{56.8,999.,-.0123},
{0.45,-5.77,123.5},
{43.4,0,111.2}
};
inti,j;
intmin;
intm,n;
min=array[0][0];
m=0;n=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(min>array[i][j])
{
min=array[i][j];
m=i;n=j;
}
printf("min=%d,m=%d,n=%d\n",min,m,n);
}-5.77
2
1
(8)寫出下面這個程序的輸出結果:voidmain(){
charstr[]="ABCDEFGHIJKL";
printf("%s\n",str);
屏幕上顯示
printf("%s\n",&str[4]);
屏幕上顯示
str[2]=str[5];
printf("%s\n",str);
屏幕上顯示
str[9]='\0';
printf("%s\n",str);
屏幕上顯示
}ABCDEFGHIJKLEFGHIJKLABFDEFGHIJKLABFDEFGHI
?(9)讀懂下面的程序并填空。voidmain(){
charstr[80];
inti=0;
gets(str);
while(str[i]!=0)
{
if(str[i]>='a'&&str<='z')
str[i]-=32;
i++;
}
puts(str);}
程序運營時假如輸入upcase,屏幕顯示
程序運營時假如輸入Aa1Bb2Cc3,屏幕顯示
UPCASEAA1BB2CC第8章
函數習題
A卷1.單項選擇題(1)C語言總是從
函數開始執行。
AA.main
B.
處在最前的
C.處在最后的
D.
隨機選一個(2)函數在定義時,省略函數類型說明符,則該函數值的類型為
。AA.int
B.float
C.long
D.double(2)以下
函數,真正地沒有返回值。
BA.inta(){inta=2;return(a);}
B.voidb(){printf("c");}C.inta(){inta=2;returna;}
D.
以上都是(3)在C語言中,有關函數的說法,以下對的的是
。AA.
函數可嵌套定義,也可嵌套調用
B.
函數可嵌套定義,但不可嵌套調用C.
函數不可嵌套定義,但可嵌套調用
D.
函數不可嵌套定義,也不可嵌套調用(4)以下函數調用語句中,具有實參的個數為
。Cfun((2,3),(4,5+6,7));A.1
B.2
C.5
D.6(5)函數調用可以在
。DA.
函數表達式中
B.
函數語句中
C.
函數參數中
D.
以上都是(6)被調函數返回給主調函數的值稱為
。CA.
形參
B.
實參
C.
返回值
D.
參數(7)
,可以不進行函數類型說明。DA.
被調函數的返回值是整型或字符型時
B.
被調函數的定義在主調函數定義之前時C.
在所有函數定義前,已在函數外預先說明了被調函數類型
D.
以上都是
(8)被調函數通過
語句,將值返回給主調函數。DA.if
B.for
C.while
D.return(9)被調函數調用結束后,返回到
。DA.主調函數中該被調函數調用語句處
B.主函數中該被調函數調用語句處
C.主調函數中該被調函數調用語句的前一語句D.主調函數中該被調函數調用語句的后一語句(10)以下對C語言函數的有關描述中,對的的是
。AA.在C中,調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參B.C函數既可以嵌套定義又可遞歸調用C.函數必須有返回值,否則不能使用函數D.C程序中有調用關系的所有函數必須放在同一個源程序文獻中(11)C語言中函數的隱含存儲類型是
。
CA.auto
B.static
C.extern
D.
無存儲類型(12)能把函數解決結果的兩個數據返回給主調函數,在下面的方法中不對的的是
。AA.
return這兩個數
B.形參用兩個元素的數組C.
形參用兩個這種數據類型的指針
D.
用兩個全局變量(13)C語言可執行程序從什么地方開始執行(
)。CA.程序中第一條可執行語句
B.程序中第一個函數C.程序中的main函數
D.包含文獻中的第一個函數(14)有一個函數原型如下所示,則該函數的返回類型為(
)。C
abc(floatx,floaty);A.void
B.double
C.int
D.float
2.填空題(1)
變量的作用域重要取決于變量
,變量的生存期既取決于變量
,又取決于變量
。所處的位置,所處的位置,存儲類型(2)
說明變量時,若省略存儲類型符,系統默認其為
存儲類別,該存儲類別的類型符為:
。動態,auto(3)
靜態型局部變量的作用域是
,生存期是
。它所在的局部,整個程序(4)
函數中的形參和調用時的實參都是數組名時,傳遞方式為
,都是變量時,傳遞方式為
。址傳遞,值傳遞(5)
函數的形式參數的作用域為
,全局的外部變量和函數體內定義的局部變量重名時,
_________變量優先。該函數中,局部(6)
若自定義函數規定返回一個值,則應在該函數體中有一條
語句,若自定義函數規定不返回一個值,則應在該函數說明時加一個類型說明符
。
return,void(7)
若函數的形式參數是指針類型,則實參可以是
或
。指針,數組名(8)
函數的參數為char*類型時,形參與實參結合的傳遞方式為
。址傳遞(9)
函數的實參為常量時,形參與實參結合的傳遞方式為
。值傳遞(10)下面這個函數的功能是求兩個整數的積,并通過形參傳回結果,請填空。int
int
int*
*resultvoidmul(___x,___y,___result){
___=x*y;}
3.判斷題(×)(1)函數說明指的是在程序中設定一個函數模塊。(√)(2)形參只有在被調用時才分派存儲空間。(×)(3)
在C的函數中,最佳使用全局變量。(×)(4)在調用函數時,實參傳值給形參,調用結束時,形參值傳給實參。(√)(5)所有函數定義都是并行的,互相獨立的。(×)(6)
函數的隱含存儲類型是extern。(×)(7)
形參可以是常量、變量或表達式。(×)(8)
函數調用可以作為一個函數的形參。(√)(9)
C語言規定,實參應與其相應的形參類型一致。(×)(10)
定義函數時,形參的類型說明可以放在函數體內。
4.程序填空題(1)
對數組按值從大到小的順序排序后輸出,請填空。#include<stdio.h>voidmain(){
floata[7]={2,6,3,8,3,12,9};
inti;
voidsort(float*,int);
;
for(i=0;i<7;i++)printf("%f",a[i]);
printf("\n");}voidsort(
){
inti,j,k;floatt;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(
)
k=j;
{t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;}
}}sort(a,7)
float*p,intn
*(p+k)<*(p+j)
if(k!=i)
(2)
下列函數在n個元素的一維數組中,找出最大值、最小值并傳送到調用函數,請填空。#include<stdio.h>voidfind(float*p,intmax,intmin,intn){
intk;
*max=*p;
for(k=1;k<n;k++)
{
t=*(p+k);
if(
)*max=t;
if(t<*min)*min=t;
}}floatt;
*min=*p;
*max<t
B卷5.寫出下列程序運營結果(1)main(){
inti=1,p;
p=fun(i,i+1);
printf("%d\n",p);}intfun(inta,intb){
intf;
if(a>b)
f=1;
elseif(a==b)
f=0;
else
f=-1;
returnf;}-1
(2)鍵盤輸入abcdef<CR>#include<stdio.h>voidfun(){
charc;
if((c=getchar())!='\n')
fun();
putchar(c);}voidmain(){
fun();
}fedcba
(3)#include<stdio.h>#defineC5intx=1,y=C;voidmain(){
intx;
x=y++;
printf("%d%d\n",x,y);
if(x>4){intx;x=++y;printf("%d%d\n",x,y);
}
x+=y--;
printf("%d%d\n",x,y);}5
67
712
6
?(4)#include<stdio.h>intc,a=4;func(inta,intb){
c=a*b;a=b-1;b++;return(a+b+1);}voidmain(){
intb=2,p=0;c=1;
p=func(b,a);
printf("%d,%d,%d,%d\n",a,b,c,p);}4,2,8,9
(5)
unsignedfun6(unsignednum){
unsignedk=1;
do{k*=num%10;num/=10;}
while(num);
returnk;}
voidmain(){
unsignedn=26;
printf("%d\n",fun6(n));}12
?(6)#include<stdio.h>intmax(inta,intb);main(){
intx,y,z,t,m;
scanf("%d,%d,%d",&x,&y,&z);
t=max(x,y);
m=max(t,z);
printf("%d",m);}intmax(inta,intb){
if(a>b)
return(a);
else
return(b);}運營時若輸入:10,15,9
則輸出:___
15運營時若輸入:300,129,300
則輸出:___
300
(7)#include<stdio.h>longsum(inta,intb);longfactorial(intn);main(){
intn1,n2;
longa;
scanf("%d,%d",&n1,&n2);
a=sum(n1,n2);
printf("a=%1d",a);}longsum(inta,intb){
longc1,c2;
c1=factorial(a);
c2=factorial(b);
return(c1+c2);}longfactorial(intn){
longrtn=1;
inti;
for(i=1;i<=n;i++)
rtn*=i;
return(rtn);}運營時若輸入:2,3
則輸出:___
8運營時若輸入:0,5
則輸出:___
121
(8)#include<stdio.h>ints();intx,y;main(){intn;x=1;y=2;n=s();printf("x=%d,y=%d,n=%d",x,y,n);}ints(){intz;x=3;y=4;z=x+y;return(z);}程序運營后輸出:___
3,4,7
?(9)以下程序的輸出結果是a=___,b=___,c=___。#include<stdio.h>intfunc(inta,int*p);voidmain(){
inta=1,b=2,c;
c=func(a,&b);
b=func(c,&a);
a=func(b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}intfunc(inta,int*p){
a++;
*p=a+2;
return(*p+a);}36
16
19第九章
預解決?A部分(本、專科必做)一、選擇題?以下不對的的敘述是(D)?A、宏替換不占用運營時間。
B、宏名無類型。C、宏替換只是字符替換。
D、宏名必須用大寫字母表達。C語言的編譯系統對宏命令的解決(D)?A、在程序運營時進行的。
B、在程序連接時進行。C、和C程序中的其它語句同時進行編譯的。D、在對源程序中其它語句正式編譯之前進行的。3、以下程序的輸出結果是(C)。
A、15
B、100
C、10
D、150
#defineMIN(x,y)(x)<(y)?(x):(y)
voidmain()
{
intI,j,k;
i=10;j=15;k=10*MIN(i,j);
printf(“%d\n”,k);}4、以下敘述中對的的是(D)用#include包含的文獻的后綴必須是“.h”。
若一些源程序中包含某個頭文獻;當該文獻有錯時,只需對該頭文獻進行修改,包含此頭文獻的所有源程序不必重新進行編譯。
宏命令行可以看作是一行C語句。?預解決是在編譯之前進行的。
5、以下敘述中對的的是(C)
A、源程序中所有的行都參與編譯。
B、宏定義常量與const定義常量是同樣的。
C、宏定義可以嵌套定義,即在宏定義中的字符串可以引用另一個宏定義的標記符。
D、以上都不對的。二、填空題
以下程序中for循環執行的次數是
6
。?#defineN2#defineMN+1#defineNUM(M+1)*M/2voidmain(){
inti;
for(i=1;i<=NUM;i++);
printf(“%d\n”,i);}2、以下程序的輸出結果是
x=93
。
#defineA
3
#defineB(a)
((A+1)*a)
voidmain()
{
intx;
x=3*(A+B(7));
printf(“x=%d\n”,x);}
B部分(本科必做)編程:請寫出一個宏定義MYALPHA(c),用以判斷c是否是字母字符,若是,得1,否則,得0。解:#defineMYALPHA(c)((c>=’A’&&c<=’Z’)||(c>=’a’&&c<=’z’)?1:0)
第十章
指針?A部分(本、??票刈觯┮?、選擇題1、若有定義:intx,*pb;則以下對的的表達式是(A)
A、pb=&x
B、pb=x
C、*pb=&x
D、*pb=*x2、以下程序的輸出結果是(B)
A、因變量無定義輸出不定值B、0C、-1
D、1
#include<stdio.h>
voidmain(){printf(“%d\n”,NULL);}3、以下程序的輸出結果是(B)
A、5,2,3B、-5,-12,-7C、-5,-12,-17D、5,-2,-7#include<stdio.h>voidsub(intx,inty,int*z){*z=y-x;}voidmain(){
inta,b,c;
sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);
printf(“%d,%d,%d\n”,a,b,c);}4、以下程序的輸出結果是(C)
A、4B、6C、8D、10#include<stdio.h>voidmain(){
intk=2,m=4,n=6;
int*pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf(“%d\n”,n);}5、已知指針p的指向(圖一)的a[1],則執行語句*p++;后,*p的值是(B)。
A、20B、30C、21D、31
a[0]
a[1]
a[2]
a[3]
a[4]10?
20?
30?
40?
50
(圖一)6、已知指針p的指向(圖一)的a[1],則表達式*++p的值是(B)。
A、20B、30C、21D、317、已知指針p的指向(圖一)的a[1],則表達式++*p的值是(C)。
A、20B、30C、21D、318、以下程序的輸出結果是(D)。
A、23B、24C、25D、26#include<stdio.h>voidprtv(int*x){printf(“%d\n”,++*x);}voidmain()?{
inta=25;prtv(&a);}9、以下程序的輸出結果是(B)。
A、運營犯錯
B、100
C、a的地址
D、b的地址#include<stdio.h>voidmain(){int**k,*a,b=100;
a=&b;k=&a;
printf(“%d\n”,**k);}10、以下程序運營后,輸出結果是(D)。A)8
B)7
C)6
D)5
#include<stdio,h>
ss(char
*s)
{
char
*p=s;
while(*p)
p++;
return(p-s);
}
main()
{
char
*a="abded";
int
i;
i=ss(a);
printf("%d\n",i);
}
?二、填空題1、若有定義:charch;
(1)使指針p指向變量ch的定義語句是char*p=&ch;。
(2)若已定義char*p;,使指針p指向變量ch的賦值語句是p=&ch;。
(3)在(1)的基礎上,通過指針p給變量ch讀入字符的scanf調用語句是scanf(“%c”,p);。
(4)在(1)的基礎上,通過指針p給變量ch賦字符’a’的語句是*p=’a’;。
(5)在(1)的基礎上,通過指針p用格式輸出函數輸出ch中字符的語句是printf(“%c”,*p);。2、以下程序輸出的是
C。
voidmain(
)
{
int
i=3,j=2;
char
*a="DCBA";
printf("%c%c\n",a[i],a[j]);
}3、以下函數的功能是,把兩個整數指針所指的存儲單元中的內容進行互換。請填空。
voidexchange(int
*x,
int
*y)
{
intt;
t=*y;
*y=
*x
;
*x=
t
;
}
B部分(本科必做)程序填空:1、下面程序的輸出結果是
ABCDBCDCDD
。
char
b[]="ABCD";
voidmain()
{
char
*chp;
for(chp=b;
*chp:
chp+=2)
printf("%s",chp);
printf("\n");}下面是一個字符串連接函數,請補充完整。?voidmystrcat(char*s1,char*s2){
char*p,*q;
for(p=s1;
*p
;
p++
);
for(
q=s2
;*q;q++)
*p++=*q;
*p=’\0’
;}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高效余熱回收裝置項目建議書
- 高級會計考試重點回顧試題及答案
- 2024年貴州省安順市平壩縣三上數學期末調研試題含解析
- 2025年四川省內江市威遠縣鳳翔中學九年級 第二次模擬考試英語試題
- 2025年高精度晶閘管直流調速器項目合作計劃書
- 現代安全教育培訓
- 《核酸穩定性》課件
- 知識解析2025年入團考試試題答案
- 醋酸回收系統工藝流程圖
- 駕駛無人機的操作指南試題及答案
- 家長寫孩子在家學習情況的發言稿
- oem合作協議書模板
- 北京市《配電室安全管理規范》(DB11T 527-2021)地方標準
- 《擬行路難(其四)》課件+2023-2024學年統編版高中語文選擇性必修下冊
- 2024年關于員工勞動合同參考模板(三篇)
- 2024年社區意識形態工作計劃
- 麻醉科醫師晉升副主任醫師病例分析專題報告三篇
- HG∕T 3714-2014 耐油輸送帶 國標
- 北師大版八年級數學下冊常考題專練專題09與旋轉有關的最值問題(原卷版+解析)
- 云南省煙葉生產基礎設施建設管理規程
- 【正版授權】 ISO 4532:1991 EN Vitreous and porcelain enamels - Determination of the resistance of enamelled articles to impact - Pistol test
評論
0/150
提交評論