C语言程序设计实训教程习题和实验解答.docx

上传人:b****6 文档编号:3922990 上传时间:2022-11-26 格式:DOCX 页数:96 大小:68.62KB
下载 相关 举报
C语言程序设计实训教程习题和实验解答.docx_第1页
第1页 / 共96页
C语言程序设计实训教程习题和实验解答.docx_第2页
第2页 / 共96页
C语言程序设计实训教程习题和实验解答.docx_第3页
第3页 / 共96页
C语言程序设计实训教程习题和实验解答.docx_第4页
第4页 / 共96页
C语言程序设计实训教程习题和实验解答.docx_第5页
第5页 / 共96页
点击查看更多>>
下载资源
资源描述

C语言程序设计实训教程习题和实验解答.docx

《C语言程序设计实训教程习题和实验解答.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实训教程习题和实验解答.docx(96页珍藏版)》请在冰豆网上搜索。

C语言程序设计实训教程习题和实验解答.docx

C语言程序设计实训教程习题和实验解答

C语言程序设计实训教程习题和实验解答

C语言概述

1.【习题解答】

1结构化程序有三大基本结构:

顺序、分支和循环.

2..算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。

或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。

有穷性:

一个算法应包含有限的操作步骤而不能是无限的。

确定性:

算法中每一个步骤应当是确定的,而不能应当是含糊的,有零个或多个输入输出,有一个或多个输出。

有效性:

算法中每一个步骤应当能有效地执行,并得到确定的结果。

对于程序设计人员,必须会设计算法,并根据算法写出程序。

可以用自然语言、流程图、伪代码和计算机语言表示算法。

3.C语言的主要特点有:

语言简洁、紧凑,使用方便、灵活。

ANSIC一共只有32个关键字;控制语句丰富,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分;运算符丰富,共有34种;数据结构类型丰富;具有结构化的控制语句;语法限制不太严格,程序设计自由度大;C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。

因此有人把它称为中级语言;生成目标代码质量高,程序执行效率高;与汇编语言相比,用C语言写的程序可移植性好。

4.用传统流程图表达如下:

数据类型与表达式

1.【习题解答】

一、选择题

1.C2.B3.A4.B5.A6.B7.D8.B9.D10.C

二、填空题

1.整型、实型、字符型、枚举类型

2.3.000000

3.逗号运算符

4.三,自右向左

5.1,0

6.32767

三、编程题

1.已知球的半径为1.5cm,计算球的体积。

#include

voidmain()

{

floatr=1.5,volume;

volume=4.0/3*r*r*r;

printf(“%f\n”,volume);

}

2.输入两个数a和b,求a除以b的商和余数?

#include

voidmain()

{

inta,b,c,d;

scanf(“%d,%d”,&a,&b);

c=a/b;

d=a%b;

printf(“%d,%d”,c,d);

}

3.输入三个学生的成绩,求这三个学生的总成绩和平均成绩。

#include

voidmain()

{

inta,b,c,sum;

floataverage;

printf(“pleaseinputstudents’score:

”);

scanf(“%d,%d,%d”,&a,&b,&c);

sum=a+b+c;

average=sum/3.0;

printf(“sum=%d,average=%f\n”,sum,average);

}

2.【实验解答】

1.c=10

2.①程序功能为输入两个数,求两数的差

②c=10

3.#include

voidmain()

{

inta,b ,c;

a=b=5 ;

c=a+b ;

printf(“a+b=%d”,c) ;

}

4.运行结果i=8,j=10,m=9,n=10,u=9,v=-10(回车)

5.x=16,y=24,z=24

6.①10068

②10068

dD

③10068

dD

④120112

xp

⑤出错

⑥304321

0A

7.编写一个C程序,输入a,b,c三个整数,求这三个数之和。

具体要求:

1)在TurboC环境或其他编译环境下编辑该程序,然后进行编译连接。

2)运行该程序,检查你所编写的程序是否正确。

#include

voidmain()

{

inta,b,c,sum;

scanf(“%d,%d,%d”,&a,&b,&c);

sum=a+b+c;

printf(“sumis:

%d\n”,sum);

}

顺序结构程序设计

1.【习题解答】

