C语言入门必做习题100例(四)

C语言入门必做习题100例(四)
C语言入门必做习题100例(四)

1. (N阶梵塔) 有K根棒,第一根上放N片大小不等的圆盘,并保持上小下大的

顺序。现将N片圆盘从第1根移至第K根,移动中均保持上小下大的顺序,问最少移几次方得结果,求出移动方案。

2. 某一印刷厂有六项加工任务,对印刷车间和装订车间所需时间见下表(时间单位:天)

任务│J1 J2 J3 J4 J5 J6

─────┼───────────────

印刷车间│31252911

装订车间│8109631

如何安排加工顺序,使加工时间最少。

3. 将7万元投资到A,B,C三项目上,其利润见下表:

投资额(万元)│1234567

──────┼────────────────────

项A│0.11 0.13 0.15 0.24 0.24 0.30 0.35

B│0.12 0.16 0.21 0.25 0.25 0.29 0.34

目C│0.08 0.12 0.20 0.26 0.26 0.30 0.35

如何分配投资额,使获得的利润最大。

4. 无根树与通常所说的树(有根树)很相似,它包含有节点和枝,但不含有根。无根树节点之间只有相邻关系。如图一所示,是一棵有七个节点的无根树,以图一的A为根节点得到图二所示的有根树,以B为根节点得到图三所示的有根树,但从无根树的角度看,图一、二、三是结构相同的无根树,同时无根树的结构与节点的名称无关。

有根树可以用字符串的形式表示,其递归表示方法是:

根节点(子树1子树2子树3...)

图一,图二的有根树可表示为 A(B(CF(EGD))) 和 B(ACF(EGD))。由于子树的表示顺序可以不同,所以一棵有根树可以有多种表示方法,如图三又可表示成

