版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章習(xí)題
1.1選擇題:
⑴一個(gè)C程序的執(zhí)行是(A
A)從main()函數(shù)開始,直到main()函數(shù)結(jié)束
B)從第一個(gè)函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束
C)從第一個(gè)語句開始,直到最后一個(gè)語句結(jié)束
D)從main()函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束
⑵計(jì)算機(jī)能直接執(zhí)行的語言是(B)。
A)匯編語言B)機(jī)器語言C)高級(jí)語言D)A和B
⑶一個(gè)C程序是由(C)。
A)一個(gè)主程序和若干子程序組成
B)若干過程組成
C)一個(gè)或多個(gè)函數(shù)組成
D)若干子程序組成
(4)下列說法正確的是(B)。
A)C程序書寫格式限制嚴(yán)格,一行內(nèi)必須寫一個(gè)語句
B)C程序書寫比較自由,一個(gè)語句可以分行寫在多行上
C)C程序書寫格式限制嚴(yán)格,要求一行內(nèi)必須寫一個(gè)語句,并要求行號(hào)
D)C程序中一個(gè)語句不可以分寫在多行上
1.2填空題:
⑴構(gòu)成C語言程序的基本單位是函數(shù)。
⑵C語言源程序文件的后綴是一£,經(jīng)過編譯后,生成文件的后綴是,obi,經(jīng)過連接后,
生成文件的后綴是.exe。
⑶在TURBOC環(huán)境中用RUN命令運(yùn)行一個(gè)C程序時(shí),所運(yùn)行的程序的后綴是.exe。
(4)一個(gè)C語言程序必須有而且只能有一個(gè)主函數(shù),它的函數(shù)名為main。
⑸一個(gè)函數(shù)有兩部分組成,第一部分稱為函數(shù)苜部;第二部分稱為函數(shù)體。
(6)函數(shù)體由符號(hào)[開始,用符號(hào)結(jié)束。函數(shù)體的前面是聲明部分,其后是
執(zhí)行部分。
1.3上機(jī)編輯、調(diào)試、運(yùn)行下列程序,發(fā)現(xiàn)錯(cuò)誤,并改正之。
/*求1+2+3+....+10的和*/
#include<stdio.h>
voidmain()
{
ints,n;
sum=0;n=1;
while(n<0)
{sum=sum+n;
n=n+1;
}
printf("sum=%d\n",sum);
第二章習(xí)題
2.1選擇題
⑴在以下標(biāo)識(shí)符中,(B)是合法的用戶標(biāo)識(shí)符。
A)a#bB)getchC)voidD)ab*
⑵不合法的八進(jìn)制數(shù)是(B)。
A)0B)028C)077D)01
⑶不合法的十六進(jìn)制數(shù)是(A)oOx
A)oxffB)OXabcC)0x11D)0x19
(4)以下選項(xiàng)中正確的整型常量是(B)。
A)12.B)-20C)1,000D)456
⑸以下選項(xiàng)中正確的實(shí)型常量是(D)o
A)0B)3.1415C)0.329xl02D).871
(6)以下選項(xiàng)中不正確的實(shí)型常量是(B)o
A)2.607E-1B)0.8103e3C)-88.77D)871e-2
⑺以下變量x,y,z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式子上的C語言表達(dá)
y'x-z
式是(A)。
A)x/y*zB)x*(1/(y*z))C)x/y*l/zD)x/y/z
(8)在C語言中,字符型數(shù)據(jù)在內(nèi)存中以(C)的形式存放。
A)原碼B)補(bǔ)碼C)ASCII碼D)BCD碼
(9)sizeof(float)是(C)。
A)一種函數(shù)調(diào)用B)一個(gè)不合法的表示形式C)一個(gè)整型表達(dá)式D)一個(gè)實(shí)型表達(dá)式
⑩表達(dá)式b=((241&15)&&('Z'l'a'))的值是(B)。
A)0B)1C)TRUED)FALSE
(ID若變量已正確定義并賦值,符合C語言語法的表達(dá)式是(B)。
A)a=a+7;B)a=7+b+c,a++C)int(13.4%4)D)a=a+7=c+b
?以下敘述中正確的是(A)。
A)a是實(shí)型變量,C語言允許進(jìn)行a=10,因此可以這樣說:實(shí)型變量中允許存放整型值
B)在賦值表達(dá)式中,賦值號(hào)左邊既可以是變量也可以是任意表達(dá)式
C)執(zhí)行表達(dá)式a=b后,在內(nèi)存中a和b存儲(chǔ)單元中的原有值都將被改變,a的值已由原值
改變?yōu)閎的值,b的值由原值改變?yōu)?
D)已有a=3,b=5。當(dāng)執(zhí)行了表達(dá)式2=1>,b=a之后,已使a中的值為5,b中的值為3
2.2填空題
⑴數(shù)學(xué)式子cos2x?a+b寫成C語言表達(dá)式是cos(x)*cos(x)*((a+b)/(a-b))_______。
a-b
⑵a是整型變量,能將a清零的表達(dá)式是a=0;能將a中的各二進(jìn)制為均置成1的表達(dá)式是
a=-lo
(4)若a,b和c均是int型變量,則執(zhí)行下面表達(dá)式后,a值為兀,b值為,c值為2o
a=(b=4)+(c=2)
⑸經(jīng)過下述賦值后,變量x的數(shù)據(jù)類型是int。
intx=2;
doubley;
y=(double)x;
(6)若x和n均是整型變量,且x和n的初值均為5,則執(zhí)行下面表達(dá)式后,x值為10,n值
為6。
x+=n++x=x+n++
⑺若有定義:intb=7;floata=2.5,c=4.7;則下面表達(dá)式的侑為4.5。
a+(int)(b/3*(int)(a+c)/2)%4
⑻若有定義:intm=7,y=2;則執(zhí)行下面表達(dá)式的值后,v值為-24。
y+=y-=m*=y
(9)表達(dá)式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的類型為整型。
(ID條件4,-1<x<3或x<-99”的C語言表達(dá)式是___(x>-l&&x<3)ll(x<-99)—。
?若x和a均是整型變量,則執(zhí)行表達(dá)式①后的x值為12,執(zhí)行表達(dá)式②后的x值為
4_,,
①x=(a=4,6*2)
②x=a=4,6*2
?一個(gè)字節(jié)包含」個(gè)二進(jìn)制位,在一個(gè)字節(jié)中能存放的最大(十進(jìn)制)整數(shù)是,它的二
進(jìn)制數(shù)的形式是;最小(十進(jìn)制)整數(shù)是,它的二進(jìn)制數(shù)的形式是。
(14)當(dāng)計(jì)算機(jī)用兩個(gè)字節(jié)存放一個(gè)整數(shù)時(shí),其中能存放的最大(十進(jìn)制)整數(shù)是,它的二進(jìn)制
數(shù)的形式是;最小(十進(jìn)制)整數(shù)是,它的二進(jìn)制數(shù)的形式是。
2.3改錯(cuò)題
(1)#includestdio.h;#include<stdio.h>正確
main();(多分號(hào))/*mainfunction*/
(
floatr,s;isradius,sisareaofcircular*/
r=5.0;
s=3.14159*r*r;
printf(n%f\nu,s);
(2)includestdio.h(缺V>號(hào))#include<stdio.h>正確
main();/*mainfunction*/
(
floata,b,c,v;/*a,b,caresides,visvolumeofcube*/
a=2.0;b=3.0;c=4.0;(缺;號(hào))
v=a*b*c;
printf(u%f\nn,v);(缺;號(hào))
第三章習(xí)題
3.1什么是C語言的基本執(zhí)行單位?C語言的語句是如何分類的?
3.2C語言的流程控制語句有哪幾種?
3.3結(jié)構(gòu)程序設(shè)計(jì)的基本結(jié)構(gòu)有哪兒種?
3.4C語言的輸入輸出操作是由語句來實(shí)現(xiàn)的嗎?
3.5順序結(jié)構(gòu)程序的特點(diǎn)是什么?
3.6輸入下面的程序,觀察運(yùn)行結(jié)果。
#include<stdio.h>
voidmain()
{floatal,a2;
doublebl,b2;
al=3141.59;a2=0.000001;
bl=3141.59;b2=0.000001;
printf(1,%f,%lf\n,',al+a2,b1+b2);
)
答案:3141.590089,3141.590001
3.7輸入下面的程序,觀察運(yùn)行結(jié)果。
#include<stdio.h>
voidmain()
{charch;
intk;
ch=,a,;k=66;
printf(H%c,%d,%x,%o,%d,%cn,ch,ch,ch,ch,k,k);
)
答案:a,97,61,141.66,B
3.8輸入下面的程序,觀察運(yùn)行結(jié)果。
#include<stdio.h>
voidmain()
{
floatx;
doubley;
x=123.45678;
y=123.45678;
printf(u%-4.2f,%-6.2e\nu,x,y);
答案:123.46,1.2e+02
3.9輸入下面的程序,觀察運(yùn)行結(jié)果,并說明程序的功能(注意:運(yùn)行時(shí)輸入大寫字母)。
#include<stdio.h>
voidmain()
{charcl,c2;
cl=getchar();
printf(u%c,%d\nn,cl,cl);
c2=cl+32;
printf(u%c,%d\nn,c2,c2);
)
答案:A,65
a,97
該程序是將鍵盤輸入的大寫字母轉(zhuǎn)換為對(duì)應(yīng)的小寫字母。
3.10編寫程序:求三個(gè)正整數(shù)(小于32767)的算術(shù)平均值。
voidmain()
{inta,b,c;
floatd;
printf(u\ninputa,b,c=n);
scanf(M%d,%d,%dn,&a,&b,&c);
d=(a+b+c)/3.0;
printf(,,\nd=%f,,,d);
)
3.11編寫程序:已知圓的半徑,求圓的周長(zhǎng)和面積(要求半徑值由鍵盤接受)。
voidmain()
{intr;
floatk,s;
printf(°\ninputr=n);
scanf(n%d\&r);
k=2*3.14159*r;
s=3.14159*r*r;
printf(',\nL=%f\nS=%f',,k,s);
)
3.12編寫程序:計(jì)算a+b?-6的值,其中:
a=4,b=3;
a=5,b=2;
a=2,b=8o
voidmain()
(
floata,b,h;
printf(H\ninputa,b=n);
scanf(”%f,%f”,&a,&b);
h=a+b*b-6;
printf(,,\na=%f,b=%f\nh=%f',,a,b,h);
第四章習(xí)題
4.1判斷下列陳述的真假:
⑴在三種形式的if語句中,在if關(guān)鍵字之后均為表達(dá)式。該表達(dá)式只能是邏輯表達(dá)式或關(guān)系表達(dá)
式。False
⑵在if語句中,關(guān)鍵字之后的表達(dá)式必須用括號(hào)括起來,并隨后跟分號(hào)(;)oFalse
⑶在if語句的三種形式中,所有的語句應(yīng)為單個(gè)語句,如果要想在滿足條件時(shí)執(zhí)行一組(多個(gè))語句,
則必須把這一組語句用{}括起來組成一個(gè)復(fù)合語句。True
⑷條件運(yùn)算符的結(jié)合方向是自右至左。False
⑸switch語句中的case后面必須是整常量表達(dá)式,如整數(shù)常數(shù)、字符常量。True
⑹當(dāng)switch的整類型表達(dá)式的結(jié)果值與某一個(gè)case塊的整常量表達(dá)式的值相等時(shí),將轉(zhuǎn)至該case
塊,并且執(zhí)行該case與下一個(gè)case之間的所有語句。False
⑺可以使用goout語句跳出switch語句。False
⑻else總是與它前面最近的if配對(duì)。True
4.2閱讀下面的程序,說明程序的運(yùn)行結(jié)果。
#include<stdio.h>
voidmain()
{intx=10,y=20,t;
if(x!=y){t=x;x=y;y=t;}
printf(H%d,%d\nM,x,y);
}
答案:20,10
4.3輸入下面的程序,觀察運(yùn)行結(jié)果并說明程序的功能。
#include<stdio.h>
voidmain()
{intx=20;
if(x>=0)
if(x<50)
printf("xisok\nn);
else
printffxisnotok\nH);
)
答案:xisok
4.4分別輸入下面兩個(gè)程序,觀察運(yùn)行結(jié)果,說明有何不同。
程序段1:
#include<stdio.h>
voidmain()
{intx=20;
if(x<=0)
if(x<50)
printf(nxisok\n");
else
printf(nxisnotok\n");
}答案:什么也不輸出.
程序段2:
#include<stdio.h>
voidmain()
{intx=20;
if(x<=0)
{if(x<50)printf(uxisok\nH);}
else
printf(nxisnotok\nn);
)答案:xisnotok.
4.5輸入下面的程序,觀察運(yùn)行結(jié)果并說明程序的功能。
#include<stdio.h>
voidmain()
{intx,a;
scanf("%d”,&x);
a=x%10;
switch(a)
{case0:
case2:
case4:
case6:
case8:priintf("even!\n");break;
default:printf(“odd!\n");
)
}
答案:輸入偶數(shù),則輸出even!輸入奇數(shù),則輸出odd!
4.6編寫程序:從鍵盤輸入三個(gè)正整數(shù),按由大到小的順序輸出。
#include<stdio.h>
voidmain()
{inta,b,c,t;
printf(ninputa,b,c=:n);
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("%5d%5d%5dn,a,b,c);
)
4.7編寫程序:從鍵盤輸入一個(gè)正整數(shù),判斷它是否既能被3整除,又能被7整除。方法1:
#include<stdio.h>
voidmain()
{intk;
scanf(n%d",&k);
if(k%3==0&&k%7==0)printf(H\nyes");
elseprintf(Anno");
方法2:
#include<stdio.h>
voidmain()
{
intx;
printf("pleaseinputx=H);
scanf(*'%d",&x);
if(x%3==0)
{if(x%7==0)
printf("3—yes7——yes");
else
printf(n3-yes7-一no");
)
else
{if(x%7==0)
printf(M3-no7-yes");
else
printf(n3--no7-no");
)
)
4.8編寫程序:
求函數(shù):
'X+5(X>=0)
V
y=
X-5(X<0)的值。
#include<stdio.h>
voidmain()
{intx,y;
printf(npleaseinputx=n);
scanf(',%d,,,&x);
if(x>=0)
y=x+5;
else
y=x-5;
printf("y=%dn,y);
第五章習(xí)題
5.1試比較三種循環(huán)語句的異同。
5.2選擇題:
(1)下面關(guān)于for循環(huán)的正確描述是(D)(>
A)for循環(huán)只能循環(huán)次數(shù)已經(jīng)確定的情況
B)for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷終止條件
C)在for循環(huán)中,不能用break語句跳出循環(huán)體
D)在for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號(hào)括起來
⑵對(duì)for(表達(dá)式1;;表達(dá)式3)可以理解為(B)。
A)for(表達(dá)式1;0;表達(dá)式3)
B)for(表達(dá)式1;1;表達(dá)式3)
C)for(表達(dá)式1;表達(dá)式1;表達(dá)式3)
D)for(表達(dá)式1;表達(dá)式3;表達(dá)式3)
⑶若有“intm;",則以下循環(huán)執(zhí)行次數(shù)是(B)。
for(m=2;m==0;)
A)無限次B)0次C)1次D)2次
⑷下面不是死循環(huán)的是(A)o
A)fbr(y=0,x=l;x>4-+y;x=i++)i=x;
B)for(;;x=++l);
C)while(l){x++;}
D)for(i=10;;i--)sum+=i;
⑸下面程序段的運(yùn)行結(jié)果是(B)o
for(i=0;i<5;i++)
{if(i==2)continue;
printf("%d”,i);
AX
/)01B)0134C)01234D)不打印
1\
(6/下面程序段的運(yùn)行結(jié)果是(B)。
intk=10;
while(k=0)k=k_l;
A)while循環(huán)執(zhí)行10次B)循環(huán)是無限循環(huán)
C)循環(huán)體語句一?次也不執(zhí)行D)循環(huán)體語句執(zhí)行一次
⑺執(zhí)行語句“for(n=l;n++<4;);”后變量n的值是(C)。
A)3B)4C)5D)不定
(8)以下正確的描述是(B)。
A)continue語句的作用是結(jié)束整個(gè)循環(huán)的執(zhí)行
B)只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
C)在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
D)從多層循環(huán)嵌套中退出時(shí),只能使用goto語句
5.3寫出下列程序的運(yùn)行結(jié)果
(1)
main()
(
inti=0,a=0;
while(i<20)
{for(;;)
if(i%10==0)break;
elsei一一;
i+=ll;a+=i;
)
printf("%d\n”,a);
}
答案:32
(2)
main()
{inti,j,b=O;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
if(j>=i)b++;
printf("%d\n”,b);
}
答案:3
5.4下面程序的功能是從鍵盤輸入10個(gè)無序的整數(shù),去掉最大數(shù)和最小數(shù),再求其平均值。請(qǐng)?zhí)羁铡?/p>
main()
(
intj,x,max,min,sum;
floatave;
printf("Enter10number:\nn);
scanf("%dH,&x);
sum=max=min=x;
for(j=2;j<=10;j++)
{scanf("%d'',&x);
sum+=x;
if(x>max)max=x;
elseif(x<min)min=x;
}
sum=sum-max-min:
ave=sum/8.0;
print(uTheaverageis%.2f\nM,ave);
)
5.5編程計(jì)算1?100之間是7的倍數(shù)的數(shù)值之和。
#include<stdio.h>
main()
{inti,s=0;
for(i=0;i<=100;i++)
if(i%7==0)s+=i;
printf(n\ns=%dn,s);
)
5.6編寫程序,利用下面公式求人的近似值:
H76=1/12+1/22+1/32+1/42+-,直到某項(xiàng)絕對(duì)值不大于10’為止。
#include<stdio.h>
#include<math.h>
main()
{longn=1;
floatx,sum=0;
x=1.0/(n*n);
while(x>=le-12)
{sum=sum+x;
n++;
x=1.0/(n*n);
)
sum=sqrt(sum*6);
printf("\nPI=%f,n=%ldu,sum,n-1);
)
5.7計(jì)算鍵盤輸入的字符數(shù)。(提示:用getcharQ)
方法1:
#include<stdio.h>
#include<string.h>
main()
{charc;
intn=0;
c=getchar();
while(c!=,\n,)
{n++;
c=getchar();
)
printf(nn=%dn,n);
方法2:
#include<stdio.h>
main()
{charc;
intchgs=O;
printf("Enteronelinechar:\nn);
while(c=getchar()!=,\n')
chgs++;
printf("chgs=%d\n",chgs);
)
5.8用1元人民幣兌換1分、2分、5分的硬幣,編程計(jì)算共有多少種不同的兌換方法。
方法1:
#include<stdio.h>
main()
{intx,y,z,he=0;
for(x=1;x<=20;x++)
for(y=1;y<=5O;y++)
{z=100-x*5-2*y;
if(z>0)
{he++;
printf("\nx=%d\ty=%d\tz=%d,',x,y,z);}
)
printf("\nhe=%d",he);
)
結(jié)果:he=461
方法2:
#include<stdio.h>
#include<math.h>
main()
{intg,k,s,fa=O;
for(g=l;g<=93;g++)
for(k=1;k<=47;k++)
{s=(100-g-2*k)/5;
if(g+2*k+5*s==100&&s>0)fa=fa+1;
)
printf(n\nfa=%d\n",fa);
)
結(jié)果:fa=461
5.9編程求出1000以內(nèi)的所有完全數(shù)。若一個(gè)數(shù)恰好等于它的因子之和(除自身外),則稱該數(shù)為
完全數(shù),例如:6=1+2+3,故6是完全數(shù)。
方法1:
#include<stdio.h>
#defineM1000
main()
{intkl,k2,k3,k4,k5,k6,k7,k8,k9,k10;
inti,a,n,s;
for(a=2;a<=M;a++)
{n=0;s=a;
for(i=l;i<a;i++)
if(a%i=0)
{n++;
s=s-i;
switch(n)
{case1kl=i;break;
case2k2=i;break;
case3k3=i;break;
case4k4=i;break;
case5k5=i;break;
case6k6=i;break;
case7k7=i;break;
case8k8=i;break;
case9k9=i;break;
case10:kl0=i;
if(s==0)
{printf(u%dItsfactorsaren,a);
if(n>l)printf(M%d,%dM,kl,k2);
if(n>2)printf(H,%dn,k3);
if(n>3)printf(n,%dn,k4);
if(n>4)printf(n,%dn,k5);
if(n>5)printf(n,%dn,k6);
if(n>6)printf(M,%du,k7);
if(n>7)printf(H,%dn,k8);
if(n>8)printf(,,,%d,,,k9);
if(n>9)printf(';%dn,klO);
printf(AnH);
結(jié)果:6yes,factorsare1,2,3
28yes,factorsare1,2,4,7,14,
496yes.factorsare1,2,4,7,16,31,62,124,248,
方法2:
#include<stdio.h>
main()
{intm,s,i;
for(m=2;m<=1000;m++)
{s=0;
for(i=l;i<m;i++)
if((m%i)==0)s=s+i;
if(s==m)
{printf(H%dyes,factorsare”,m);
for(i=l;i<m;i++)
if(m%i==0)printfC%d;',i);
printf(AnM);
)
)
)
結(jié)果:6yes,factorsare1,2,3
28yes.factorsare1,2,4,7,14,
496yes,factorsare1,2,4,7,16,31,62,124,248,
5.10編程統(tǒng)計(jì)從鍵盤輸入的字符中數(shù)字字符的個(gè)數(shù),用換行符結(jié)束輸入循環(huán)。
方法1:
#include<stdio.h>
#include<string.h>
main()
{charc;
intn=0;
c=getchar();
while(c!=\n')
{if(c>='0‘&&c<='9')n++;
c=getchar();
)
printf("n=%d",n);
方法2:
#include<stdio.h>
main()
{chare;
intdigit=O;
printf(nEnteronelinechar:\n");
while((c=getchar())!='\n')
{if(c>=<0,&&c<=,9,)
digit++;
)
printf(',szgs=%d\n,',digit);
)
20
5.11編程求Z〃!(即求l!+2!+3!+…+20!)
n=l
方法1:
#include<math.h>
main()
(
floatsum=0,jc=l;
intn;
for(n=1;n<=20;n++)
(
jc=n*jc;
sum=sum+jc;
)
printf(nsum=l!+2!+...20!=%f\nn,sum);
)
方法2:
#include<math.h>
main()
(
floatsumjc;
intm,i;
sum=0;
for(m=1;m<=20;m=m+1)
(
jc=l;
for(i=l;i<=m;i++)
jc=jc*i;
printf(njc=%f\nn,jc);
sum=sum+jc;
printf(nsum=%e\nH,sum);
5.12編寫程序,求出整數(shù)1?1000之間的所有同構(gòu)數(shù)。所謂同構(gòu)數(shù)是指此數(shù)的平方數(shù)的最后幾位數(shù)
與該數(shù)相等。例如,25的平方為625,376的平方為141376,所以25和376都是同構(gòu)數(shù)。
方法1:
#include<stdio.h>
main()
{longi;
for(i=l;i<=1000;i++)
if(i*i%10=iIIi*i%100==iIIi*i%1000==i)printf(n\n%5dn,i);
)
方法2:
m#include<stdio.h>
main()
{longi,m,k,r,q;
for(i=l;i<=1000;i++)
{m=i;k=m*m;
while(m!=0)
{r=m%10;q=k%10;
if(r==q){m=m/lO;k=k/10;)
elsebreak;
)
if(m==0)printf(M%5d,%5dH,i,i*i);
)
)
方法3:
#include<stdio.h>
main()
{longi,pf;
printf("\n");
for(i=2;i<=1000;i++)
{pfi=i*i;
if(i==pf%10&&i<10){printf(,'\ni=%ld,pfe=%ldH,i,pf);continue;}
if(i==pf%100&&i<100){printf(u\ni=%ld,pf=%ld".i,pf);continue;}
if(i==pf%1000&&i<1000)printf(',\ni=%ld,pf=%ld,,,i,pf);
5.13編程序,輸入一個(gè)正整數(shù),輸出其素?cái)?shù)因子的乘積。例如,輸入60,輸出:60=2*2*3*5
方法1:
#include<stdio.h>
#include<math.h>
main()
{intk,i,j;
scanf("%d;&k);
printf("%d:",k);
i=2;
while(k!=O&&i<=k)
{if(k%i==O)
{printf("%3d”,i);
k=k/i;
i=2;}
elsei++;
})
方法2:
#include<stdio.h>
main()
{inti,x,k;
scanf(n%d",&x);
k=x;
printf(n\n%d='\x);
while(x!=O)
{for(i=2;i<=k;i++)
if(x%i==O)break;
x=x/i;
if(i<k)printf("%d*",i);
elseprintf(n\b\nn);
第六章習(xí)題
6.1選擇題:
⑴下列程序輸出結(jié)果是(B)。
main()
{inta[10]={l,2,3,4,5,6,7,8,9,10),i,k;
for(i=0;i<10;i++)
a[i]=i;
for(i=0,k=0;i<4;i++)
k+=a[i]+i;
printf(,,\n%d,,,k);
)
A)20B)12C)16D)18
⑵下列程序輸出結(jié)果是(A)。
main()
{intn[2]={0},i,j,k=2;
for(i=0;i<k;i4-4-)
forG=0;j<k;j++)
nU]=n[j]+l;
printf("%d\n",n[2]);
)
A)不確定值B)3C)2D)1
⑶下列程序的輸出結(jié)果是(A)。
main()
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=O;
for(i=l;i<3;i++)
for(j=0;jv=i;j++)
s+=a[i][j];
printf("\n%d",s);
)
A)18B)19C)20D)21
(4)下列程序輸出結(jié)果是(C)。
main()
{
inta[3][3]={l,2,3,4,5,6,7,8,9},i;
for(i=0;i<3;i++)
printf("%d,",a[i][2-i]);
)
A)1,5,9,B)1,4,7,C)3,5,7,D)3,6,9,
⑸當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出結(jié)果是(A)o
#include<stdio.h>
#include<string.h>
main()
{charss[10]=n12345H;
gets(ss);
strcat(ss,“6789”);
printf(M%sH,ss);
)
A)ABC6789B)ABC67C)12345ABC6D)ABC456789
(6)下列程序輸出結(jié)果是(C)。
main。
charb[]="Hello,you";
b[5]=,\0,;
printf(n%sM,b);
A)Hello,youB)Hello,C)HelloD)Helloyou
6.2輸入10個(gè)浮點(diǎn)型數(shù),求它們的和、平均值、最大值、最小值。
方法1:
#include<stdio.h>
main()
{floata[10],sum=0,aver,max,min;
inti=0;
while(i<10)
{scanf(H%f",&a[i]);
sum+=a[i];
i++;
)
aver=sum/10.0;
max=min=a[0];
i=0;
while(i<10)
{if(a[i]>max)max=a[i];
elseif(a[i]<min)min=a[i];
i++;
)
printf(,,\nsum=%f\naver=%f\nmax=%f\nmin=%f,',sum,aver,max,min);
方法2:
#include<stdio.h>
main()
{inti,maxi,mini;
floatx[10],sum=0,ave,max,min;
for(i=0;i<10;i++)
{scanf(n%f,,&x[i]);
sum+=x[i];}
ave=sum/10;
max=min=x[0];maxi=mini=0;
for(i=l;i<10;i++)
{if(x[i]>max){max=x[i];maxi=i;}
if(x[i]<min){min=x[i];mini=i;}
)
printf(nsum=%f\nave=%f\nmax=%f,maxi=%d\nmin=%f,mini=%d\n",sum,ave,max,maxi,min,mini);
6.3求一個(gè)3*3的整型矩陣主對(duì)角線元素之和。
main()
{inti,j,a[3][3],sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%dn,&a[i][j]);
for(i=0;i<3;i++)
{printf(u\nH);
for(j=0;j<3;j++)
printf(n%-4du,a[i][j]);
)
for(i=0;i<3;i++)
sum+=a[il[i];
printf("\nsum=%dM,sum);
)
***6.3求一個(gè)3*3的整型矩陣付對(duì)角線元素之和。
main()
{inti,j,a[3][3]={L2,3,4,5,6,7,8,9},sum=0;
for(i=0;i<3;i++)
{printf(”\n)
for(j=0;j<3;j++)
printf(“%-4d”,明?;
)
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i+j=2)sum+=a[i][i|;
printf("\nsum=%d'\sum);
)
6.4將一維實(shí)型數(shù)組元素進(jìn)行排序。
#include<stdio.h>
main()
{floatt,a[10]={12.4,3,44,4.88,5.9,6.88,77.90,65.88,4.8,0.7,6.7};
inti,j,p;
for(i=0;i<10;i++)
printf(H%10.2r,a[i]);
printf(An,r);
for(i=0;i<9;i++)
{P=i;
for(j=i+l;j<10;j++)
if(a[p]>a[j])p=j;
if(p!=i)
{t=a[p];a[p]=a[i];a[i]=t;)
for(i=0;i<10;i++)
printf(M%7.2P,a[i]);
)
6.5從鍵盤上輸入一個(gè)字符和一個(gè)字符串,查找輸入的字符是否在輸入的字符串中,若不在則輸出
沒有找到的信息,否則輸出第一個(gè)與輸入字符匹配的所在位置。
#include<stdio.h>
#include<string.h>
main()
{chara[10],c;
intflag=l,i,cor;
printf('\ninputastr:\n");
gets(a);
printf(Aninputach:\n");
c=getchar();
i=0;
while(a[i])
{if(c==a[i]){flag=0;cor=i;break;}
i++;
)
if(flag==O)
printf(”\nfind,No:%d”,cor);
else
printf(n\ncannotfind");
6.6求兩個(gè)矩陣的乘積,輸出結(jié)果。
#include<stdio.h>
main()
{inta[2][3]={l,23A5,6},b[3][2]={l,2,l,2,l,2},c[2][2];
inti,j,k;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{c[i]U]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
)
for(i=0;i<2;i++)
{printfCAn1");
for(j=0;j<2;j++)
printf("%4d';c[i][j]);
6.7已知整型數(shù)組array有10個(gè)元素,分別為2、4、6、8、10、1、3、5、7、9,編寫程序?qū)⑶?個(gè)
元素與后5個(gè)元素交換,交換后的元素分別為1、3、5、7、9、2、4、6、8、10。
#include<stdio.h>
main()
{inta[10]={2,4,6,8,10,135,7,9},i,t;
fbr(i=0;i<5;i++)
{t=a[i];a[i]=a[5+i];a[5+i]=t;
)
for(i=0;i<10;i++)
printf("%-6dM,a[i]);
)
6.8輸入一個(gè)十進(jìn)制數(shù),轉(zhuǎn)換成二進(jìn)制數(shù)并輸出。
#include<math.h>
#include<stdio.h>
main()
{longa[100],k,s=0;
inti,n=0;
scanf(n%ldn,&k);
while(k!=0)
{a[n]=k%2;
k=k/2;
n++;}
for(i=n-l;i>=0;i-)
s+=a[i]*pow(10,i);
printf(An%ld",s);
)
方法2:
#include<math.h>
#include<stdio.h>
main()
{inti,s[100],x,k=0;
scanf("%d",&x);
while(x>0)
{s[k]=x%2;
x=x/2;
k++;}
for(i=k-l;i>=0;i—)
printf(M%dM,s[i]);
)
6.9將字符串中的大寫字母轉(zhuǎn)換成小寫字母,小寫字母轉(zhuǎn)換成大寫字母,其它字符不轉(zhuǎn)換。
#include<string.h>
#include<stdio.h>
main()
{chara|80];
inti=0;
gets(a);
while(a[i]!=AO')
{if(a[i]>=,A,&&a[i]<='Z')
a[i]+=32;
else
if(a[i]>='a'&&a[i]<=,z,)a[i]-=32;
i++;)
printf(,,\nn);
puts(a);
)
方法2:
main()
{charx[]=ndhgf'hf33485SDHDbcjd980n;
inti=0;
printf(',\n%s,',x);
while(x[i]!=,\O,)
(
if(x[i]>='A,&&x[i]<='Z')
x[i]=x[i]+32;
else
if(x[i]>='a,&&x[i]<=,z,)
x[i]=x[i]-32;
i++;}
printf("\n%s",x);
)
6.10在不使用系統(tǒng)函數(shù)strcat的情況下,實(shí)現(xiàn)兩個(gè)字符串連接。
#include<stdio.h>
#include<string.h>
main()
{chara[80],b[80];
intn,i,j,m;
printf(u\ninputastr:");
gets(a);
printf(n\ninputbstr:");
gets(b);
n=strlen(a);m=strlen(b);
i=0;
while(b[i]!=\0,)
{a[i+n]=b[i];
i++;
a[n+m]=AO';
printf(n\nn);
puts(a);
)
6.11從字符串中刪除所有指定字符。
#include<stdio.h>
#include<string.h>
main()
(
chara[80],c;
inti,j,n;
printf("inputastr:M);
gets(a);
printf("inputachar:");
c=getchar();
i=0;
n=strlen(a);
for(i=0,j=0;i<n;i++)
if(a[i]!=c)a[j++]=a[i];
a[j]=W;
printf("%sn,a);
6.12將字符串si中的ASCII碼為偶數(shù)旦下標(biāo)也為偶數(shù)的字符復(fù)制到字符數(shù)組s2中。
#include<stdio.h>
#include<string.h>
main()
{charsl[80Ls2[80J;
intij;
printf("inputsi:”);
gets(sl);
i=O;j=O;
while(sl[i]!=\0')
{if(sl[i]%2==0&&i%2==0)
s2[j++]=sl[i];
i++;
s2U]=,\0,;
)
printf(n\n%sM,s2);
6.13有一行電文,已按下面規(guī)律譯成密碼:
AfZafz
B—Yb-y
C-Xc-*x
即第1個(gè)字母變成第26個(gè)字母,第i個(gè)字母變成第(26-i+l)個(gè)字母。非字母字符不變。要求編程
序?qū)⒚艽a譯回原文,并打印出密碼和原文。
#include<string.h>
#include<stdio.h>
main()
{chara[100],b[100];
inti,n;
gets(a);
n=strlen(a);
i=0;
while(a[i]!='\O')
{if(a[i]>=,a,&&a[i]v=N)
b[i]=219-a[i];
else
if(a[i]>='A'&&a[i]v=Z)
b[i]=155-a[i];
else
b[i]=a[i];
i++;
)
b[i]='\O';
printf(Ana:%s\nb:%sH,a,b);
)
方法2:
#include<string.h>
#include<stdio.h>
main()
{charx[]="dhgfhf33485SDHDbcjd980”;
inti=0;
printf("\n%s\x);
while(x[i]!=,\O,)
{if(x[i]>=,A,&&x[i]<=,Z')
x[i]=155-x[i];
else
if(x[i]>=,a,&&x[i]<=,z,)x[i]=219-x[i];
i++;}
printf(',\n%s,,,x);
第七章習(xí)題
7.1選擇題:
(1)若有以下定義:
intan={l,2,3,4,5,6,7,8,9,10},*p=a,i;
其中0WiW9,則對(duì)a數(shù)組元素的引用不正確的是(D)。
A)a[i]B)*(&a[i])C)p[i]D)*(*(a+i))
⑵以下程序的輸出結(jié)果是(A)。
main()
{inta[]={2,4,6,8},*p=a,i;
fbr(i=0;i<4;i+4-)
a[i]=*p++;
printf(n\n%dn,a[2]);
)
A)6B)8C)4D)2
(3)以下程序的輸出結(jié)果是(A)。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf(n\n%d'\*(p+2));
)
A)3B)4C)1D)2
(4)以下程序的輸出結(jié)果是(B)。
main()
(
inta[10]={l,2,3,4,5,6,7,8,9,10},*p=&a[l];
printf("\n%d”,*p+5);
)
A)6B)7C)8D)2
(5)以下程序的輸出結(jié)果是(C)。
main()
{inta[]={2,4,6,8,10},y=l,x,*p;
p=&a[l];
for(x=0;x<3;x+4-)
y+二*(p+x);
printf("%d\n';y);
)
A)17B)18C)19D)20
(6)以下程序的輸出結(jié)果是(C)。
main()
char*p[]={,,BOOLM,nOPK,,;,Hn,MSPn);
inti;
fbr(i=3;i>=0;i—,i—)
printf("%c",*p[i]);
)
A)SPB)SHC)SOD)SB
(7)以下程序的輸出結(jié)果是(A)。
main()
{inta[3][3]={{2},{4},{6}},i,*p;
p=*a;
for(i=0;i<2;i++)
{if(i==0)
a[i][i+l]=*p+l;
else
++P;
printf("%d",*p);
)
)
A)23B)26C)33D)36
(8)以下程序的輸出結(jié)果是(B)。
main()
(
inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)
p[i]=i+l;
printf(”%d”,a[l]⑵);
)
A)3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦山研發(fā)合同
- 主持人解聘合同證明
- 皮革買賣欠款合同范例
- 西安市醫(yī)療保險(xiǎn)定點(diǎn)醫(yī)療機(jī)構(gòu)服務(wù)協(xié)議書(2篇)
- 土建專業(yè)分包合同
- 工資預(yù)留合同最簡(jiǎn)單三個(gè)步驟
- 集體合同要約書范本
- 醫(yī)院食堂托管合同范例
- 酒店變賣物品合同范例
- 裝修及家具合同范例
- 《初中語文教學(xué)中的跨學(xué)科融合與創(chuàng)新實(shí)踐》
- 《金子美玲兒童詩(shī)》課件
- 甌北城市新區(qū)污水管網(wǎng)修復(fù)工程質(zhì)量評(píng)估報(bào)告(樣表)
- 北京市石景山區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末歷史試題
- (人教版新目標(biāo))八年級(jí)英語上冊(cè)全冊(cè)各單元知識(shí)點(diǎn)期末總復(fù)習(xí)講解教學(xué)課件
- 無障礙醫(yī)用電梯人性化改造
- 房地產(chǎn)公司組織結(jié)構(gòu)部門職能崗位職責(zé)大全
- 蘇教版四年級(jí)上冊(cè)數(shù)學(xué)期末測(cè)試卷-及答案
- 工程地質(zhì)調(diào)查規(guī)范
- 華為經(jīng)營(yíng)管理-華為供應(yīng)鏈管理(6版)
- JGT491-2016 建筑用網(wǎng)格式金屬電纜橋架
評(píng)論
0/150
提交評(píng)論