一、选择题

1.B2.C3.A4.A5.D6.B

二、填空题

1.y=2

2.□□6□□6□6.00□6.00(□表示空格)

3.k=11,k8=13,k16=b。

4.!

□□□!

□□□□□□□□□□ahpu

ahpu□□□□□□□□□□□

5.5,4,c=3

6.i=56,j=789.000000,x=12345.000000,y=a,c=72

三、编程题

1.已知x=3.2,y=7,z=2,计算y/3*x-2的值。

#include

voidmain()

{

floatx=3.2;

inty=7,z=2;

printf(“%f”,y/3*x-2);

}

2.输入一个华氏温度,要求输出摄氏温度(结果保留2位)。

公式为c=5/9*(f-32)。

#include

voidmain()

{

floatf,c;

scanf(“%f”,&f);

c=5.0/9*(f-32);

printf(“c=%.2f”,c);

}

3.从键盘输入一个小写字母,用大写形式输出该字母。

#include

voidmain()

{

chara,b;

printf(“pleaseinputalittleletter:

”);

scanf("%c",&a);

b=a-32;

printf("%c",b);

}

4.把16进制数12a以10进制形式输出。

#include

voidmain()

{

inta=0x12a;

printf("%d",a);

}

5.输入两个整数,将其值交换。

#include

voidmain()

{

inta,b,t;

scanf("a=%d,b=%d",&a,&b);

t=a;

a=b;

b=t;

printf("a=%d,b=%d",a,b);

}

2.【实验解答】

实验名称顺序结构程序设计

1.②结果为0,因为a,b被定义为实型,而却以整型输入,类型不匹配。

2.错误之处:

s=3/(a+b)*(a+b);应改为:

s=3.0/((a+b)*(a+b));

3.运行结果-1,177777,ffff,65535

b=-2

4.编程并上机调试运行

1)设圆半径为r=1.5,求圆周长、面积。

要求用scanf函数输入数据,输出时取小数点后两位。

#include

voidmain()

{

floatr,l,s,v;

scanf("%f",&r);

l=2*3.14*r;

s=3.14*r*r;

printf("l=%.2f,s=%.2f,v=%.2f",l,s);

}

2)输入一个3位十进制整数,分别输出百位、十位以及个位上的数。

#include

voidmain()

{

inta,b,c,d;

scanf("%d",&a);

b=a/100;

c=a/10%10;

d=a%10;

printf("%d%d%d",b,c,d);

}

3)从键盘输入一个带2位的实数,将其整数部分和小数部分分离后输出。

例如:

输入321.54,输出321.54=321+0.54。

#include

voidmain()

{

inta;

floatb,c;

scanf("%f",&b);

a=(int)b;

c=b-a;

printf("%.2f=%d+%.2f",b,a,c);

}

4)用getchar函数读入两个字符,然后分别用putchar和printf函数输出这两字符。

#include

voidmain()

{

chara,b;

a=getchar();

b=getchar();

putchar(a);

putchar(b);

printf("\n%c%c",a,b);

}

选择结构程序设计

1.【习题解答】

一、选择题

1.A。

2.D。

3.A。

4.B。

5.C。

6.A。

二、填空题

1.(x>20&&x<30)||x<-100。

2.1,0,0。

3.585858。

4.20,0。

5.2。

6.a=3,b=2。

三、编程题

1.要求输入三个数,输出其中最大值。

#include

voidmain()