B(F(EGD)CA) 或 B(ACF(DE(G)) 等。表示无根树时,可以以它任一节点为根节点,将其看作有根树,从而可以利用有根树的字符串表示形式来表示无根树。

任务一:由键盘读入一个字符串表示的无根树,无根树的各节点的名称用互不相同的大写英文字母表示。由用户输入一个节点的名称,程序应能够输出一种以该

节点为根节点的字符串形式。程序输出无根树的字符串形式时,各个节点的名称无

关紧要,所有节点都以P表示,以后的各种输出也采用这种形式。例如:输入无根

树的字符串形式:A(B(CD(EF))),指定根节点为D,程序应能输出

P(P(PP)PP),P(PP(PP)P),P(PPP(PP))中的任意

一种即可。

任务二:输入两个串表示的无根树,判断其结构是否一样。注意它与节点名称

无关,只考虑结构。

任务三:输入无根树的总枝数N(1<=N<=11),输出所有枝数为N的互不相同

的无根树,并记录总数。以字符串形式输出,例如:N=5 时共有6种不同结构的无

根树。

注意:各种树结构的字符串表达形式不唯一。

5. 用N*N(1<=N<=8)的格点阵代表海,其中*号代表岛。给你一组编码信息,让你重构一张地图。这组信息是按垂直方向,水平方向岛的情况摘取的。

下例中,每行右边的数字按顺序表示该行中“岛组”的大小,如第一行数字为

“12”,表示该行第一“岛组”由一个岛组成,第二“岛组”由两个岛组成,而第四列下面的“23”则表示本列由两个“岛组”组成,第一个“岛组”由两个岛组成,第二个“岛组”由三个岛组成。

任务:编程执行以下步骤,直到给定的输入 (ASCII) 文件中的信息组全部读完为止,步骤如下:

(1)从输入文件 (ASCII 文件)中读入下一个信息块,并将它显示在屏幕上。

每个信息块组成为:

格点阵大小 (N),以后是行的约束条件(N行的),列的约束条件(N列的), 每行(或每列)的约束条件是

一行数字,数字间有空格,最后用0结束。上面的例子如图所示。

(2)重构这张地图(若有多个解,要逐个构成地图),并显示。

(3)将重构的地图以ASCII文件形式输出。每岛以*后加一个空格表示;

空白处用连续的两个空格表示。若同一已知条件可画出多张地图,相互间用空行隔开;若一组已知条件画不出地图,用“NOMAP(占一行)表示。由不同的信息组求得的解用“NEXTPROBLEM”(占一行表示)1<=N<=8.

6. 一个餐厅在相继的N天里,第 i 天需要 Ri 块餐巾(i=1,2,...,N)。餐厅

可以从三种途径得到餐巾:

(1) 购买新的餐巾,每块需P分;

(2) 把用过的餐巾送到快洗部,洗一块需M天,费用需F分(F<P);

(3) 把餐巾送到慢洗部,洗一块需N天(N>M),费用需S分(S<F)。

在每天结束时,餐厅必须决定将多少块用过的餐巾送到快洗部,多少块送慢洗部,多少块保存起来延期送洗。在每天开始时,餐厅必须决定是否购买新餐巾及购买多少,使洗好的和新购的餐巾之和满足当天的需求量Ri,并使N天总的费用最小。请编程输入总天数,每天所需的餐巾块数以及每块餐巾的新购费用P,快,慢洗费用F,S,和所需天数M,N,输出每天开始时需购新餐巾数,结束时送快,慢洗部和延期送洗的餐巾数。

7. ( 旅行商 ) 一个推销员计划做一次旅行,他必须访问如图所示每个城市。每

两个城市的路径旁标有路径。要求从城市A出发,访问每个城市一次,且只访问一次,最后返回城市A,求一条距离最短的路线。

8. (tic__tac__toe 游戏) tic__tac__toe 游戏的规则是:从一个空的 (N*N) 的

棋盘(例如N=3)开始,甲乙二人轮流将棋子放置在棋盘上未被占据的方格中,

例如甲第一个放,他把棋子放在中央的方格里,然后轮到乙放,他把棋子放在第一行中间的方格里。于是又轮到甲放,......如此进行下去。判定胜负的方法是:

若某一游戏者有N枚棋子占据了一横行,或一竖列,或一对角线,则此人获胜;若直至整个棋盘被占满还没有一方获胜,则为平局。

┏━┯━┯━┓┏━┯━┯━┓┏━┯━┯━┓

┃││┃┃││┃┃│O│┃

┠─┼─┼─┨┠─┼─┼─┨┠─┼─┼─┨

┃││┃┃│X│┃┃│X│┃

┠─┼─┼─┨┠─┼─┼─┨┠─┼─┼─┨

┃││┃┃││┃┃││┃

┗━┷━┷━┛┗━┷━┷━┛┗━┷━┷━┛

9. 以字符串形式由键盘输入两个高精度的8进制正整数,串长小于255,以

第一个数为被除数,第二个数为除数,进行高精度除法运算,并显示按 8 进制表示的商和余数。

10. ( NOI'94.1_1 ) 键盘输入一个仅由小写字母组成的字符串,输出以该串中任

取M个字母的所有排列及排列总数。

11. ( NOI'94.1_2 ) 编程实现两个高精度实数减法,两数分别由键盘输入,均不

超过240位。

12. ( NOI'94.1_3 ) 一个实数数列共有N项,已知a(i)=(a(i-1)-a(i+1))/2+d,

(1〈i〈N)(N<60) , 键盘输入N,d,a(1),a(n),m,输出 a(m)。

13. ( NOI'94.1_4 ) 键盘输入一个高精度的正整数N,去掉其中任意S个数字后

剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。输出应包括所去掉的数字的位置和组成的新的正整数。(N不超过240位)

14. 在两个文本文件中各存有一个以西文制表符制成的未填入任何表项的表结构,分别称之为表1和表2,要求编程将表1和表2下述规则合并成表3:

规则:表1在表2之上,表1和表2的左边框对齐,将表1的最低行与表2的

最顶行合并。例:在你的C盘根目录下有两个文件 t0.1 和 t0.2,分别存放上述

的表1和表2,经上述规则合并后得到表3,放在文件中。三张表见下图:

┎─┰─┰─┰─┒┎─┰─┰─┰─┒

┃┃┃┃┃┎┰─┰─┒┃┃┃┃┃

┠─╂─╂─╂─┨┃┃┃┃┠─╂─╂─╂─┨

┃┃┃┃┃┖┸─┸─┚┃┃┃┃┃

┖─┸─┸─┸─┚┠┰┸┰┸┰┸─┚

┃┃┃┃

┖┸─┸─┚

表1表2表3

编程要求:

(1) 程序应能自给定的文件中读入两个源表并显示。

(2) 若源表有错,应能指出其错。

(3) 将表1和表2规则合并成表3,并显示之。

(4) 所有制表符的ASCII码应由选手自己从给出的示例文件中截取。

15. (圆盘问题) 从左向右依次安放 4 根细柱 A,B,C,D. 在 A 上套有 N (N≤20)

个直径相同的圆盘, 从下到上依次用连续的小写字母 a,b,c,...编号, 将这些圆盘

经过 B, C 单向地移入 D (即不允许从右向左移动). 圆盘可在 B,C 中暂存. 从键

盘输入 N, 及前 N 个小写字母的一个排列, 它表示最后在 D 盘上形成的一个从下到上的圆盘序列. 请用文本文件 ANS2.TXT 输出形成这一排列的操作过程.

该文件的每一行为一个形如 "k M L" 的字母序列, 其中 k 为圆盘编号, M 为 k

盘原先的柱号, L 为新柱号. 或者直接在屏幕上输出"No",表示不能生成这种排列.

例: ┃┃┃┃

键盘输入: ┃┃┃┃

3 d ━╋━┃┃┃

acb c ━╋━┃┃┃则一个正确的输出文件 b ━╋━┃┃┃

可以是: a ━╋━┃┃┃

c A B ━━┻━━━┻━━━┻━━━┻━

b A C A B C D

a A D

b C D

c B D

C语言基础练习题(含答案)Word版

第一章C语言基础知识 1.1 选择题 1. 以下不是C语言的特点的是()。B A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2. 下列字符序列中,不可用作C语言标识符的是()。B A.abc123 B.no.1 C._123_ D._ok 3. 正确的C语言标识符是()。A A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。B A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 5. 下列符号中,不属于转义字符的是()。B A.\\ B.\0xAA C.\t D.\0 6. 不属于C语言关键字的是()。d A.int B.break C.while D.character 7. 是C语言提供的合法关键字的是()。b A.Float B.signed C.integer D.Char 8. 以下不能定义为用户标示符的是()。b A.scanf B.Void C._3com_ D.int 9. 一个C程序是由()。 b A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 c A.程序行 B.语句 C.函数 D.字符 11. 下列说法中,错误的是()。 a A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外 C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12. 以下说法中正确的是()。 c A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行

C语言习题

1.在C语言程序中,可以用作变量名的是____B_____。 A.1 B.a1 C.int D.*p 2.设有如下的变量定义: int i =8,k ,a,b ; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言语法的表达式是____A______。 A.a+=a-=(b=4)*(a=3) B.x%(-3) C.a=a*3=2 D.w=float(i) 3.设整型变量a的初值为12,执行完a+=a-=a*a后,a的值为_D___。 A.522 B.144 C.264 D.-264 4.C语言中要求参加运算的数必须是整数的运算符是__C______。 A./ B.!C.% D.= =我iuf 5.下面程序的输出是__C_____ 第 1 页共9 页

main() { int x=10,y=3; printf(“%d\n”,y=x/y); } A.0 B.1 C.3 D.不确定的值 6.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为__C_____。 A.3,3,2 B.3,2,2 C.3,2,3 D.2,3,2 7.已知i=5,写出语句i-=0x12; 执行后整型变量i 的值是__A______。 A.-13 B.5 C.12 D.10 8.C语言规定:在-个源程序中,main函数的位置___C____。 A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 9.putchar函数可以向终端输出一个___D_______ A.整型变量表达式值B.实型变量值 C.字符串D.字符或字符型变量值 10.printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列?如果字符串长度大于5,则输出按方式___B_____。 A.从左起输出该字串,右补空格 B.按原字符长从左向右全部输出 C.右对齐输出该字串,左补空格 D.输出错误信息 11.已有定义int x; f1oat y;且执行scanf("%3d%f",&x,&y);语句,若从第-列开始输入数据12345 678(回车),则x 的值为___B_______。A.12345 B.123 C.45 D.345 12.C语言程序中,当调用函数时___A_______。 第 2 页共9 页

c语言程序基础练习题00道(附答案)

1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x 3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\"' B) '\1011' C) '\011' D) '\abc' '\\' '\' '\f' '\101' 'xf' '\A' '\}' 'x1f' 4.下面不正确的字符串常量是( A )。 A)'abc' B)"12'12" C)"0" D)" " 5.以下选项中不合法的用户标识符是( A )。 A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case D)default 7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer D) keep%与wind 8.在C语言中,逻辑值"真"的表示是用( C )。 A) true B) 整型值0 C)非另整型值 D) T 9若有以下定义 char s='\092'; 则该语句( b ) A)使s的值包含一个字符 B)定义不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符 10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。 A)1 B)2 C)8 D)4 11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。 A)D B)68 C)不确定的值 D)C 12逻辑运算符两侧运算对象的数据类型是 ( D )。 A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。

c语言程序基础练习题道(附标准答案)

c语言程序基础练习题道(附答案)

————————————————————————————————作者:————————————————————————————————日期:

1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x 3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\"' B) '\1011' C) '\011' D) '\abc' '\\' '\' '\f' '\101' 'xf' '\A' '\}' 'x1f' 4.下面不正确的字符串常量是( A )。 A)'abc' B)"12'12" C)"0" D)" " 5.以下选项中不合法的用户标识符是( A )。 A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case D)default 7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer D) keep%与wind 8.在C语言中,逻辑值"真"的表示是用( C )。 A) true B) 整型值0 C)非另整型值D) T 9若有以下定义 char s='\092'; 则该语句( b ) A)使s的值包含一个字符B)定义不合法,s的值不确定 C)使s的值包含4个字符D)使s的值包含3个字符 10设C语言中,int类型数据占2个字节,则float类型数据占(D )个字节。 A)1 B)2 C)8 D)4 11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。 A)D B)68 C)不确定的值D)C 12逻辑运算符两侧运算对象的数据类型是( D )。 A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。 A)1 B)2 C)3 D)4

C语言入门必做习题100例(四)

1. (N阶梵塔) 有K根棒,第一根上放N片大小不等的圆盘,并保持上小下大的 顺序。现将N片圆盘从第1根移至第K根,移动中均保持上小下大的顺序,问最少移几次方得结果,求出移动方案。 2. 某一印刷厂有六项加工任务,对印刷车间和装订车间所需时间见下表(时间单位:天) 任务│J1 J2 J3 J4 J5 J6 ─────┼─────────────── 印刷车间│31252911 装订车间│8109631 如何安排加工顺序,使加工时间最少。 3. 将7万元投资到A,B,C三项目上,其利润见下表: 投资额(万元)│1234567 ──────┼──────────────────── 项A│0.11 0.13 0.15 0.24 0.24 0.30 0.35 B│0.12 0.16 0.21 0.25 0.25 0.29 0.34 目C│0.08 0.12 0.20 0.26 0.26 0.30 0.35 如何分配投资额,使获得的利润最大。 4. 无根树与通常所说的树(有根树)很相似,它包含有节点和枝,但不含有根。无根树节点之间只有相邻关系。如图一所示,是一棵有七个节点的无根树,以图一的A为根节点得到图二所示的有根树,以B为根节点得到图三所示的有根树,但从无根树的角度看,图一、二、三是结构相同的无根树,同时无根树的结构与节点的名称无关。 有根树可以用字符串的形式表示,其递归表示方法是: 根节点(子树1子树2子树3...) 图一,图二的有根树可表示为 A(B(CF(EGD))) 和 B(ACF(EGD))。由于子树的表示顺序可以不同,所以一棵有根树可以有多种表示方法,如图三又可表示成 B(F(EGD)CA) 或 B(ACF(DE(G)) 等。表示无根树时,可以以它任一节点为根节点,将其看作有根树,从而可以利用有根树的字符串表示形式来表示无根树。 任务一:由键盘读入一个字符串表示的无根树,无根树的各节点的名称用互不相同的大写英文字母表示。由用户输入一个节点的名称,程序应能够输出一种以该 节点为根节点的字符串形式。程序输出无根树的字符串形式时,各个节点的名称无 关紧要,所有节点都以P表示,以后的各种输出也采用这种形式。例如:输入无根 树的字符串形式:A(B(CD(EF))),指定根节点为D,程序应能输出 P(P(PP)PP),P(PP(PP)P),P(PPP(PP))中的任意 一种即可。 任务二:输入两个串表示的无根树,判断其结构是否一样。注意它与节点名称 无关,只考虑结构。

C语言初学者的几个经典习题

1.求两个数的最小公倍数: #include void main() { int a,b, num1,num2,temp; printf("请输入两个数:\n"); scanf("%d%d",&num1,&num2); if (num1 int sum_day(int year,int month,int day); void main() { int year,month,day;int days; printf("请输入要查询的年月日\n"); scanf("%d%d%d",&year,&month,&day); days=sum_day(year,month,day); printf("该天是%d天\n",days); } int tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int sum_day(int year,int month,int day) { int i,days=0; if(year%4==0&&year%100!=0||year%400==0) tab[2]=29; for(i=1;i int isprime (int a); void main()

C语言程序设计入门经典例题

1、加法练习程序:由用户通过键盘输入加数和被加数,程序显示加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。要求:利用C的选择语句if条件语句或switch 开关语句,键盘输入数据前,程序会出被输入数据的信息提示。 #include void main(){ int a,b,c; printf("please put an addend:\n");scanf("%d",&a); printf("please put an augend:\n");scanf("%d",&b); printf("please answer the question:a+b=?");scanf("%d",&c); if(a+b==c) printf("very good!"); else printf("wrong! "); } 个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do…while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下: #include void main(){ int a,b,c; printf("请输入一个加数:\n");scanf("%d",&a); printf("请输入一个被加数:\n");scanf("%d",&b); do { printf("请回答:a+b=");scanf("%d",&c); if(a+b!=c) printf("请再想一想\n"); } while(a+b==c) printf("回答正确!"); } 2、判闰年程序:判断某一年是否闰年? 要求:程序首先提示用户从键盘输入4位数年份,程序能显示“XXXX年是闰年”或“XXXX年不闰年”的输出信息。 算法:year 是闰年,即year能被4整除但不能被100整除,或 year 能被 400 整除。其对应的C逻辑表达式为:(year % 4 = = 0 && year % 100 != 0) || (year % 400 = = 0) 或: (!(year % 4) && year % 100) || !(year % 400 ) 程序中可设置1个变量leap来代表是否闰年的信息,闰年:leap=1; 不闰年:leap=0。 #include void main() int year; printf("请输入4位数年份:");scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的

C语言程序设计基础知识 习题一及参考答案

第一章:程序设计基础知识 一、单项选择题 1、以下( )是面向过程的程序设计语言。 A)机器语言B)汇编语言C)高级语言D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是( )。 A)设计数据结构和算法B)建立数学模型 C)编写程序D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是( )。 A)枚举法B)递推法C)分治法D)排序法 4、以下不属于算法基本特征的是( )。 A)有穷性B)有效性C)可靠性D)有一个或多各输出 5、以下描述中不正确的是( )。 A)程序就是软件,但软件不紧紧是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是( ) A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是( )。 A)递归法的关键是必须有一个递归终止的条件。

