C语言程序设计试题 库由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言程序设计试题库”。
目录
第一章 基础知识.....................................................................................................................................................2 一.填空..............................................................................................................................................................2 第二章 常量、变量和表达式.................................................................................................................................4 一.填空..............................................................................................................................................................4 第三章 顺序结构.....................................................................................................................................................7 一.填空..............................................................................................................................................................7 第四章 选择结构...................................................................................................................................................10 一.填空............................................................................................................................................................10 二.阅读程序写结果........................................................................................................................................10 三.补充程序....................................................................................................................................................16 四.编程一........................................................................................................................................................21 第五章 循环结构...................................................................................................................................................26 一.填空............................................................................................................................................................26 二.阅读程序写结果........................................................................................................................................26 三.补充程序....................................................................................................................................................32 四.编程一........................................................................................................................................................36 第六章 函数...........................................................................................................................................................41 一.填空............................................................................................................................................................41 二.阅读程序写结果........................................................................................................................................42 三.补充程序....................................................................................................................................................56 四.编程二........................................................................................................................................................61 第七章 数组...........................................................................................................................................................74 一.填空............................................................................................................................................................74 二.阅读程序写结果........................................................................................................................................76 三.补充程序....................................................................................................................................................88 第八章 结构体.......................................................................................................................................................93 一.填空............................................................................................................................................................93 二.阅读程序写结果........................................................................................................................................95 三.补充程序..................................................................................................................................................103 第九章 指针.........................................................................................................................................................111 一.填空..........................................................................................................................................................111 二.阅读程序写结果......................................................................................................................................112 三.补充程序..................................................................................................................................................118 第十章 文件.........................................................................................................................................................124 一.改错题......................................................................................................................................................124 第一章 基础知识
一.填空
1.每个C程序都必须有且仅有一个____ main()____ 函数。
2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、___编译_____、链接、加载和执行。3.软件是程序,以及__开发____、使用和维护所需要的所有文档。
4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的__指令序列_______”。5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和___高级语言_____两大类。6.C语言是由_____函数___组成的。
7.C语言的函数可分为主函数main、标准库函数和_____自定义函数____。8.一个函数是由两部分组成的,即:___函数首部_____和 函数体。
9.编译是将C语言所编写的源程序_____翻译___成机器代码,也称为建立目标代码程序的过程。10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为__应用软件_______。
11.机器语言是以______二进制代码____形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。
12.与机器语言相比,使用汇编语言来编写程序可以用_助记符______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。
13.在编译程序之前,凡以 # ___开头的代码行都先由预处理程序预处理。14.C程序的执行均是由执行__ main函数_______开始。
15.函数体即为包含在{ }内的部分。它分为___声明部分_____和为完成功能任务由若干个C语句 组成的执行部分。
16.C语言程序中一条简单语句是以___;(或分号)_____字符作为结束符的。17.C语言是结构化、__模块化______的程序设计语言。
18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“__翻译_____程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但__执行速度_____没有低级语言高。20.第一个系统体现结构化程序设计思想的教学工具语言是__ PASCAL _____语言。
解答: 1.main()
6.函数
11.二进制代码
16.;(或分号)2.编译
7.自定义函数
12.助记符
17.模块化
3.开发
8.函数首部
13.#
18.翻译
4.指令序列
9.翻译
14.main函数
19.执行速度
5.高级语言
10.应用软件
15.声明部分
20.PASCAL 第二章 常量、变量和表达式
一.填空
1.以16位计算机为例,若定义long int a;则变量a占______个字节的内存空间。2.以16位计算机为例,若定义double a;则变量a占______个字节的内存空间。3.以16位计算机为例,若定义long double;则变量a占______个字节的内存空间。4.在______位机,int型占4个字节。
5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______、空类型。6.在C语言中,基本数据类型有:______。
7.整型常量046转换为十进制数等于______。
8.整型常量054转换为十进制数等于______。9.整型常量0x125转换为十进制数等于 ______。
10.整型常量0x7C转换为十进制数等于______。
11.整型常量39转换为八进制等于______。
12.实数473.468写成规范化指数形式,则应为 ______。
13.实数0.0453写成规范化指数形式,则应为______。
14.将0x123转换为二进制等于______。
15.字符‟A‟表示成十六进制等于______。
16.在C语言中,称代表常量的标识符为______。
17.C语言中是用编译预处理命令______ 来定义符号常量
18.在C语言中,以反斜杠符()开头,后跟字符的字符序列,称之为 ______,要用来表示控制及不可见的字符或者一些图形符号。
19.语句printf(“106”)执行的结果输出是______。
20.语句printf(“b”)执行的结果输出是______。
21.语句printf(“b”)执行的结果输出是______。
22.语句printf(“102”)执行的结果输出是 ______。
23.若有char ch1;ch1='a'+4;则语句printf(“%c”,x)的输出结果为______。
24.字符串常量“Hello, everyone!”占据的内存空间为______个字节 25.字符串常量“Hello,Bob!”占据的内存空间为 ______个字节
26.十进制整型常量由0~9个数据组成,但不能以______开始,没有小数部分。27.十六进制常量由0~9和______组成。28.unsigned long类型常量通常以______为后缀。29.实型常量通常有小数形式和______两种表达方式。30.C语言中是用编译预处理命令______来包含其他源文件。
31.为了表示字符串的结束,系统自动在字符串的最后加一个______,但不被输出。32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______和变量值 33.C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______开头。34.在16位机中,sizeof(“hellon”)等于 ______。
35.在16位机中,printf(““hello””)等于______。
36.字符变量在内存中占用______个字节的存储空间。37.若有定义int x=27, y=6;则表达式 x/y的值为______。38.若有定义int x=47, y=8;则表达式 x%y的值为______。
39.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch1=%c, ch2=%c”,ch1,ch2);则输出为______。
40.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch2=%c, ch3=%c”,ch2,ch3);则输出为______。
41.若有定义int i=5, j, k;执行j=i--;k=--i;printf(“i=%d, j=%dn”, i, j);则输出为______。
42.表达式(int)(13.7+25.6)/4%5 的值是______。
43.表达式 3.6-5/2+1.2+5%3 的值是______。
44.表达式54%10/2+4.0*(8/5)的值是______。
45.若定义int x;double b=5.45;执行x=b后,则x的值为______。
46.若定义int y;char c='A';执行y=c后,则y的值为______。
47.若定义 int a=8;float b=2.5;则a/(int)(b)的值为______。
48.若a=5,则执行a*=7-3语句后,a的值是______。
49.若int a=1,b=0,c=4,d=2;则表达式(a>b ? a:b)&&(c-d)的值为______。
50.已知a = 0,表达式 a = 1?b = 1:b = 0;执行后,b的值是______。
51.若定义int m=7,n=12;则表达式n%=m-m%5的值是______。
52.若定义int a=8;float b=4.5;执行a*=a/=a-b后,a的值为______。53.int a=2;!a++的值为______。
54.int a=0;!++a的值为______。
55.int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为 ______。
56.int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为 ______。
57.#define MM(a,b)
(a-b)?a:b
int a=2,b=6;printf(“%dn”,MM(a,b))的值为 ______。
58.在32位机中,int a=4,b=7;printf(“%0x”,a-b)的值为:______。
59.int x,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。
60.int i=2,j;printf(“%d”,j=i
2.4
3.10
6.int、float、double、char 7.38
11.047
12.4.734680e+002 13.4.530000e-002 16.符号常量
17.#define 18.转义字符常量
21.b
22.B
23.e
26.0
27.A~F
28.U
31.“ ” 32.变量类型
33.数字
36.1
37.4
38.7
41.i=3, j=5
42.4
43.4.800000
46.65
47.4
48.20
51.2
52.4
53.0
56.2.500000 57.2
58.fffffffd
4.32
5.指针类型
8.44
9.293
10.124 14.100100011 15.x41或41H 19.F
20.b 24.16
25.11
29.指数形式
30.#include 34.7
35.“hello”
39.ch1=C, ch2=A 40.ch2=A, ch3=C 44.6.000000
45.5 49.1
50.1 54.0
55.4 59.3,1
60.0 6 第三章 顺序结构
一.填空
1.C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空语句。2.常用于字符输入的函数为:________________。3.常用于字符输出的函数为:________________。4.常用于字符串输入的函数为:________________。5.常用于字符串输出的函数为:________________。6.格式输入函数的一般形式为:________________。7.格式输出函数的一般形式为:________________。
8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。9.有char ch,则从键盘给ch赋值的格式输入语句为:________________。
10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。11.设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________。
12.若有int a,b;,想通过scanf(“%d%d”,&a,&b);输入语句给a赋于1,给b赋于2,则从键盘输入数据的形式是________________。
13.若有int i,j;scanf(“i=%d,j=%d”;&i,&j);,要求给i赋10,给j赋20,则应该从键盘输入_______。14.已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为
1、j的值为
2、k的值为3,请写出正确的输入语句________________。
15.有int m,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%dn”,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是________________。
16.有 int a;float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“na=%d, b=%f, c=%fn”, a, b, c);,若运行时从键盘上输入9876543210,则程序的输出结果是_____________________。
17.有 int m=0256,n=256;则 printf(“%o %on”,m,n);的输出结果是_____________________。18.有int x=102,y=012;,则printf(“%2d,%2dn”,x,y);的输出结果是_____________________。19.有定义和语句:int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);,则printf(“%d %d %3.1f %3.1fn”,a,c,f,x);的输出结果是_____________________。
20.若有定义和语句:int m=0xabc,n=0xabc;m-=n;则printf(“%on”,m);的输出结果是_____________。21.若有int m=32,n=032;,则printf(“%d,%xn”,m,n);执行后输出结果是___________________。22.若有 int a=1234;,则 printf(“%2dn”,a);的输出结果是_____________________。
23.若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________。
A)10 2233
B)10.0,22.0,33.0 C)10.0 22.0 33.0
D)10 22 33 24.若有 int x=3,y=1;则printf(“%d %dn”,x++,y+2);的输出结果是_____________________。
25.若有定义和语句:double d;float f;long l;int i;i=f=l=d=20/3;则 printf(“%d %ld %f %f n”, i,l,f,d);的输出结果是(小数点后只写一位)_____________________。26.以下说法中正确的是 _____________________。
A)#define和printf都是C语句 B)#define是C语句,而printf不是 C)printf是C语句,但#define不是 D)#define和printf都不是C语句
27.若有 int k=17;,则 printf(“%d,%o,%x n”,k,k,k);的输出结果是_____________________。28.以下叙述中正确的是_____________________。
A)输入项可以是一个实型常量,如:scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(“a=%d,b=%d”);C)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f);29.若有定义和语句:int u=010,v=0x10,w=10;则printf(“%d,%d,%dn”,u,v,w);输出结果是_____________________。
30.若有int a=1,b=4,c=2;float x=10.5, y=4.0, z;z=(a+b)/c+sqrt((double)y)*1.2/c+x;,则printf(“%fn”,z);的输出结果是_____________________。
31.若有int a=2,c=5;,则printf(“a=%%d,b=%%dn”,a,c);的输出结果是_____________________。32.有char c;int n=100;float f=10;double x;x=f*=n/=(c=50);则printf(“%d %fn”,n,x);的输出结果是_____________________。
33.有int i=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%dn”,i,j,k);若从键盘输入:10 20 30。输出结果是_____________________。
34.若有int a,b,c;a=25;b=025;c=0x25;,则printf(“%d %d %dn”,a,b,c);的输出结果是___________。35.有以下语句段
int n1=10,n2=20;
printf(“________________”,n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10 n2=20 36.若有语句int i=-19,j=i%4;则printf(“%dn”,j);的输出结果是_____________________。37.有int a=0;a+=(a=8);则printf(“%dn”,a);的输出结果是_____________________。
38.有int a=1, b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%dn”, a, b);的输出结果是______________。39.有unsigned short a=65536;int b;,则printf(“%dn”,b=a);的输出结果是______________。40.语句printf(“10289n”);的数据结果为:__________________。
解答: 1.表达式语句
2.getchar()
3.putchar()
4.gets()
5.puts()6.scanf(“格式控制字符串”,地址表列); 7.printf(“格式控制字符串”,输出表列); 8.stdio.h
9.scanf(“%c”,&ch);10.printf(“%s”,HelloWord!);或者:printf(“HelloWord!”);11.printf(“x=%1dn”,x);12.1 2 或者1(回车)2 13.i=10,j=20 14.scanf(“%d,%d,%d”,&i,&j,&k);15.m=123n=456p=789 16.a=98, b=765.000000, c=4321.000000 17.256 400 18.102,10
19.1 65 1.5 6.5 20.0
21.32,1a 22.1234
23.B
24.3 3
25.6 6 6.0 6.0 26.D
27.17,21,11 28.C
29.8,16,10 30.13.700000
31.a=%d,b=%d 32.2 20.000000 33.10300 34.25 21 37
35.n1=%dnn2=%d 36.-3
37.16 38.2,1
39.0
40.B89 第四章 选择结构
一.填空
1.在if, while, case, do, else 等关键字中,用于选择结构的有().2.已知 a = 1;那么 if(a = 2)printf(“%d”, 2);else printf(“%d”, 1);的输出结果是().3.已知 char a = 'A';那么 if(a > 65)printf(“%s”, “bigger”);else printf(“%s”, “smaller”);的输出结果是().4.表示“x≥ y≥ z”的C语言表达式是()。
5.在C语言中,用于实现选择结构的语句有()语句和()语句。6.判断两个浮点型变量x和y是否相等一般用:if()。8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。9.表达式98 && 8 && 31 &&(9812;
printf(“%dn”, y);
return 0;} 输入:12 答案: 0
17.#include int main(){
float x, y;
char op;
double r;
scanf(“%c%f%f”,&op,&x,&y);
switch(op)
{
case '+': r = x + y;break;
case '-': r = x-y;break;
case '*': r = x * y;break;
case '/': r = x / y;break;
}
printf(“%.1f”, r);
return 0;
} 输入:/ 3 5 答案:0.6
18.#include void main(){ int a=7;
if(a>9 || a
a=a/3;
else
a=a%3;
printf(“a=%d”, a);} 答案:a=2
19.#include void main(){
int a=20;
switch(a%3)
case 0: printf(“0”);
case 1: printf(“1”);
case 2: printf(“2”);
default: printf(“3”);15
{
}
printf(“4”);} 答案:234
20.#include void main(){
int a=2,b=5,c=8,t;
if(a
if(b
if(a
printf(“%d,%dn”, a++,--c);} 答案: 8,1
三.补充程序
1.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。
#include #include int main(){ char c;printf(“input a character: ”);
_____________________________________________
if(c
printf(“This is a digitn”);else if _______________________________________
printf(“This is a capital lettern”);else if(c>='a'&&c
printf(“This is a small lettern”);____________________________________________
printf(“This is an other charactern”);
return 0;
} 答案:c=getchar();
(c>='0'&&c
(c>='A'&&c
else 2.计算器程序。用户输入运算数和四则运算符,输出计算结果.#include int main(){ float a,b;____________________________________________;printf(“input expreion: a+(-,*,/)b n”);scanf(“%f%c%f”,&a,&c,&b);switch(c){ case '+': printf(“%fn”,a+b);___________ case_______ printf(“%fn”,a-b);break;case '*': printf(“%fn”,a*b);break;case '/': __________________________;break;default: printf(“input errorn”);} return 0;} 答案:char c;
break;
'-':
printf(“%fn”,a/b);
3.输入三个整数,输出最大数和最小数(注:max总是记录最大数,而min总是记录最小数).#include int main(){ int a,b,c,max,min;printf(“input three numbers: ”);scanf(“%d%d%d”,&a,&b,&c);if(a>b){ _______________________________________ _______________________________________ } else {max=b;min=a;} ____________________________________________ max=c;if(min>c)_____________________________________ printf(“max=%dnmin=%d”,max,min);return 0;} 答案:max=a;
min=b;17
if(max
min=c;
4.#include int main(){ int a;printf(“input integer number: ”);scanf(“%d”,&a);____________________ { case 1:printf(“Mondayn”);break;_____ printf(“Tuesdayn”);break;case 3:printf(“Wednesdayn”);break;case 4:printf(“Thursdayn”);______________ case 5:printf(“Fridayn”);break;case 6:printf(“Saturdayn”);break;case 7:printf(“Sundayn”);break;______ printf(“errorn”);} return 0;} 答案:switch(a)
case 2:
break;
default:
5.判断a>b、a
#include int main(){ int a,b;printf(“please input a,b: ”);scanf(“%d%d”,&a,&b);_____________________________________________ printf(“A=Bn”);_____________________________________________ printf(“A>Bn”);_____________________________________________ printf(“A
} 答案:if(a==b)
else if(a>b)
else if(a
else
6.根据以下函数关系,对输入的每个x值,计算出相应的y值。
#include int main(){ int x,c,m;float y;scanf(“%d”,&x);
________________________c=-1;else c=______________________;switch(c){ case –1 : y=0;break;case 0 : y=x;break;case 1 : y=10;break;case 2 : case 3 : y=-0.5*x+20;________________;default : y=-2;} if(c!=2)printf(“y=%f”,y);
__________________
printf(“error!”);
return 0;} 答案:if(x
c=x/10;
break;
else
7.找出x,y,z三个数中的最小数,并判断该数是否等于b。
#include
int main()
{
int x=4,y=5,z=8 ,b;
int u,v;
scanf(”%d“,&b);
u = x
v = u
if_____________________________________________printf(“最小数等于b!n”);
_____________________________________________printf(“最小数不等于b!n”);
return 0;
} 答案:x:y;
u:z;
(v==b)
else
8.输入两个运算数x,y和一个运算符号op,输出该运算结果的值,例如输入3+5↙得到结果8.#include
int main()
{
float x,y,r;
char op;
scanf(”%f,%c,%f“,&x,&op,&y);
switch(op)
{
case '+': r=x+y;_____________________________________________;
_____________________________________________ r=x-y;break;
case '*' :_____________________________________________;break;
_____________________________________________ r=x/y;break;
}
printf(”%f“,r);
return 0;} 答案:break;
case '-':
r=x*y;
case '/':
9.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。
#include int main(){ char c;printf(”input a character: “);c=getchar();_____________________________________________ printf(”This is a control charactern“);
if(c>='0'&&c
printf(”This is a digitn“);_____________________________________________
printf(”This is a capital lettern“);_____________________________________________
printf(”This is a small lettern“);_____________________________________________ 20 printf(”This is an other charactern“);return 0;} 答案:if(c
else if(c>='A'&&c
else if(c>='a'&&c
else
10.找出a,b,c三个数中的最大数,并判断该数是否等于x。
#include int main(){ int a=8,b=4,c=12,x;int u,v;scanf(“%d”,&x);
u = a
_____________________________________________printf(“最大数不等于x!n”);
return 0;
} 答案:b:a
c:u
(v==x)
else
四.编程一
1.求分段函数
答案:
1.#include #include void main(){float x,y;
printf(”input xn“);
scanf(”%f“,&x);
if(x
y=1;
else if(x
y=2*x;
else
y=sqrt(x);
printf(”x=%5.1fy=%8.3fn“,x,y);} 的值,输入x值,输出结果。2.从键盘上输入一个数x,计算并输出下列分段函数y的值。
答案:
#include #include void main(){ float x,y;printf(”input xn“);scanf(”%f“,&x);if(x>20||x>1&&x
{
printf(”无定义n“);
return;
} if(x
y=-x;else if(x
y=sin(x)+x;else if(x>=10&&x
y=x*x*x;printf(”x=%5.1fy=%8.3fn“,x,y);}
3.某运输公司运费计算时根据运输距离打折计算,折扣的计算方法如下:
(其中,discount表示折扣,S表示运输距离)。编写一完整程序,输入运输距离,统计运费并输出。每公里的运费通过符号常量定义为2.5。答案:
#include #include #define price 2.5 void main(){ float discount,cost,s;printf(”input distancen“);scanf(”%f“,&s);if(s
discount=0;
else if(s
discount=0.02;else if(s
discount=0.05;
4.编程输入一元二次方程的三个系数,求解一元二次方程的实根,无实根时不用求虚根,给出相应提示信息即可。答案:
/*功能:求一元二次方程的解。*/ #include #include main(){float a,b,c,disc,x1,x2;
scanf(”%f,%f,%f“, &a, &b, &c);
disc=b*b-4*a*c;
if(disc==0)
printf(”x1=x2=%7.2fn“,-b/(2*a));/*输出两个相等的实根*/
else if(disc>0)
{ x1=(-b+sqrt(disc))/(2*a);/*求出两个不相等的实根*/
x2=(-b-sqrt(disc))/(2*a);
printf(”x1=%7.2f,x2=%7.2fn“, x1, x2);
}
else
printf(”无实根n“);}
5.给定三条边,判断其是否能构成三角形,若能构成,判断其是等腰三角形、等边三角形、直角三角形还是普通三角形。答案:
5.#include void main(){ float a,b,c;printf(”输入三条边:n“);scanf(”%f%f%f“,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){ if(a==b&&b==c)
printf(”等边三角形n“);
else if(a==b||b==c||c==a)
printf(”等腰三角形n“);
else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a)
printf(”直角三角形n“);} else
printf(”不能构成三角形 n“);}
6.从键盘输入一个三角形的三条边,判断是否能组成三角形,若能组成三角形,则输出它的面积。答案:
#include 23 else
discount=0.08;
cost=s*(1-discount)*price;printf(”distance=%5.1f;cost=%5.1fn“,s,cost);} #include void main(){ float a, b, c, s, area;
printf(”输入三条边:n“);
scanf(”%f%f%f“,&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{ s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(”area=%7.2fn“,area);
else
printf(”不能构成三角形 n“);}
7.从键盘输入一个百分制的学生成绩,输出其对应的分数等级,其中90~100为A,80~89为B,70~79为C,60~69为D,60以下为E。答案:
#include void main(){
int score;
char d;
printf(”Input scoren“);
scanf(”%d“,&score);
if(score>100||score
{ printf(”data error!n“);
return;
} switch(score/10)
{ case 10:
case 9:d='A';break;
case 8:d='B';break;
case 7:d='C';break;
case 6:d='D';break;
default:d='E';break;}
printf(”score=%3ddengji=%cn“,score,d);}
8.编写一个程序,从键盘输入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a。答案:
#include void main(){
int a,b,c,t;
printf(”Input a,b,cn“);
scanf(”%d%d%d“,&a,&b,&c);24
t=a;
a=b;
b=c;
c=t;
printf(”a=%d;b=%d;c=%d;n“,a,b,c);}
9.输入一个字符,判断其是否为英文字母,若是英文字母,则将其大小写进行转换,若不是英文字母,则不变。答案:
#include void main(){
char c1,c2;
printf(”Input a
letter: “);
c1=getchar();
if(c1>='a'&&c1
c2=c1+'A'-'a';
else if(c1>='A'&&c1
c2=c1+'a'-'A';
else
c2=c1;
printf(”原字符:%c转换后为:%cn“,c1,c2);}
10.给定三个整数型x,y,z,输出三个数中的最大值和最小值。答案:
#include void main(){
int a,b,c,max,min;
printf(”Input a,b,cn“);
scanf(”%d%d%d“,&a,&b,&c);
max=a;min=a;
if(b>max)
max=b;
else if(b
if(c>max)
max=c;
else if(c
printf(”a=%d;b=%d;c=%d;n“,a,b,c);
printf(”max=%d;min=%dn“,max,min);} 25 第五章 循环结构
一.填空
1.C语言中提供了三种循环控制语句,它们是:()、do-while语句、()。
2.break语句在C程序中只能出现在两种场合:一是用于()语句中,二是用于()语句中。3.以下程序段中的语句printf(“***”)要执行5次,请在空白处填入合适的数。for(i=1;i );i=i+2) printf(“***”); 4.定义int k=10;执行语句 while(k 后,k的值为()。5.在循环控制结构中break语句的作用是()。6.在循环控制结构中continue语句的作用是:()。 7.若已知int a[5][5];并在运行过程中a数组已经赋值;要打印次对角线元素,在空白处填入合适的值/表达式; for(i = 0;i for(j =();j >=0;j--) printf(”%5d“, a[i][j]);8.执行完语句sum = 0;for(i = 0;i )。 9.在使用while 语句中需要注意,为了防止“死循环”的发生,在循环体中一定要有()语句。10.do-while 语句中,判断循环条件在(),执行循环体在()。(填“先”“后”) 解答: 1.while for 2.循环,switch 3.9 4.20 5.终止并跳出最近一层的结构 6.结束本次循环,进行是否进行下一次循环的判断 7.4-i 8.5 9.使循环逐渐趋向于结束 10.后 先 二.阅读程序写结果 1.#include void main(){ int number , digit; number = 1234; while(number!= 0) { digit = number%10; printf(”%d“ , digit); number = number / 10; } 26 } 答案:4321 2.#include #define N 5 void main(){ int i; for(i=1;i printf(”%dn“,i*i);} 答案:1 3.#include void main(){ int i,s,x; s=0; x=15; for(i=1;i if(x%i==0) printf(”i=%d,s=%dn“,i,s);} 答案:i=6,s=9 4.#include void main(){ int counter=1; while(counter { printf(”%d n“, counter); counter++; } } 答案:1 5.#include int main(){ int i,sum,m,a; sum=0; m=5; s= s + i; for(i=0;i { scanf(”%d“,&a); if(a>m) sum+=a; } printf(”sum=%dn“,sum); return 0; } 输入:2 10 8 3 答案:sum=18 6.#include int main(){ int i,j,k; for(i=1;i { for(j=1;j printf(” “); for(k=1;k printf(”*“); printf(”n“); } return 0; } 答案:* ** *** **** 7.#include int main(){ int i,j; i=1; while(i { for(j=1;j printf(”%c“,'#'); printf(”n“); i++; } return 0; } 答案:## #### ###### # 8.#include int main(){ int i=10,m=0,n=0; do { if(i%2!=0) m=m+i; else n=n+i; i--; }while(i>=0); printf(”m=%d,n=%dn“,m,n); return 0; } 答案:m=25,n=30 9.#include void main(){ int sum=0,n; scanf(”%d“,&n); while(n { sum+=n; n++; } printf(”sum=%d“,sum);} 输入:1 答案:sum=15 10.#include void main(){ int i, j; for(i=2;i>=0;i--) { for(j=1;j printf(”*“); for(j=0;j printf(”!“); printf(”n“); } } 答案:**! *! !! 11.#include void main(){ int a,b; for(a=1,b=1;a { if(b>20)break; if(b%4==1) { b=b+4; continue; } b=b-5; } printf(”a=%dn“,a);} 答案:a=6 12.#include void main(){ char k; int i; for(i=1;i { scanf(”%c“,&k); switch(k) { case '0': printf(”anothern“); case '1': printf(”numbern“); } } } 输入:01 答案:another number number 13.#include int main(){ int i, s = 0; for(i = 1;i { s += i * i; if(s > 10)break; } printf(”i=%d, s=%dn“, i, s); return 0; } 答案:i=3, s=14 14.#include void main(){ char ch; while((ch=getchar())!='n') { if(ch>='A'&&ch ch=ch+32; else if(ch>='a'&&ch ch=ch-32; printf(”%c“,ch); } } 输入:ABCdef 答案:abcDEF 15.#include int main(){ int a, b; for(a = 1, b = 1;a { if(b >= 9)break; if(b % 3 == 1) { b += 3; continue; } b-= 5; } printf(”%d,%dn“, a, b); return 0; } 答案:4,10 16.#include int main(){ int i = 0,j = 0; while(i while(j++ printf(”i=%d,j=%dn“,i,j); return 0; } 答案:i=10,j=11 17.#include void main(){ int i,j,t; for(i=1,j=10;i t=i+j; t++; printf(”%d,%d“,j,t);} 答案:8,12 18.#include void main()31 { int i=10,j; do { j = i%2; printf(”%d“,j); i--; } while(i> 4);} 答案:010101 19.#include void main(){ int i=7,j; while(i> 2) { j = i%2; printf(”%d“,j); i--; } printf(”%d“,i);} 答案:101012 20.#include void main(){ int i,j,t=0; for(i=3;i>0;i--) for(j=0;j t+=j; printf(”t=%d“,t);} 答案: t=18 三.补充程序 1.输出100以内能被3整除的数 #include int main(){ _____________________________________________; for(_________________________;n { if(n%3!=0)________________________ printf(”%d “,n); } return 0; } 32 答案:int n n=1; n++ continue; 2.输出100以内的素数。素数是只能被1 和本身整除的数。为减少循环次数,只需对数n用2 ~ 去除来判断该数是否素数。 #include ________________________ int main(){ int n,i,k; for(n=2;n { k=sqrt(n); for(i=2;i if(n%i==0)________________________ if(i>k)printf(”t%2d“,n); } return 0; } 答案:#include n++ i++ break; 3.输出200以内能被5整除的数 #include int main(){ ________________________ for(________________________;n { if(n%5!=0)________________________ printf(”%d “,n); } return 0; } 答案:int n; n=1 n++ continue; 4.求输入的十个整数中正数的个数及其平均值 #include int main()33 { int i,num=0,a; float sum=0; for(i=0;________________________;________________________) { scanf(”%d“,&a); if(a>=0) { ________________________; ________________________; } } printf(”%d plus integer's sum: %6.0fn“,num,sum); printf(”Mean value:%6.2fn“,sum/num); return 0; } 答案:i i++ num++ sum+=a 5.求输入的十个整数中负数的个数及其平均值 #include int main(){ int i,num,a; float sum=0;________________________; ________________________; while(i { scanf(”%d“,&a); if(a { ________________________; num++; } ________________________; } printf(”%d plus integer's sum: %6.0fn“,num,sum); printf(”Mean value:%6.2fn“,sum/num); return 0; } 答案:i=0; num=0; sum+=a; i++; 6.分解并打印出X的各个素数因子.如18=1*2*3*3.#include int main(){ int i,x; scanf(“%d”,&x); printf(“%d=1”,x); for(________________________;i { while________________________ { printf(“*%d”,i); ________________________; } } return 0; } 答案:i=1 i++ (x%i==0) x=x/i; 7.输出九九乘法表.#include int main(){ int i,j; for(i=1;________________________;________________________) { for(________________________;________________________;j++) printf(”%2d*%2d=%2d“, j, i ,i*j); printf(”nn“); } return 0; } 答案:i i++ j=1 j 8.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include int main(){ int n,t,number=20;float a=2,b=1, ________________________; for(n=1;________________________;________________________) { s=s+a/b; t=a; a=a+b; ________________________; } printf(”sum is %9.6fn“,s); return 0;35 } 答案:s=0 n n++ b=t; 9.求1+2!+3!+...+20!的和.#include int main(){ float n, ________________________,t=1; for(n=1;________________________;________________________;) { t*=n; ________________________; } printf(”1+2!+3!...+20!=%en“,s); return 0; } 答案:s=0 n n++ s+=t; 10.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include int main(){ int n,t,number=20; float a=2, _______________________,s=0; for(________________________;________________________;n++) { s=s+a/b; t=a; ________________________; b=t; } printf(”sum is %9.6fn“,s); return 0; } 答案:b=1 n=1 n a=a+b 四.编程一 1.试编写程序求S=1+1*2+1*2*3+1*2*3*4+…+1*2*3*…*10的值。答案: #include void main(){ int i; float s=0,term=1; for(i=1;i { s=s+term; term=term*(i+1); } printf(”sum%10.1fn“,s);} 2.编程利用以下公式求π的值。(取n=10000) 答案: #include void main(){ int i; float e=1,term=1; for(i=1;i { term=term*i; e=e+1./term; } printf(”e=%10.6fn“,e);} 3.计算s=1+1/2+1/3+…+1/n的值,其中n的值由键盘输入。答案: #include void main(){ int i,n; float s=0; printf(”input nn“); scanf(”%d“,&n); for(i=1;i s=s+1./i; printf(”s=%10.6fn“,s);} 4.编写程序,在屏幕上输出下面的图案(要求用for循环实现)。 * * * * * * * * * * * * * * * * * * * * * * * * * 37 答案: #include void main(){ int i,j,k; for(i=1;i { for(k=1;k printf(” “); for(j=1;j printf(”* “); printf(”n“); } } 5.编写程序,输入整数n,并根据n的值打印图案(要求用for循环实现)。n为中间一行的*号个数。例如,当n=4时,图案为 * * * * * * * * * * * * * * * * 答案: #include void main(){ int i,j,n; printf(”input nn“); scanf(”%d“,&n); for(i=1;i { for(j=1;j printf(”* “); printf(”n“); } for(i=n-1;i>=1;i--) { for(j=1;j printf(”* “); printf(”n“); } } 6.从键盘输入若干个学生的成绩,-1作为结束标志,求出平均成绩及最高成绩并输出其结果。答案: #include void main(){ int i,score,sum=0,max;38 i=0; printf(”please input score:n“); scanf(”%d“,&score); max=score; while(score!=-1) { sum=sum+score; if(score>max)max=score; i++; scanf(”%d“,&score); } printf(”max=%dn“,max); printf(”average=%fn“,(float)sum/i);} 7.编写一程序,从键盘输入n个数,输出其最大数和最小数,并输出它们在序列中的序号。答案: #include void main(){ int i, n,x,max,min,maxi=1,mini=1; printf(”please input n:n“); scanf(”%d“,&n); printf(”please input x:n“); scanf(”%d“,&x); max=x;min=x; for(i=2;i { scanf(”%d“,&x); if(x>max){ max=x;maxi=i;} if(x } printf(”max=%d;maxi=%dn“,max,maxi); printf(”min=%d;mini=%dn“,min,mini);} 8.编程实现:输出由0、1、2、3组成的所有的各位数字均不相同的三位数,输出时每8个数占一行。答案: #include void main(){ int i,j,k,n=0; for(i=1;i for(j=0;j for(k=1;k if(i!=j&&i!=k&&j!=k) { n++; printf(”%5d“,i*100+j*10+k); if(n%8==0) printf(”n“);39 } } 9.输入一行字符,回车作为结束,分别统计出其中英文字母、空格、数字和其它字符的个数。答案: #include void main(){ int shuzi=0,zimu=0,kge=0,qita=0; char ch; ch=getchar(); while(ch!='n') { if(ch==' ') kge++; else if(ch>='0'&&ch shuzi++; else if(ch>='a'&&ch='A'&&ch else qita++; ch=getchar(); } printf(”数字=%d;字母=%d;空格=%d;其它%d“,shuzi,zimu,kge,qita);} 10.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。答案: #include void main(){ int Sn=0,a,n,i=0,t; printf(”Sn=a+aa+aaa+…+aaa…anplease input a,n:“); scanf(”%d,%d“,&a,&n);t=a; while(i { Sn=Sn+t; t=10*t+a; i++; } printf(”%ldn“,Sn);} 第六章 函数 一.填空 1.函数中的形参和调用时的实参都是数组名时,传递方式为______________;形参实参都是变量时,传递方式为______________。 2.一个函数在它的函数体内调用它自身称为______________调用。3.函数体包括函数的说明部分和______________。 4.定义在一个程序块(函数)中的变量,称为______________变量,它的作用范围只是定义它的程序块。5.在函数原型声明中,必须声明函数参数的类型,但可以省略______________。6.C语言源程序中主函数名由系统规定为______________,程序员是不能改变的。 7.已知函数首部定义为:int stat(int a , float *p)则此函数的两个参数类型分别是_______、______________。8.在c语言中,进行函数调用是,形参和实参之间有严格的规定,主要有三种要求分别是:______________相等,______________一致,并______________对应。 9.若自定义的函数要求返回一个值,则应在该函数中有一条______________语句。 10.若函数头部定义为 int foo(), 则该函数中return 语句返回的数据类型是______________。11.若函数头部定义为 struct stu * foo(), 则该函数中return 语句返回的数据类型是______________。12.若函数头部定义为 int * foo(), 则该函数中return 语句返回的数据类型是______________。13.若函数头部定义为 float foo(), 则该函数中return 语句返回的数据类型是______________。14.若函数头部定义为 char foo(), 则该函数中return 语句返回的数据类型______________。15.若函数头部定义为 char * foo(), 则该函数中return 语句返回的数据类型是______________。16.若函数头部定义为 void foo(int a[]),在主程序中有如下语句: int a[5] = {1};… foo(a[5]);这句函数调用的语句是 ______________。(填“正确”“错误”) 17.若函数头部定义为 void foo(int *a),在主程序中有如下语句: int array[5] = {1};… foo(array);这样的语句是______________。(填“正确”“错误”) 18.若函数头部定位为 void foo(char * str), 在主程序中有如下语句:char array[5] = ”good“;… foo(array);这样的语句是______________。(填“正确”“错误”) 19.若一个函数中的主要语句是这样的,int a = 3;if(a > 3)return-1;return 0;那么这个函数的返回值是______________。 20.若函数头部定义为void foo(int * a), 主程序中定义 int array[10], 现在要将array 数据传进函数进行处理,正确函数调用语句是____________________________。 解答: 1.地址传递 值传递 2.递归 6.main 7.整型 浮点型指针 11.指向结构体的指针 12.指向整型的指针 16.错误 17.正确 3.执行部分 4.局部 5.形参名 8.个数 类型 一一 9.return 10.int 或整型 13.浮点型或float 14.字符型或char 15.指向字符的指针 18.正确 19.0 20.foo(array)二.阅读程序写结果 1.#include long fun(int x,int n);int main(){ int x=3,n=3; long p; p=fun(x,n); printf(”p=%ldn“,p); return 0; } long fun(int x,int n){ int i; long p=1; for(i=0;i p*=x; return p;} 答案:p=27 2.#include int isDigit(char ch);int main(){ char ch; while((ch=getchar())!='n') { if(isDigit(ch)) putchar(ch); } printf(”n“); return 0; } int isDigit(char ch){ if(ch>='0' && ch return 1; else return 0; } 输入:Abc1d23eF45g 42 答案:12345 3.#include void odddivisor(int n);int main(){ int n; scanf(”%d“,&n);odddivisor(n);return 0; } void odddivisor(int n){ int i; for(i=3;i if(n%i==0) printf(”n“);} 输入:15 答案:3 4.#include void print();int a=5; int main(){ int a=1,b=2; a=a+b; print(); printf(”%d %dn“,a,b); return 0; } void print(){ int b=3; printf(”%d %dn“,a,b);} 答案:5 32 5.#include int fun1(int x);void fun2(int x);int main(){ int x=1; x=fun1(x);printf(”%dn“,x);return 0; } 43 printf(”%5d“,i); int fun1(int x){ x++;fun2(x);return x;} void fun2(int x){ x++;} 答案:2 6.#include int fun1(int a,int b,int c);int main(){ int a=11,b=21,c=31; fun1(a,b,c); printf(”%d %d %dn“,a,b,c); return 0; } int fun1(int a,int b,int c){ a=a+10; b=b+10; c=c+10; return c;} 答案:11 21 31 7.#include void fun(int x);int main(){ fun(7); printf(”n“); return 0; } void fun(int x){ if(x/2>1) fun(x/2); printf(”%5d“,x); } 答案:3 8.#include void fun(int a[]);int main(){ int i,a[5]={1,2,3}; fun(a); for(i=0;i printf(”%5d“,a[i]); printf(”n“); return 0; } void fun(int a[]){ int i; for(i=0;i a[i]+=5; } 答案:6 9.#include void fun(int k);void main(){ int w = 5; fun(w); printf(”n“);} void fun(int k){ if(k>0) fun(k-1); printf(”%d“ , k);} 答案:012345 10.#include void f1(void);int a=1; void main(){ int a=2; f1(); { int a=3; printf(”a2=%dn“,a); } printf(”a3=%dn“,a); } void f1(void){ printf(”a1=%dn“,a);} 答案:a1=1 a2=3 a3=2 11.#include void f(int a, int b, int *c){ a=20;b=10; *c=a+b; } void main(){ int a=10,b=20,c=30,d=40; f(a,b,&c); printf(”%d,%d,%dn“,a,b,c);} 答案:10,20,30 12.#include void swap(int a,int b);void main(){ int a=2,b=3; printf(”a=%d,b=%dn“,a,b); swap(a,b); printf(”a=%d,b=%dn“,a,b);} void swap(int a,int b){ int c; c=a; a=b; b=c;} 答案:a=2,b=3 a=2,b=3 13.#include void fun(int a,int b,int c);void main(){ int x=10,y=20,z=30; fun(x,y,z); printf(”%d,%d,%dn“,x,y,z);} void fun(int a,int b,int c){ a=456; b=567; c=678; } 答案:10,20,30 14.#include float f(int n){ int i;float s=0.0; for(i=1;i s=s+(float)1.0/i; return s;46 } void main(){ int i;float a=0.0; for(i=1;i a=a+f(i); printf(”a=%.4fn“, a);} 答案:a=1.0000 15.#include int f(int a);void main(){ int a=2,i; for(i=0;i printf(”%d“,f(i));} int f(int a){ int b=0,c=3; b++; c++; return(a+b+c);} 答案:567 16.#include int fun();void main(){ int i,x; for(i=0;i x=fun(); printf(”%dn“,x); } int fun(){ int x=3; x++; return x;} 答案:4 17.#include float add(float x,float y); void main(){ float a,b,c; a=1.0; b=2.0; c=add(a,b); printf(”%fn“,c);} float add(float x,float y){ float z; z=x+y; return(z);} 答案:3.000000 18.#include void fun(int x, int cp, int dp) { cp=x++; dp=++x;} void main(void){ int a,c=80, d=-20; a=30; fun(a,c,d); printf(”%d,%dn“, c,d);} 答案:80,-20 19.#include int f(int a,int b);void main(){ int i=2,p; p=f(i,i+1); printf(”%dn“,p);} int f(int a,int b){ int c; if(a>b)c=1; else if(a==b) c=0; else c=-1; return(c);} 答案:-1 20.#include int fun(int n){ if(n= =1)return 1; else return fun(n-1)+3; } void main()48 { int i,j=0; for(i=1;i j=j+fun(i); printf(”j=%dn“,j);} 答案:j=12 21.#include void f(int x,int y){ int t; if(x {t=x;x=y;y=t;} } void main(){ int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf(”%d,%d,%d“,a,b,c);} 答案:4,3,5 22.#include int age(int n){ int c; if(n==1)c=10; else c=age(n-1)+2; return(c);} void main(){ printf(”%d“,age(5));} 答案:18 23.#include void hello_world(void){ printf(”Hello, world!n“);} void three_hellos(void){ int counter; for(counter =1;counter hello_world();} void main(void){ three_hellos();49 } 答案:Hello, world! Hello, world! Hello, world! 24.#include int f(int a,int b); void main(){ int x,i=1,k=3; x=f(i,k); printf(”x=%d n“,x);} int f(int a,int b){ int M=0; while(b!=0) { M=M+a; b--; } return M;} 答案:x=3; 25.#include f(int b[ ],int m,int n){ int i,s = 0; for(i = m;i s += b[i]; return s;} int main(){ int x,a[ ] = {1,2,3,4,5,6,7,8,9}, *p = a; x = f(p,3,7); printf(”x=%dn“,x); return 0; } 答案:x=22 26.#include void fun(int i, int j){int x = 7; printf(”i = %d;j = %d;x = %dn", i, j, x);} int main(){int i = 2, x = 5, j = 7; fun(j, 6);50 1.Problem A: Hello world! Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。Input 无Output 请输出: Hello Da_min, Hello...... 1032]《C语言程序设计》选择题 [单选题]12.关于C语言程序描述正确的是()A:每个函数必须要有return语句 B:主函数必须位于程序的开头 C:程序中每行只能写一条语句 D:一个程序中只...... 《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业...... 信息工程学院学生会科技部关于举办信息工程学院C语言程序设计大赛的策划书一、活动背景:随着计算机技术的快速发展,计算机程序语言的多样化,C语言已经使用的越来越广泛,C语言作...... 汇编语言程序设计练习题一、单项选择题:在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.CPU要访问的某一存......