{

inta,b,c,max;

scanf("%d%d%d",&a,&b,&c);

max=a;

if(max

if(max

printf("maxis:

%d\n",max);

}

2.由键盘输入3个数,若输入的这3个数可以构成三角形,则计算以这3个数为边长的三角形周长;如果不能,则输出提示错误信息。

#include

voidmain()

{

floata,b,c,l;

printf("pleaseinputa,b,c\n");

scanf("%f,%f,%f",&a,&b,&c);

if((a+b)>c&&(a+c)>b&&(b+c)>a)

{

l=a+b+c;

printf("l=%f\n",l);

}

else

printf("Itisnottriangle!

\n");

}

3.从键盘上输入一个整数判断其奇偶以及正负。

#include"stdio.h"

voidmain()

{

inta;

scanf("%d",&a);

if(a>0)

{

if(a%2==0)printf("ItisPLUSevennumber");

else

printf("ItisPLUSoddnumber");

}

elseif(a<0)

{

if(a%2==0)printf("ItisMINUSevennumber");

else

printf("ItisMINUSoddnumber");

}

else

printf("ItisZERO");

}

4.判断方程ax2+bx+c=0的根的个数。

#include"stdio.h"

voidmain()

{

inta,b,c;

scanf("%d%d%d",&a,&b,&c);

if(b*b-4*a*c>0)printf("2");

elseif(b*b-4*a*c==0)printf("1");

elseprintf("0");

}

5.从键盘输入表示年份的整数,判断是否为闰年。

#include"stdio.h"

voidmain()

{

intyear;

scanf("%d",&year);

if((year%400==0)||(year%4==0&&year%100!

=0))

printf("Itisrunnian");

else

printf("Itisnotrunnian");

}

2.【实验解答】

实验名称选择结构程序设计

1.if(‘0’<=c&&c<=’9’)

if((‘A’<=c&&c<=’Z’)||(’a’<=c&&c<=’z’))

else

2.编程并上机调试运行

1)给出一个不多于4位的正整数,求它是几位数?

#include

voidmain()

{

intn;

printf("Inputanum(0

scanf("%d",&n);

if(n<10)printf("1\n");

else

if(n<100)printf("2\n");

else

if(n<1000)printf("3\n");

else

printf("4\n");

}

2)给出一个百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。

90分及以上为’A’,80~89为’B’,70~79为’C’,60~69为’D’,60以下为’E’。

用switch语句来实现。

#include

voidmain()

{

intscore;

scanf("%d",&score);

if(score<0||score>100)

printf("Error!

");

else

{

score=score/10;

switch(score)

{

case10:

case9:

printf("A\n");break;

case8:

printf("B\n");break;

case7:

printf("C\n");break;

case6:

printf("D\n");break;

default:

printf("E\n");

}

}

}

3)输入四个数,要求按从大到小顺序输出。

#include

voidmain()

{

inta,b,c,d,t;

scanf("%d%d%d%d",&a,&b,&c,&d);

if(a

if(a

if(a

if(b

if(b

if(c

printf("%d,%d,%d,%d\n",a,b,c,d);

}

4)输入3个整数,将最大数与最小数输出。

#include

voidmain()

{

inta,b,c,t;

intmax,min;

scanf("%d%d%d",&a,&b,&c);

max=min=a;

if(max

max=b;

else

min=b;

if(max

else

min=c;

printf("max=%d,min=%d",max,min);

}

5)输入一个字符,如果是数字字符,把它转换成相对应的数字并输出;如果不是,则以带符号的十进制整数形式输出。

#include"stdio.h"

voidmain()

{

chara;

scanf("%c",&a);

if(a>='0'&&a<='9')

{

a=a-'0';

printf("%d",a);

}

else

printf("%d",a);

}

循环结构程序设计

1.【习题解答】

一、选择题

1.A2.A3.C4.B5.C6.C

二、填空题

1.18或19

2.0

3.8921

4.3,4

5.35

6.4

三、编程题

1.设计程序计算并输出1+

+

+……+

#include

voidmain()

{

inti;

floats=0;

for(i=1;i<=99;i+=2)

s=s+1.0/i;

printf(“s=%f\n”,s);

}

2.编写程序输出下面图形

1

21

321

4321

54321

#include

voidmain()

{

inti,j;

for(j=5;j>=1;j--)

{

for(i=1;i<=j-1;i++)

printf(““);

for(;i<=5;i++)

printf(“%d”,5-i+1);

printf(“\n”);

}

}

3.一球从100m高度自由落下,每次落地后又反跳原高度的一半,再下落。

求在第10次落地时,共经多少米?

第10次反弹高度?

#include

voidmain()

{

floats=100,m=100,i;

for(i=2;i<=10;i++)

{

m=m/2;

s=s+m*2;

}

printf(“No.10drop’salldistanceis=%f\n”,s);

printf(“No.10up’sdistanceis=%f”,m/2);

}

4.输入两个整数求其最大公约数。

#include

voidmain()

{

intm,n,i,t;

scanf("%d%d",&m,&n);

if(m

{

t=n;

n=m;

m=t;

}

i=n;

while((m%i!

=0)||(n%i!

=0))

i=i-1;

printf("%d\n",i);

}

5.输入一个正整数,将其逆序输出。

#include"stdio.h"

voidmain()

{intm,n;

scanf("%d",&n);

while(n!

=0)

{

m=n%10;

n=n/10;

printf("%d",m);

}

}

2.【实验解答】

实验名称循环结构程序设计

1.1)%1ds=0i+=2

2)s=0ldi<=2*n-1i+=2

3)s=0,n,i=1i+=2while(i<=2*n-1);

2.编程并上机调试运行

1)编程求1!

+2!

+3!

+…+10!

#include

voidmain()

{

longs=1,i,t=1;

for(i=2;i<=10;i++)

{

t=t*i;

s=s+t;

}

printf("%ld",s);

}

2)打印以下图案

#include

voidmain()

{

inti,j;

for(i=1;i<=4;i++)

{

for(j=1;j<4+i;j++)

{if(i+j<5)

printf("");

else

printf("*");

}

printf("\n");

}

for(i=1;i<=3;i++)

{

for(j=1;j<=7-i;j++)

{if(i>=j)

printf("");

else

printf("*");

}

printf("\n");

}

}

3)猴子吃桃。

猴子第一天摘若干桃子,当即吃了一半,又加一个。

第二天吃了剩下桃子一半又多一个。

以后每天早上都吃前一天剩下的一半多一个。

第十天,只剩一个。

问第一天共摘多少个桃子。

#include

voidmain()

{

ints=1,i;

for(i=2;i<=10;i++)

s=(s+1)*2;

printf("%d",s);

}

4)打印九九乘法表

#include

voidmain()

{

inti,j;

for(i=1;i<=9;i++)

for(j=1;j<=i;j++)

{

printf("%d*%d=%d",i,j,i*j);

if(i==j)

printf("\n");

}

}

5)输出10-100之间的全部素数。

#include

voidmain()

{

inti,j;

for(i=10;i<=100;i++)

{

for(j=2;j<=i;j++)

{

if(i%j==0)

{

if(i==j)

printf("%d",i);

break;

}

}

}

}

实验名称综合运用三种基本结构进行程序设计

1.百马百担。

100匹马,驮100担,大马3担,中马2担,2个小马驮1担。

问大、中、小马各多少?

#include

voidmain()

{

inti,j,k;

for(i=0;i<=33;i++)

for(j=0;j<=50;j++)

{

k=100-i-j;

if(3*i+2*j+k/2.0==100)

printf(“Da=%d,Zhong=%d,Xiao=%d\n”,i,j,k);

}

}

2.输入一行字符,分别统计其中英文字母、空格、数字和其它字符个数。

#include

voidmain()

{

charc;

intletter=0,space=0,digtal=0,other=0;

while((c=getchar())!

=‘\n’)

{

if((c>=‘A’&&c<=‘Z’)||(c>=‘a’&&c<=‘z’))

letter++;

elseif(c==‘‘)

space++;

elseif(c>=‘0’&&c<=‘9’)

digtal++;

else

other++;

}

printf(“letter=%d,space=%d,digtal=%d,other=%d”,letter,space,digtal,other);

}

3.打印输出”水仙花数”。

”水仙花数”是指一个3位,其各位数字的立方和等于该数本身。

例如:

153。

#include

voidmain()

{

inti,j,k;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

{

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf(“%d\n”,i*100+j*10+k);

}

}

4.将一个正整数分解成质因数的乘积。

例如:

输入90,打印90=2*3*3*5。

#include

voidmain()

{

intn,i=2;

scanf(“%d”,&n);

printf(“%d=“,n);

while(n>1)

{

if(n%i==0)

{

printf(“%d*”,i);

n=n/i;

}

elsei++;

}

printf(“\b“);

}

5.利用循环语句编写程序:

对一个正整数,将各位数字反序后的数组成一个整数输出。

例如:

输入12345,输出54321。

#include

voidmain()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1