B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是( )。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(数据结构算法) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性) 11、用模块组装起来的程序被成为________结构化程序。(模块化) 12、采用自上而下,逐步求精的设计方法便于____________。(结构化和模块化) 三、应用题

C语言基础练习题(含答案)

目录

第1-3章 C语言基础知识习题 1 选择题 1. 以下不是C语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 3.正确的C语言标识符是()。 A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 5. 下列符号中,不属于转义字符的是()。 A.\\ B.\0xAA C.\t D.\0 6.不属于C语言关键字的是()。 A.int B.break C.while D.character 7.是C语言提供的合法关键字的是()。 A.Float B.signed C.integer D.Char 8.以下不能定义为用户标示符的是()。 A.scanf B.Void C._3com_ D.int 9.一个C程序是由()。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 A.程序行 B.语句 C.函数 D.字符 11.下列说法中,错误的是()。 A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外 C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行

C语言基础选择试题(一)

C语言基础选择试题(一) 2123 答案 :C 所谓“裸机”是指( )。 a:没有安装机箱 b:没有安装应用软件 c:没有安装任何软件的计算机 c:只安装操作系统的计算机 2145 答案 :D 可用于大小写字母转换的键是( )。 a:Esc b:CapsLock c:Shift c:CapsLock或Shift 1068 答案 :D 计算机病毒的主要特征是()。 a:只会感染不会致病 b:造成计算机器件永久失效 c:格式化磁盘 c:传染性、隐蔽性、破坏性和潜伏性 1054 答案 :D 个人计算机属于( ) 。 a:小型计算机 b:中型计算机 c:巨型计算机 d:微型计算机 1080 答案 :B 用汉语拼音输入“长沙”两个汉字,输入“changsha”8个字符,那么,“长沙”两字的内码所占用的字节数是()。 a:2 b:4 c:8 c:16 1053 答案 :A 操作系统的功能是( )。 a:提高系统资源的利用率,方便用户使用计算机 b:负责给程序和数据分配内存空间 c:负责各种文件的管理 c:管理磁盘文件和I/O设备管理 1055 答案 :C 组建以太网时,通常都是用双绞线把若干台计算机连到一个中心的设备上,这个设备叫做()。 a:网络适配器 b:服务器 c:集线器 c:总线 1057 答案 :D

