《新編C語言程序設(shè)計(jì)教程(機(jī)械工業(yè)出版社-錢雪忠-呂瑩楠)》由會(huì)員分享,可在線閱讀,更多相關(guān)《新編C語言程序設(shè)計(jì)教程(機(jī)械工業(yè)出版社-錢雪忠-呂瑩楠)(33頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
新編C語言程序設(shè)計(jì)教程
習(xí)題及實(shí)驗(yàn)題部分答案
第1章 C 語言概述
1 習(xí)題
一、選擇題
ADCDB CCBBA
二、簡答題
1、什么是語言?語言分幾類?各有什么特點(diǎn)?
語言:
語言是思維的載體。人和計(jì)算機(jī)打交道,必須要解決一個(gè)“語言”溝通的問題。如今人與計(jì)算機(jī)之間有許多種類的“語言”的。
語言分類:
機(jī)器二進(jìn)制語言、匯編語言(低級(jí))和高級(jí)語言(第三代、第四代、……)
各自特點(diǎn):
1)機(jī)器二進(jìn)制語言:用0、1兩個(gè)數(shù)字編寫的計(jì)算機(jī)能直接運(yùn)行的程序的語言,機(jī)器語言執(zhí)行效率高,但難編寫、難懂、難移植。
2)匯編語言(低級(jí)):匯編語言的特點(diǎn)是使用一些“助記符號(hào)”來替代那些難懂難記的二進(jìn)制代碼,所以匯編語言相對于機(jī)器指令便于理解和記憶,但它和機(jī)器語言的指令基本上是一一對應(yīng),兩者都是針對特定的計(jì)算機(jī)硬件系統(tǒng)的,可移植性差,因此稱它們都是“面向機(jī)器的低級(jí)語言”。
3)高級(jí)語言:高級(jí)語言類似自然語言(主要是英語),由專門的符號(hào)根據(jù)詞匯規(guī)則構(gòu)成單詞,由單詞根據(jù)句法規(guī)則構(gòu)成語句,每種語句有確切的語義并能由計(jì)算機(jī)解釋。高級(jí)語言包含許多英語單詞,有“自然化”的特點(diǎn);高級(jí)語言書寫計(jì)算式子接近于熟知的數(shù)學(xué)公式的規(guī)則。高級(jí)語言與機(jī)器指令完全分離,具有通用性,一條高級(jí)語言語句常常相當(dāng)于幾條或幾十條機(jī)器指令。
2、匯編語言與高級(jí)語言有何區(qū)別?
高級(jí)語言程序要比匯編語言要易懂、明了、簡短得多;高級(jí)語言與機(jī)器指令完全分離,具有通用性,一條高級(jí)語言語句常常相當(dāng)于幾條或幾十條機(jī)匯編語言指令;高級(jí)語言要經(jīng)過解釋或編譯來執(zhí)行的,而匯編語言程序通過匯編程序來生成機(jī)器程序來執(zhí)行的。
3、什么是程序?
完成某一特定任務(wù)的一組指令序列,或者說,為實(shí)現(xiàn)某一算法的指令序列稱為“程序”。不同計(jì)算機(jī)語言有不同的計(jì)算機(jī)程序。
4、C語言中為何要加注釋語句?
注釋部分,起到說明語句或程序的作用。程序中應(yīng)添加必要的注釋,來增強(qiáng)程序的閱讀與理解。注釋用來向用戶提示或解釋程序的意義。
在調(diào)試程序中對暫不使用的語句也可用注釋符標(biāo)注起來,使翻譯跳過這些不作處理,待調(diào)試結(jié)束后再按需去掉注釋符。為此,注釋也有調(diào)試的輔助作用。
5、說說C語言程序的組成?C語言程序包括由哪些部分?一個(gè)C語言函數(shù)一般又由哪幾部分組成的?
C語言程序的組成:
一個(gè)C語言源程序可以由一個(gè)或多個(gè)源程序文件組成。
C語言程序的組成部分:
1.一個(gè)C語言源程序可以由一個(gè)或多個(gè)源文件組成;
2.每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成;
3.一個(gè)源程序不論由多少個(gè)文件組成,都有一個(gè)且只能有一個(gè)main函數(shù),即主函數(shù);
4.源程序中可以有預(yù)處理命令(include 命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面;
5.每一個(gè)說明,每一個(gè)語句都必須以分號(hào)結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號(hào)“}”之后不能加分號(hào);
6.標(biāo)識(shí)符,關(guān)鍵字之間必須至少加一個(gè)空格以示間隔。
C語言函數(shù):
一個(gè)C語言函數(shù)通常由函數(shù)首部(如int max(int a,int b))、函數(shù)體組成。函數(shù)體一般又由局部變量定義與函數(shù)聲明等組成的定義與聲明部分、程序執(zhí)行語句等組成的執(zhí)行部分這兩部分組成的(如min函數(shù)所示)。
第2章 結(jié)構(gòu)化程序設(shè)計(jì)與算法
2 習(xí)題
一、選擇題
BCDCD CBCAD
二、簡答題
1、什么是算法?算法的特點(diǎn)是什么?
什么是算法:
算法就是解決某個(gè)問題或處理某件事的方法和步驟,在這里所講的算法是專指用計(jì)算機(jī)解決某一問題的方法和步驟。
算法的特點(diǎn):
1)有窮性
人們編制算法的目的就是要解決問題,若該算法無法在一個(gè)有限合理的時(shí)間內(nèi)完成問題的求解,那么算法也就失去了其原有的目的,人們就會(huì)摒棄它。而且人們研究算法,其目的還在于它的高效率,即解決同一個(gè)問題的兩個(gè)算法,人們往往選擇其中那個(gè)運(yùn)行效率高的。
2)確定性
所謂算法的確定性是指算法的每一個(gè)步驟都應(yīng)該確切無誤,沒有歧義性。
3)有零個(gè)或多個(gè)輸入
執(zhí)行算法時(shí),有時(shí)需要外界提供某些數(shù)據(jù),幫助算法的執(zhí)行。一個(gè)算法可以沒有輸入,也可以有多個(gè)輸入。例如,求解N!,該算法就需要輸入一個(gè)數(shù)據(jù)N;而求解兩數(shù)之和,該算法就需要輸入兩個(gè)數(shù)據(jù)
4)有一個(gè)或多個(gè)輸出
算法的目的是求解,解就是結(jié)果,就是輸出,否則就毫無意義。
5)有效性
算法中的每一步都應(yīng)該能有效地執(zhí)行、可以實(shí)現(xiàn),執(zhí)行算法最后應(yīng)該能得到確定的結(jié)果。
2、結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)是什么?其共同特點(diǎn)是什么?
結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu):順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)
其共同特點(diǎn):1)只有單一的入口和單一的出口;2)結(jié)構(gòu)中的每個(gè)部分都有執(zhí)行到的可能;3)結(jié)構(gòu)內(nèi)不存在永不終止的死循環(huán)。
3、嘗試用自然語言、流程圖、N-S流程圖或偽代碼寫出下面問題的求解算法。
1)根據(jù)三邊,求三角形的周長和面積
2)判斷用戶輸入的一個(gè)整數(shù)是奇數(shù)還是偶數(shù)
3)求解一元二次方程ax2+bx+c=0根
4)找出10個(gè)數(shù)據(jù)的最大數(shù)
5)將20個(gè)考生成績中不及格者的分?jǐn)?shù)打印出來
6)求S=1+2+3+4+……+100
解:略
實(shí)驗(yàn)2 熟悉VC++ 6.0環(huán)境及算法
二、實(shí)驗(yàn)內(nèi)容
1、改錯(cuò)題
#include
main()
{
int x=2,y=3,a;
a=x-y;
printf("a=%d",a);
printf("\n"); /* 換行 */
}
2、程序填空題
#include
main()
{
int a,b,m;
printf("Input a,b please!\n");
scanf("%d%d",&a,&b);
m=a*b; /*賦值語句,將a和b之積值賦給m*/
printf("a*b=%d\n",m); /*輸出a和b積的結(jié)果值并換行 */
}
3、設(shè)計(jì)與表示算法
判斷一個(gè)數(shù)n能否同時(shí)被3和5整除。
1)用偽代碼表示
begin (算法開始)
input n
if (n/3*3)=n
{
if (n/5*5)=n
{
print “數(shù)n能同時(shí)被3和5整除”
}
}
end (算法結(jié)束)
2)用N-S圖表示
輸入n
n除以3的余數(shù)為0
n除以5的余數(shù)為0
是 否
是 否
n能同時(shí)
被3和5
整除
n不能同時(shí)
被3和5
整除
n不能同時(shí)
被3和5
整除
3)用流程圖表示
n被3整除
開始
n不能同時(shí)被3和5整除
結(jié)束
N
Y
n被5整除
n能同時(shí)被3和5整除
N
Y
輸入n
4、編程題
1)
#include
void main()
{
printf("How are you!\n");
}
2)
#include
main()
{
int a,b,c,sum;
printf("Input a,b,c please!\n");
scanf("%d%d%d",&a,&b,&c);
sum=a*a*a+b*b*b+c*c*c; /*賦值語句,將a和b之積值賦給m*/
printf("a*a*a+b*b*b+c*c*c=%d\n",sum); /*輸出a和b積的結(jié)果值并換行 */
}
第3章 數(shù)據(jù)類型及其運(yùn)算
3 習(xí)題
一、選擇題
BADCD DCBCA
二、閱讀程序,給出運(yùn)行結(jié)果
1、7,8,10
2、1,3
3、
4、 4
61
57
9
112
三、編程題
1. (sin(sqrt(x*x)))/(a*b)
2. 5.5
3. 3 3
4. 3
5. #include
void main()
{
char c;
c = getchar();
printf("%c\n",c);
printf("%d\n",c);
}
6. #include
int main()
{
float C,F;
printf("請輸入一個(gè)華氏溫度:");
scanf("%f",&F);
C = (5.0/9)*(F-32);
printf("攝氏溫度C=%5.2f\n",C);
return 0;
}
7. #include
#include
int main()
{
float a;
a = exp(3.1415926);
printf("%f\n",a);
return 0;
}
實(shí)驗(yàn)3 數(shù)據(jù)類型及其運(yùn)算
二、實(shí)驗(yàn)內(nèi)容
1.改錯(cuò)題
#include
main()
{
int x,y;
printf("請輸入兩個(gè)整數(shù)\n");
scanf("%d%d",&x,&y);
printf("互換前的x:%d y:%d\n",x,y);
x=x+y;
y=x-y;
x=x-y;
printf("互換前的x:%d y:%d\n",x,y);
}
2. 程序填空題
#include
main()
{
int i1,i2,i3,i;
printf("Please input i1,i2,i3: ");
scanf("%d%d%d",&i1,&i2,&i3);
i=i3; //i=i1; //i=i2;
i3=i2; //i1=i3; //i2=i1;
i2=i1; //i3=i2; //i1=i3;
i1=i; //i2=i; //i3=i2;
printf("i1=%d\ni2=%d\ni3=%d\n",i1,i2,i3);
}
3.編程題
(1)從鍵盤輸入3個(gè)大寫英文字母,把它們轉(zhuǎn)換成小寫字母后輸出。
該程序的運(yùn)行結(jié)果:
ABC
abc
#include
main()
{
char c1,c2,c3;
scanf("%c%c%c",&c1,&c2,&c3);
c1=c1+32;
c2=c2+32;
c3=c3+32;
printf("%c%c%c\n",c1,c2,c3);
}
(2)從鍵盤輸入3個(gè)整數(shù),輸出它們的平均值與積。
該程序的運(yùn)行結(jié)果:
請輸入3個(gè)整數(shù)
2 4 6
ave=4.000000,ji=48
#include
main()
{
int a,b,c,ji;
float ave;
printf("請輸入3個(gè)整數(shù)\n");
scanf("%d%d%d",&a,&b,&c);
ave=(a+b+c)/3.0;
ji=a*b*c;
printf("ave=%f,ji=%d\n",ave,ji);
}
第4章 順序結(jié)構(gòu)程序設(shè)計(jì)
4 習(xí)題
一、選擇題
BBCBC DCBDD
二、閱讀程序,給出運(yùn)行結(jié)果
1、 x=345 2、 a=1,b=3
y=3.460000 a=3,b=1
3、a=123,f=457
三、編程題
1.
2. 法一:
#include
Int main()
{ float x,xf;
Int xi;
Printf (“請輸入一個(gè)實(shí)數(shù):”);
Scanf(“%f”,&x);
Xi=(int)x;
Xi=x-xi;
Printf(“該數(shù)的整數(shù)部分為:%d\n”,xi);
Printf(“該數(shù)的小數(shù)部分為:5f\n”,xf);
Return 0;
}
法二:
#include
double a,b;
scanf("%lf",&a);
b = a;
long int p;
p = (long int)a;
printf("整數(shù)部分:%d\n",p);
printf("小數(shù)部分:%lf",(b - p));
3.
4.
5. #include
void main( )
{ float a, b ,h;
float area;
scanf("%f,%f,%f",&a,&b,&h);
area=(a+b)*h/2;
printf("梯形的面積為:%5.2f\n",area);
}
實(shí)驗(yàn)4 順序結(jié)構(gòu)程序設(shè)計(jì)
二、實(shí)驗(yàn)內(nèi)容
1.改錯(cuò)題
下列程序的功能為:按下列公式計(jì)算并輸出x的值。其中a和b的值由鍵盤輸入。糾正程序中存在的錯(cuò)誤,以實(shí)現(xiàn)其功能。
該程序的運(yùn)行結(jié)果:
4,6
x=0.480000
#include
main()
{ int a,b;
float x;
scanf("%d,%d",a,b); scanf("%d,%d",&a,&b);
x=2ab/(a+b)(a+b); x=2.0*a*b/((a+b)*(a+b));
printf("x=%d\n",x); printf("x=%f\n",x);
}
2.程序填空題
下列程序的功能為:設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù)r、h,輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說明,取小數(shù)點(diǎn)后2位數(shù)字。(周長l=2,圓面積s=,圓球表面積sq=,圓球體積vq=;圓柱體積vz=),請補(bǔ)充完善程序,以實(shí)現(xiàn)其功能。
#include
main()
{
float pi,h,r,ly,sy,sq,vq,vz;
pi=3.1415926;
printf("請輸入圓半徑r,圓柱高h(yuǎn):\n");
該程序的運(yùn)行結(jié)果:
請輸入圓半徑r,圓柱高h(yuǎn):
1.5 3
圓周長為:9.42
圓面積為:7.07
圓球表面積為:28.27
圓球體積為:14.14
圓柱體積為:21.21
scanf("%f%f",&r,&h);
ly= 2*pi*r ;
sy= pi*r*r ;
sq= 4*pi*r*r;
vq= 4.0/3*pi*r*r*r;
vz= pi*h*r*r;
printf("圓周長為:%.2f\n",ly);
printf("圓面積為:%.2f\n", sy);
printf("圓球表面積為:%.2f\n", sq);
printf("圓球體積為:%.2f\n", vq);
printf("圓柱體積為:%.2f\n", vz);
}
3.編程題
(1)編寫一個(gè)程序?qū)崿F(xiàn)如下功能:從鍵盤輸入3個(gè)字符,然后在屏幕上分3行輸出該3個(gè)字符。
該程序的運(yùn)行結(jié)果:
ABC
A
B
C
#include
main()
{
char c1,c2,c3;
c1=getchar();
c2=getchar();
c3=getchar();
putchar(c1);
putchar(\n);
putchar(c2);
putchar(\n);
putchar(c3);
putchar(\n);
}
(2)編寫一個(gè)程序?qū)崿F(xiàn)如下功能:輸入一元二次方程ax2+bx+c=0的系數(shù)a、b、c,求方程的根。要求:運(yùn)行該程序時(shí),輸入a、b、c的值,分別使b2-4ac的值大于、等于和小于零,觀察并分析運(yùn)行結(jié)果。求根公式如下:
該程序的運(yùn)行結(jié)果:
a=1,b=3,c=2
x1=-1.00
x2=-2.00
.
.
.
.
.
法一:
#include
#include
void main()
{float a,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}
法二:
#include
#include
void main()
{ float a,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
if (a==0)
printf("不是二次方程\n");
else
disc=b*b-4*a*c;
if (disc<0)
printf("無實(shí)根\n");
else
if (disc==0)
{p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("有兩個(gè)相同的實(shí)根\n");
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}
else
{p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("有兩個(gè)不同的實(shí)根\n");
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}
}
第5章 選擇結(jié)構(gòu)程序設(shè)計(jì)
5 習(xí)題
一、選擇題
BBCBB CBACB
二、閱讀程序?qū)懗鲞\(yùn)行結(jié)果
1、-2 2、Yes
3、(1)2
(2)3
CC
A=2,b=2,c=4
4、*& 5、5
3
2
三、編程題
1. #include
intmain()
{
inta,b;
//先判斷a是否大于等于0,如果是的話a=b
if(a>=0)
{
b=a;
}
//如果不是的話,先對a按位取反,然后再加一
else
{
b=~a;
b=b+1;
}
cout<
intmain(void)
{
intn;
intstatus=1;
while(status)
{
printf("輸入:");
scanf("%d",&n);
switch(n)
{
case0:
printf("舞蹈\n");
break;
case1:
case3:
printf("乒乓球\n");
break;
case 2
case4:
printf("籃球\n");
break;
case5:
printf("保齡球\n");
break;
case6:
printf("吉他\n");
break;
default:
status=0;
}
}
return0;
}
實(shí)驗(yàn)5 選擇結(jié)構(gòu)程序設(shè)計(jì)
二、實(shí)驗(yàn)內(nèi)容
1.改錯(cuò)題
下列程序的功能為:輸入3個(gè)整數(shù)后,輸出其中最大值。請糾正程序中存在錯(cuò)誤,使程序?qū)崿F(xiàn)其功能。
該程序的運(yùn)行結(jié)果:
請輸入3個(gè)整數(shù):
5 2 7
3個(gè)數(shù)中最大者為:7
#include "stdio.h"
main()
{
int a,b,c,max;
printf ("請輸入3個(gè)整數(shù):\n");
scanf ("%d%d%d",&a,&b,&c);
max=a;
if (c>b)
{ if (b>a) max=c;} /* c>b>a */
else /* b>c */
{if (c>a) max=b;} /* b>c>a */
printf("3個(gè)數(shù)中最大者為:%d\n",max);
}
改正后的程序:
#include "stdio.h"
main()
{
int a,b,c,max;
printf ("請輸入3個(gè)整數(shù):\n");
scanf ("%d%d%d",&a,&b,&c);
max=a;
if (c>b)
{ if (c>a) max=c;}
else
{if (b>a) max=b;}
printf("3個(gè)數(shù)中最大者為:%d\n",max);
2. 程序填空題
#include
main()
{
int a,b,d;
char ch;
printf("Please input a expression:");
scanf("%d%c%d",&a,&ch,&b); /*輸入數(shù)學(xué)表達(dá)式*/
switch(ch)
{
case +: d=a+b;
printf("%d+%d=%d\n",a,b,d); break;
case -: d=a-b;
printf("%d-%d=%d\n",a,b,d); break;
case *: d=a*b;printf("%d*%d=%d\n",a,b,d); break;
case /:
if (b==0) printf("Divisor is zero\n");
else printf("%d/%d=%f\n",a,b,(float)a/b); /* 強(qiáng)制類型轉(zhuǎn)換*/
break;
default : printf("Input Operator error!\n");
}
}
3.編程題
(1)#include
main()
{
int a,b,c,max,min;
float sum,d,e;
printf("請輸入三個(gè)數(shù):");
scanf("%d%d%d",&a,&b,&c);
sum=a+b+c;
d=sum/3;
e=a*b*c;
if(a>b)
{max=a;min=b;}
else
{max=b;min=b;}
if(maxc)
min=c;
printf("三個(gè)數(shù)的和%.1f\n",sum);
printf("三個(gè)數(shù)的平均值%.2f\n",d);
printf("三個(gè)數(shù)的積%.1f\n",e);
printf("三個(gè)數(shù)中最大值是%d\n",max);
printf("三個(gè)數(shù)中最小值是%d\n",min);
}
(2)
#include
void main()
{
float x,y;
scanf("%f",&x);
if(x<5) y=1-x*x*x;
else if(x<=15&&x>=5) y=x-1;
else y=2*x*x-1;
printf("x=%0f,y=%0f\n",x,y);
}
(3)
#include
void main()
{ int a; printf("input integer number:");
scanf("%d",&a);
switch(a)
{ case 0:printf("Sunday\n");break;
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
default:printf("error\n");
}
}
第6章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
6 習(xí)題
一、選擇題
BCDDA BDBAB BC
二、閱讀程序?qū)懗鲞\(yùn)行結(jié)果
1、______3,4________
2、_____6_____
3、___##___
4、___02____
5、___18_____
6、_____1______
7、___80____
8、___輸出一行中含大寫或小寫字母個(gè)數(shù)中的大者數(shù)________
9、
1)5次
21 2
2) 2次
13 6 4 4
3)外循環(huán)2次,內(nèi)2層循環(huán)累計(jì)3次,內(nèi)3層循環(huán)累計(jì)5次
28
4)外循環(huán)3次,內(nèi)循環(huán)累計(jì)4次
-1 -10 5
三、編程題
略
實(shí)驗(yàn)6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
二、實(shí)驗(yàn)內(nèi)容
1.改錯(cuò)題
下列程序的功能為:倒序打印26個(gè)英文字母。糾正程序中存在的錯(cuò)誤,以實(shí)現(xiàn)其功能。
#include
main()
{
char x;
x=z;
while(x!=a) while(x!=a-1)或while(x>=a)
{
printf("%3d",x); printf("%3c",x);
x++; x- -;
}
}
2. 程序填空題
1)
#include
main()
{
int day,x1,x2;
day=0;
x1=1020;
while (x1)
{
X2=x1/2-2;
X1=x2;
day++;
}
printf(“day=%d\n”,day);
}
2)
#include
#include
main()
{
int i,left,right;char cc[80];
printf("輸入一個(gè)算術(shù)表達(dá)式\n");
gets(cc);
left = 0;right = 0;//left和right分別代表統(tǒng)計(jì)的左右括號(hào)數(shù)
for(i=0;i<(int)strlen(cc);i++){
if( cc[i]==( ) left++;
if( cc[i]==) ) right++;
if( right>left ) break;
}
if (left==right) printf("圓括號(hào)配對正確\n");
else printf("圓括號(hào)配對不正確\n");
}
三、編程題
(1)計(jì)算1~100之間所有含8的數(shù)之和。
參考程序:
#include
main()
{
int i, sum=0;
for(i=1; i<=100; i++)
if(i%10==8 || i/10==8)
sum+=i;
printf("sum=%d\n",sum);
}
(2)編寫程序,利用下列近似公式計(jì)算e值,誤差應(yīng)小于10-5。
…
參考程序:
#include
main()
{
int i=0 ;
long n=1;
float e=0, t=1;
while(t>1e-5)
{
e+=t;
i++;
n*=i;
t=1.0/n;
}
printf("e=%f\n",e);
}
(3)某學(xué)校有近千名學(xué)生,在操場上排隊(duì),若5人一行余2人,7人一行余3人,3人一行余1人。編寫程序,求該校的學(xué)生總?cè)藬?shù)。
參考程序:
#include
main()
{int i;
for(i=900;i<=1000;i++)
if(i%5==2&&i%7==3&&i%3==1)
break;
printf("學(xué)生總?cè)藬?shù)=%d\n",i);
}
(4)從鍵盤輸入N個(gè)學(xué)生的學(xué)號(hào)和每人M門課程的成績,計(jì)算每個(gè)學(xué)生的總分及平均分。輸出內(nèi)容包括每個(gè)學(xué)生的學(xué)號(hào)、總分和平均分。
#include
void main()
{
int i,j,n,m,no,score,sum;
float ave;
printf("輸入學(xué)生數(shù)和每人課程數(shù):");
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{ sum=0;
printf("輸入第%d個(gè)學(xué)生的學(xué)號(hào): ",i);
scanf("%d",&no);
printf("輸入第%d個(gè)學(xué)生的%d門課程成績: ",i,m);
for(j=1;j<=m;j++)
{
scanf("%d",&score);
sum+=score;
}
ave=(float)sum/m;
printf("\n**第%d個(gè)學(xué)生的學(xué)號(hào)為:%d 總分為:%d 平均分為:%.2f\n\n",i,no,sum,ave);
}
}
第7章 數(shù)組及其應(yīng)用
7 習(xí)題
一、選擇題
DACBC ABDBD
二、閱讀程序?qū)懗鲞\(yùn)行結(jié)果
1、______4______
2、____ Tony _____
3、____ max=85,min=5,sum=180,aver=30.0_____________
4、____ a=2 b=2 c=2 d=2 e=1 f=2 g=2____
5、____j=45_____
三、編程題
1.略
2.
#include
intmain()
{
inta[10];//用來存數(shù)據(jù)
inti,j,temp;
for(i=0;i<10;i++)//輸入10個(gè)數(shù)。
scanf("%d",&a[i]);
for(j=0;j<9;j++)//標(biāo)準(zhǔn)冒泡法排序
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
for(i=0;i<10;i++)//輸出。
printf("%d,",&a[i]);
printf("\n");
return0;
}
實(shí)驗(yàn)7 數(shù)組及其應(yīng)用
二、實(shí)驗(yàn)內(nèi)容
1.改錯(cuò)題
#include
void main()
{
char a[8]="wel",b[]="come";
int i,n=0;
while (a[n]) n++;
for(i=0;b[i]!=\0;i++)
a[n+i]=b[i];
a[n+i]=\0;
//n=0;
//while (a[n]) {putchar(a[n]);n++;}
printf("%s\n",a);
}
2. 程序填空題
#include
#include
void main()
{
char string[20],str[3][20];
int i;
for (i=0;i<3;i++) gets(str[i]);
if (strcmp(str[0],str[1])>0) strcpy(string,str[0]);
else strcpy(string,str[1]);
if (strcmp(str[2],string)>0) strcpy(string,str[2]);
puts(string);
}
三、編程題
(1)從鍵盤輸入10個(gè)數(shù),用選擇排序法將其按由大到小的順序排序;然后在排好序的數(shù)列中插入一個(gè)數(shù),使數(shù)列保持從大到小的順序。
#define N 11
#include
void main()
{ int a[N],i,j,k,t,p;
printf("請輸入%d 個(gè)整數(shù) :\n",N);
for(i=0;ia[j])
k=j;
if(k!=i)
{ t=a[k]; a[k]=a[i]; a[i]=t;}
}
printf("\n排序后:\n");
for(i=0;i=0 && a[j]>p) //找插入位置
{a[j+1]=a[j];j--;}
a[j+1]=p; //插入
printf("\n插入后:\n");
for(i=0;i
void main()
{
int a[2][3],b[2][3],c[2][3],i,j;
for(i=0;i<2;i++)
for(j=0;j<3; j++)
scanf("%d",&a[i][j]);
for(i=0;i<2;i++)
for(j =0;j<3; j++)
scanf("%d",&b[i][j]);
for(i=0; i<2; i++)
for(j =0;j<3; j++)
c[i][j]=a[i][j]+b[i][j];
for( i=0;i<2;i++)
{ for(j=0;j<3;j++)
printf("%3d",c[i][j]);
printf("\n");
}
}
(3)從鍵盤輸入一個(gè)字符串,刪除其中某個(gè)字符。如輸入字符串“abcdefededff”,刪除其中的字符e,則輸出的字符串為“abcdfddff”。
//方法一:
#include
#include
void main()
{
int i,j;
char s[80],c;
printf("輸入一行字符: ");
gets(s);
printf("輸入要?jiǎng)h除字符: ");
scanf("%c",&c);
for(i=0,j=0;s[i]!=\0;i++)
if (s[i]!=c)
s[j++]=s[i];
s[j]=\0;
puts(s);
}
//方法二:
#include
#include
void main()
{char line[80] ;
char ch;
int i,j;
int len;
printf("輸入一行字符: ");
gets(line) ;
printf("輸入要?jiǎng)h除字符: ");
ch=getchar();
i=0;
while(line[i]!=\0 )
{while( line[i]!=\0 && line[i]!=ch) i++;
len=strlen(line);
for(j=i;j
#include
#define ARR_SIZE 80
void Inverse(char str[]);
main()
{
char a[ARR_SIZE];
printf("Please enter a string:");
gets(a);
Inverse(a);
printf("The inversed string is :");
puts(a);
}
void Inverse(char str[])
{
int len,i=0,j;
char temp;
len=strlen(str);
for(j=len-1;i
#include
#define MAX 100 //MAX 200
void Insert(char s[]);
main()
{
char string[MAX];
scanf("%s",string);
Insert(string);
printf("%s",string);
}
void Insert(char srcStr[])
{
char strTemp[MAX];
int i=0,j=0;
strcpy(strTemp,srcStr);
while(strTemp[j])
{
srcStr[i]=strTemp[j];
i++;
j++;
srcStr[i]= ;
i++;
}
srcStr[i]=\0;
}
三、編程題
(1)從鍵盤任意輸入10個(gè)整數(shù),用函數(shù)編程實(shí)現(xiàn)將其中最大數(shù)與最小數(shù)的位置對換后,再輸出調(diào)整后的數(shù)組。
#include
#define N 10
void EXmaxmin(int a[],int n) //求最大數(shù)和最小數(shù)
{
int i,j=0,k=0,t;
int max,min;
max=a[0]; min=a[0];
for(i=1;ia[i]) { min=a[i]; k=i;}
t=a[j];
a[j]=a[k];
a[k]=t;
}
void main()
{
int i;
int a[N];
printf("請輸入%d個(gè)整數(shù):",N);
for(i=0;i
#include
int function(char x[])
{
int i;
int y=strlen(x);
for(i=0;i
int n=0;
void tentotwo(int number,int b[ ])
{
while(number)
{
b[n]=number%2;
number=number/2;
n++;
}
}
void main(void)
{
int inumber;
int a[20],i;
printf("please input nunber: ");
scanf("%d",&inumber);
printf("\n");
tentotwo(inumber,a );
for(i=n-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
第9章 指針及其應(yīng)用
9 習(xí)題
一、選擇題
BACDB CACAC DCDAC
二、閱讀程序?qū)懗鲞\(yùn)行結(jié)果
1、 2
2、第一行是:__1 5 3_;第二行是:__3 9 7__。
3、
2 4
4、
abcDDfefDbD
5、53
6、
三、編程題
實(shí)驗(yàn)9 指針及其應(yīng)用
二、實(shí)驗(yàn)內(nèi)容
1.改錯(cuò)題
#include
int len(char s[]
鏈接地址:http://www.820124.com/p-10844982.html