应用软件是指( )。 a:所有能够使用的软件 b:能被各应用单位共同使用的某种软件 c:所有微机上都应用的基本软件 c:专门为某一应用目的而编制的软件 1078 答案 :B 为网络提供共享资源并对这些资源进行管理的计算机称之为()。 a:网卡 b:服务器 c:工作站 c:网桥 1082 答案 :B 在Windows98中运行应用程序时,下列哪个操作调不出帮助信息()。 a:按F1键 b:按F10键 c:单击“帮助”菜单 c:单击窗口右上角“”按钮 1068 答案 :A ISO/ OSI参考模型七层协议中第一层是()。 a:物理层 b:数据链路层 c:网络层 c:传输层 2083 答案 :A 解释程序的功能是()。 a:解释执行高级语言程序 b:解释执行汇编语言程序 c:将汇编语言程序翻译成目标程序 c:将高级语言程序翻译成目标程序 1071 答案 :B 在计算机网络术语中,WAN的中文意义是()。 a:以太网 b:广域网 c:互联网 c:局域网 1055 答案 :C 主存储器又称为()。 a:RAM b:ROM c:内存 c:外存 1056 答案 :D 把同种或异种类型的网络相互连接起来称为()。 a:广域网 b:万维网(WWW c:城域网 c:互联网

40个C语言的基础编程题

C语言基础编程题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 2.程序源代码: main() {long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ }} ================================= =======【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码: #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) {printf("%-4d",m);h++; if(h%10==0) printf("\n"); } leap=1;} printf("\nThe total is %d",h);} ================================= ======= 【程序3】 题目:打印出所有的“水仙花数”,所谓“水仙花 数”是指一个三位数,其各位数字立方和等于该数本 身。例如:153是一个“水仙花数”,因为153=1的 三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数 分解出个位,十位,百位。 2.程序源代码: main() {int i,j,k,n; printf("'water flower'number is:"); for(n=100;n<1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n");} ================================= =======【程序4】 题目:将一个正整数分解质因数。例如:输入90,打 印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小 的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程 已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值, 并用n除以k的商,作为新的正整数你n,重复执行第 一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复 执行第一步。 2.程序源代码: /* zheng int is divided yinshu*/ main() {int n,i; printf("\nplease input a number:\n"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) { while(n!=i) {if(n%i==0) { printf("%d*",i); n=n/i; } else break; } } printf("%d",n);} ================================= =======【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成 绩>=90分的同学用A表示,60-89分之间的用B表 示,60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 2.程序源代码: main() { int score; char grade; printf("please input a score\n"); scanf("%d",&score); grade=score>=90?'A':(score>=60?'B':'C'); printf("%d belongs to %c",score,grade);} ================================= =======【程序6】 题目:输入两个正整数m和n,求其最大公约数和最 小公倍数。 1.程序分析:利用辗除法。 2.程序源代码: 第一种做法: #include "stdio.h" void main() { int m,n,i; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); if(m='a'&&c<='z'||c>='A'&&c<='Z') letters++; 编辑版word

C语言入门必做习题100例(三)

C语言的学习其实很简单的,下面是我整理的关于C语言的试题,希望对C语言的初学者有所帮助! 1. (数列的最小代价) 给定一个正整数序列,例如:4,1,2,3, 不改变数的位置把 它们相加,并且由括号来标记每一次加法所得到的和。例如:((4+1)+(2+3))= ((5)+(5))=10. 除去原数4、1、2、3之外,其余都为中间结果,如:5,5,10, 将中 间结果相加,得到:5+5+10=20, 数20 称为此数列的一个代价。对于另一种算法: (4+((1+2)+3))=(4+((3+3))=(4+(6))=10, 得到数列的另一个代价为:3+6+10=19. 若给出N 个数的数列,求出此数列的最小代价。 2. 设有一个字符串,长度小于100,且全部以英文字母组成。对字串中的每个字母可用0,1,2 三个数字进行编码,且数字可以重复使用。 程序要求:(1) 输入字符串,并能判断输入是否有错; (2) 输出对应的编码表及码长,要求字串的编码总长度为最短; (3) 根据上述编码表,给出一些编码,然后求出其原字符串。 例如:输入的字符为:ABCBAAADDEF 其对应的编码表为: A: 2 B: 10 C: 11 D: 12 E: 00 F: O1 对应的编码为:210111022212120001 总码长为:18 3. 某些密码由N 个英文字母组成(N〈26), 每个字母的平均使用率为:W1,W2,... ,Wn, 要求编程完成下列任务: ①键入英文字母及个数; ②键入N个英文字母的使用频率; ③用二进制数对该N个英文字母进行编码(最短,无二义性); ④键入字母短文(单词用空格区分),输出相应编码; ⑤键入二进制编码短文,输出译文。 4. 将4个红球,3个白球与3个黄球排成一排,共有多少种排法? 5. 有面值为M..N 的邮票各一枚,共能拼出多少不同的面额。 6. 有一个四阶方阵,随机产生1..16 这16 个自然数(不重复),依次填入每 个方格中。要求用最少的对调次数,使每一行、每一列以及对角线上的四个数之和均相等。打印每一次对调的过程。 7. 微型蓝球赛. 甲,乙两队进行蓝球比赛,结果甲队以S:T 获胜.(T

C语言上机150道题

C语言上机150道题及参考答案 1.某一门课程考试之后,需要统计考生(10人)的平均成绩,并找出其中的最高分和最低分。 2.从键盘输入两个正整数,输出这两个整数的商,要求商的小数点后保留5位。例如输入355和113,输出 3.14159。 3.用while循环结构编写程序打印ASCII码为33-127的字符。 4.用do-while,for循环结构编写程序打印ASCII码为33-127的字符。 5.用for循环结构编写程序打印ASCII码为33-127字符。 6.在1-500中,找出能同时满足用3除余2,用5除余3,用7除余4的所有整数,用循环结构。 7.输入一个整数将其倒着输出,如54321——12345。 8.计算s=1+1/3+1/5+…+1/n,截止到1/n<10-4。 9.从键盘输入一整数n,计算1*1+2*2+...+n*n的值。 10.用while 循环计算1+2+……+100的和。 11.用do while循环计算1+2+……+100的和。 12.用for 循环计算1+2+……+100的和。 13.输入一个小于等于10的整数n ,计算n!。 14.输入两个正整数m和n,计算m!+n!,m和n的值均小于10。 15.用循环语句,计算1~100之间的所有3的倍数之和。 16.用循环语句,计算100-200之间的所有7的倍数之和。 17.输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数。 18.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。 19.输入一个整数,统计它有几位数。如输入367,则该数有3位数。 20.编写程序,输出1到50中间所有能被3整除的正整数。 21.把100~200之间不能被3整除的输出。 22.编程Y=1+3+5+7+...111。 23.编程y=1*1/2*1/3*1/4*1/5*1/6*...前十项之积。 24.编程输出九九乘法表。 25.求1到100奇数和。 26.求1到100偶数和。 27.编程求200以内所有质数(素数)。 28.从键盘输入一个整数,求该数的绝对值。 29.从键盘输入+、-、*、/中的任一个,输出对应的英文单词:plus、minus、mutiply、divide,如输入的不是这4个字符中的任一个,则输出“sorry,you are wrong”。 30.从键盘输入一个字符,判断其是否为a,r,或f,并输出相应的信息(不区分大小写)。 31.求解一元二次方程ax2+bx+c=0的跟(a不等于0),a,b,c均为实数,其值由键盘输入。 32.编一程序,对于给定的一个百分制成绩,输出用像'A','B','C','D','E'表示的等级成绩。设:90分以上为'A',80~89分为'B',70~79分为'C',60~69分'D',60分

大学生C语言期末考试必做题库

C语言

第一题 在屏幕上显示一个短句“Programming in C is fun!” #include int main() { printf("Programming in C is fun!\n"); return 0; } 第二题 在屏幕上显示如下网格。 +---+---+ | | | | | | +---+---+ #include int main( ) { printf("+---+---+\n| | |\n| | |\n+---+---+\n"); return 0; } 第三题 在屏幕上显示一条语句“This is a C program.” #include int main() { printf("This is a C program.\n"); return 0; } 第四题 输出如下图形: ********** very good! ********** #include int main( ) { printf("**********\nvery good!\n**********\n"); return 0; }

第一题求平方根(基础) 程序填空,不要改变与输入输出有关的语句。 输入1个实数x,计算并输出其平方根(保留1位小数)。 例:输入17输出The square root of 17.0 is 4.1 #include #include int main( ) { double x, root; scanf("%lf", &x); root=sqrt(x); printf("The square root of %0.1f is %0.1f\n", x, root); return 0; } 第二题计算一个三位数的个十百位之和 编写程序。 输入一个三位数(大于0),计算这个三位数的个位、十位、百位数字之和. 例如:输入:152输出:sum=8 #include #include int main() { int n,a,b,c,sum; scanf("%d",&n); a=n/100; b=n%100/10; c=n%10; sum=a+b+c; printf("sum=%d\n",sum); return 0; } 第三题(公共)求圆的周长、面积及圆球体积 程序填空,不要改变与输入输出有关的语句。 求以r为半径的圆周长c和圆面积s,再求以r为半径的圆球体积v。(已知r=3.67在程序中直接赋值,pi的值为3.1415926) 按照下列形式输出: printf("c=%f\ns=%f\nv=%f\n",c,s,v); #include int main( ) { double r,c,s,v,pi=3.1415926; r=3.67; c=2*pi*r;

C语言经典编程练习题和答案详解入门必备

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: #include “stdio.h” #include “conio.h” main() { inti,j,k; printf(“\n”); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k 三位互不相同*/ printf(“%d,%d,%d\n”,i,j,k); } getch(); } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: #include “stdio.h” #include “conio.h” main() { longinti; int bonus1,bonus2,bonus4,bonus6,bonus10, bonus; sc anf(“%ld”,&i); bonus1=100000*0. 1; bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01;

简单的C语言编程题例题

1、编写程序,把560分钟换算成用小时和分钟表示,然后输出。解:其所编程序如下 #include"stdio.h" void main() {int a=560,b=60,c,d; c=a/b; d=a%b; printf("560分钟=%d小时%d分钟",c,d); } 2、编写程序,输入两个整数:1500和350,求出它们的商和余数并进行输出。 解:所编程序如下 #include"stdio.h" void main() {int a,b,c,d; printf("Input two numbers:"); scanf("%d%d",&a,&b); c=a/b; d=a%b; printf("c=%d,d=%d\n",c,d); } 3、编写程序,读入三个双精度数,求出它们的平均值并保留此平均

值小数点后一位数,对小数点后的第二位数进行四舍五入,最后输出结果。 解:所编程序如下 #include"stdio.h" void main() {double a,b,c,ave; printf("Enter three numbers:"); scanf("%lf%lf%lf",&a,&b,&c); ave=(a+b+c)/3; printf("(1)ave=%f\n",ave); ave=(int)(ave*10+0.5)/10.0; printf("(2)ave=%f\n",ave); } 4、编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a 中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a、b、c。 解:所编程序如下 #include"stdio.h" void main() {int a,b,c,m,n,t; printf("Enter three numbers:"); scanf("%d%d%d",&a,&b,&c);

相关文档
最新文档