C语言程序设计实验及习题14.docx

上传人:b****4 文档编号:26821897 上传时间:2023-06-23 格式:DOCX 页数:30 大小:180.91KB
下载 相关 举报
C语言程序设计实验及习题14.docx_第1页
第1页 / 共30页
C语言程序设计实验及习题14.docx_第2页
第2页 / 共30页
C语言程序设计实验及习题14.docx_第3页
第3页 / 共30页
C语言程序设计实验及习题14.docx_第4页
第4页 / 共30页
C语言程序设计实验及习题14.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C语言程序设计实验及习题14.docx

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

C语言程序设计实验及习题14.docx

C语言程序设计实验及习题14

ff

Bvvbvvbgbb实验一C程序运行环境及简单程序的运行

2.程序改错并调试改正后的程序

⑴下列程序的功能为:

计算x*y的值并将结果输出,程序中有8处错误,尝试改正并上机调试之(程序以文件名sy1_2.cpp存盘)。

#include

voidmain

{intx=2;y=3;a

A=x*y

print("a=%d",a);

printf(‘\n’);

}

⑵下列程序的功能为:

输入圆的半径,计算圆面积并将结果输出;程序中有9处错误,尝试改正并上机调试之(程序以文件名sy1_3.cpp存盘)。

#includestdio.h;

intmian();

floatr;area;

printf("inputr:

\n");

scanf("%f",r);

area=3.14159r*r;

printf("r=%f,area=%f\n",area);

 

3.编写程序并上机调试

⑴输入三个整数a、b、c,显示出其中的最大值。

 

4.分析与总结

⑴总结C程序的结构和书写规则。

⑵阅读:

附件1-C语言程序的跟踪调试。

特别提示:

当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。

习题一

一、选择题

参考答案:

1~5CBACD6~10CCACB

11~14AACB

二、综合题

绘制NS算法流程图。

(1)输入10个数,求其中的最大值。

(2)输入3个数,将它们升序排列输出。

 

(3)输入2个数,求它们的最大公约数。

(4)输入一元二次方程的系数a、b、c,判断其根。

实验二顺序结构程序设计

1.阅读程序,尝试写出程序的运行结果,然后输入并调试程序,对照其实际输出与分析的结果是否一致,若不一致,请找出原因。

⑴以下程序用于测试C中不同类型数据所占内存字节数,运行并体会sizeof运算符的使用方法。

//sizeof运算的结果为一个int型的整数,表示其求解对象的存储所占的内存字节数。

#include

voidmain()

{inta=1;

printf("Sizeofcharis%d\n",sizeof(char));

printf("Sizeofshortis%d\n",sizeof(short));

printf("Sizeofintis%d\n",sizeof(int));

printf("Sizeoflongis%d\n",sizeof(long));

printf("Sizeoffloatis%d\n",sizeof(float));

printf("Sizeofdoubleis%d\n",sizeof(double));

printf("Sizeofboolis%d\n",sizeof(bool));

printf("------------------------------\n");

printf("Sizeofais%d\n",sizeof(a));//变量的类型所占内存字节数

printf("Sizeof2.0*10is%d\n",sizeof(2.0*10));//表达式运算结果的类型所占字节数

printf("sizeofLiuDehuais%d\n",sizeof("LiuDehua"));//字符串所占内存字节数

}

⑵阅读并分析以下程序的输出结果,上机调试,对比实际的输出与分析的结果是否一致。

#definePI3.14159

#include

voidmain()

{

inta1=65,a2,a3;

charch1='A',ch2;

floatf1;

doubled1;

printf("\101\x42C\n");

printf("Isay:

\"Howareyou?

\"\n");

printf("\\*CProgram*\\\n");

printf("\t\\\\DisplayHello!

IamTom\b!

\n");

printf("-----------------------------------------\n");

printf("65/10=%d\n",a1/10);

printf("65%10=%d\n",a1%10);

printf("a1=%d,CharofASCII%dis\'%c\'\n",a1,a1,a1);

ch2=ch1+32;

printf("ch2=\'%c\',ASCIIof\'%c\'is%d\n",ch2,ch2,ch2);

printf("-----------------------------------------\n");

a1=65;

a2=(a1++)+(a1++);

printf("a1=%d,a2=%d\n",a1,a2);

a1=65;

a2=(a1++)+(++a1);

printf("a1=%d,a2=%d\n",a1,a2);

a1=65;

a2=(++a1)+(a1++);

printf("a1=%d,a2=%d\n",a1,a2);

a1=65;

a2=(++a1)+(++a1);

printf("a1=%d,a2=%d\n",a1,a2);

printf("-----------------------------------------\n");

a2=2,a3=(a1=3,a2+=a1,a1*a2);

printf("a1=%d,a2=%d,a3=%d\n",a1,a2,a3);

printf("-----------------------------------------\n");

a3=a2=a1=2;

printf("%d,%d,%d\n",(a1,a2+1),a3+2,a1+a2+a3);

printf("-----------------------------------------\n");

a1=12;

a1+=a1-=a1*a1;

printf("a1=%d\n",a1);

printf("-----------------------------------------\n");

ch1='0',a1=1,f1=2.f,d1=PI*(ch1/5+a1/f1);

printf("ch1=%d,a1=%d,f1=%f,d1=%lf\n",ch1,a1,f1,d1);

printf("-----------------------------------------\n");

a1=10;

a2=-a1--;

printf("a1=%d,a2=%d\n",a1,a2);

a3=-++a1;

printf("a1=%d,a3=%d\n",a1,a3);

printf("-----------------------------------------\n");

printf("%d,%d,%d\n",a1++,++a1,a1=2);

printf("a1=%d\n",a1);

printf("%d,%d,%d\n",a1=2,++a1,a1++);

printf("a1=%d\n",a1);

printf("%d,%d,%d\n",a1++,a1=2,++a1);

printf("a1=%d\n",a1);

}

⑶阅读并分析以下程序的输出结果,上机调试,对比实际的输出与分析的结果是否一致。

#include

voidmain()

{charch=65;

inta=1234;

longg=12345678;

floatf=123.456789;

doubled=9.87654321E5;

printf("%d,%c,%5d,%3c\n",ch,ch,ch,ch);

printf("%08d,%0+8d,%8d,%o,%7x,%10ld,%ld\n",a,a,a,a,g,g);

printf("%010.3f,%-10.3f,%10.3f,%f,%e,%g\n",f,f,f,f,f,f);

printf("%0+15.5lf,%-15.5lf,%15.5lf,%lf,%le\n",d,d,d,d,d);

printf("%10s\n%20s\n%-10.3s\n%s\n","Hello,world!

","Hello,world!

","Hello,world!

","Hello,world!

");

}

 

2.程序改错并调试改正后的程序

⑴下列程序的功能为:

输入一个华氏温度,要求输出摄氏温度。

公式为:

C=

,输出取2位小数。

请纠正程序中存在的错误(程序中有3处错误),使程序实现其功能。

#include

voidmain()

{floatc,f;

printf("请输入一个华氏温度:

\n");

scanf("%f",&f);

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

printf("摄氏温度为:

%5.2f\n",c);

}

#include

voidmain()

{floatc,f;

printf("请输入一个华氏温度:

\n");

scanf("%f",f);

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

printf("摄氏温度为:

%5.2f\n"c);

}

⑵下列程序的功能为:

按下列公式计算并输出x的值。

其中a和b的值由键盘输入。

x=2ab/(a+b)2

请纠正程序中存在的错误,使程序实现其功能。

#include

voidmain()

{inta,b;

floatx;

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

x=2ab/(a+b)(a+b);

printf("x=%d\n",x);

3.编写与调试程序

⑴写一个程序测试一下把带小数的float和double型数据用printf函数输出时,小数部分是截断还是四舍五入?

四舍五入

习题二

参考答案:

1~5DDDAC6~10AADDD

11~15DAADD16~20ACBBA

21~25AACAC26~30BCBBA

31~35DDABB36~40CCABA

41~45BACCB46~50DABAC

51~55AAABD56~60ABBBC

61~65ADBAC66~67BD

实验三选择结构程序设计(上)

实验内容

1.体验数据的格式输入的效果。

分析以下程序,假设依据给定的内容输入,其输出会怎样?

实际运行并按照要求输入,比较其输出结果与分析的结果是否一致。

//程序⑴

#include"stdio.h"

voidmain()

{

inta,b,c,d;

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

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

}

输入:

10,10,10,10↵输出:

a=10,b=16,c=8,d=1

输入:

10101010↵输出:

a=10,b=-858993460,c=-858993460,d=?

不正确

//程序⑵

#include"stdio.h"

voidmain()

{

inta,b,c,d;

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

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

}

输入:

10,10,10,10↵输出:

a=10,b=-858993460,c=-858993460,d=?

不正确

输入:

10101010↵输出:

a=10,b=16,c=8,d=

//程序⑶

#include"stdio.h"

voidmain()

{

inta,d;

floatb;

charc;

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

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

}1,23,456,7890

Pressanykeytocontinue

输入:

12345678900↵输出:

a=12,b=56.000000,c=7,d=900

输入:

123456789m0↵输出:

a=12,b=56.000000,c=7,d=9

输入:

12345678900输出:

a=12,b=56.000000,c=,d=8900

输入:

1,23,456,7890输出:

a=1,b=-107374176.000000,c=?

d=-858993460不正确

//程序⑷

#include"stdio.h"

voidmain()

{

longa;

doubleb;

scanf("a=%ld%,b=%lf",&a,&b);/*思考:

如果去掉l,会有什么影响*/

printf("a=%ld,b=%lf\n",a,b);/*思考:

如果去掉l,会有什么影响*/

}

输入:

a=123456789,b=123456789.123456789↵输出:

输入:

123456789,123456789.123456789↵输出:

正确否

//程序⑸

#include

voidmain()

{charc1,c2;/*思考:

此处能否为int型*/

c1=getchar();

c2=getchar();

putchar(c1);

putchar(c2);

putchar('\n');

printf("c1=%d,c2=%d\n",c1,c2);

printf("c1=%c,c2=%c\n",c1,c2);

}

输入:

B1↵输出:

c1=66,c2=49输入:

B↵输出:

c1=66,c2=10

c1=B,c2=1c1=B,c2=

2.改错题(请纠正程序中存在错误,使程序实现其功能)

⑴下列程序的功能为:

输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母,例如:

输入g,则输出fgh;输入a,则输出zab;输入M,则输出LMN;输入Z,则输出YZA。

#include

voidmain()

{charch,c1,c2;

printf("Enteracharacter:

");

ch=getchar();

if((ch>='a')||(ch<='z'))

ch-=32;

c1=ch-1;

c2=ch+1;

if(ch='A')c1=ch+25;

elseif(ch='Z')c2=ch-25;

putchar(c1);

putchar(ch);

putchar(c2);

putchar('\n');

}

⑵下列程序的功能为:

输入3个整数后,输出其中最大值。

#include"stdio.h"

voidmain()

{inta,b,c,max;

printf("请输入3个整数:

\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个数中最大者为:

%d\n",max);

}

三个数中求最大值(最小值类似)另解

1)见实验一(题3)

2)#include"stdio.h"

voidmain()

{inta,b,c,max;

printf("请输入3个整数:

\n");

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

if(a>b)

if(a>c)max=a;

elsemax=c;

else

if(b>c)max=b

max=c;

printf("3个数中最大者为:

%d\n",max);

}

3.程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能)

⑴下列程序的功能为:

判断从键盘上输入的一个字符,并按下列要求输出。

若该字符是数字输出字符串"0-9"

若该字符是大写字母输出字符串"A-Z"

若该字符是小写字母输出字符串"a-z"

若该字符是其他字符输出字符串"!

,@,…"

#include

voidmain()

{charc;

scanf("%c",&c);

if('0'<=c&&c<='9')

_____printf("0-9\n");__

elseif(_'A'<=c&&c<='Z'_)

printf("A-Z\n");

__elseif('a'<=c&&c<='z')

printf("a-z\n");

_____else_______

printf("!

,@,…\n");

}

4.编程题(编写程序,并上机调试运行)

⑴输入三角形的三边长a、b、c,求其面积三角形的面积公式为:

Area=

,其中S=(a+b+c)/2。

(要求判断边长值的合法性与三角形的可构成性)。

#include"stdio.h"

#include"math.h"//数学函数库头文件

voidmain()

{

doublea,b,c,s,area;

printf("请输入三角形三边长:

\n");

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

if(a<=0||b<=0||c<=0)//有任一边边长小于等于0

printf("边长必须为正!

\n");

else

if(a+b>c&&b+c>a&&a+c>b)//任意两边之和对于第三边

{

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));//doublesqrt(doublex):

求平方根值

printf("area=%lf\n",area);

}

else

printf("不能构成三角形!

\n");

}

 

⑵有一函数:

x(x<1)求y值。

y=2x-1(1<=x<10)

3x-11(x>=10)

#include"stdio.h"

voidmain()

{

doublex,y;

printf("请输入x:

");

scanf("%lf",&x);

if(x<1)y=x;

elseif(x<10)y=2*x-1;

elsey=3*x-11;

printf("x=%lf,y=%lf\n",x,y);

}

⑶输入三个数a、b、c,将它们按照升序(由小到大)的顺序显示出来。

解法1:

第四章课件

解法2:

#include"stdio.h"

#include"math.h"//数学函数库头文件

voidmain()

{

inta,b,c,t;

printf("请输入三个整数\n");

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

if(a>b)

if(c>a)

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

else

if(c

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

else

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

else

if(c>b)

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

else

if(c

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

else

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

}

解法3:

#include"stdio.h"

voidmain()

{

inta,b,c,t;

printf("请输入三个整数\n");

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

if(a>b)//假定a<=b,若a>b则将两者的值交换

{t=a;a=b;b=t;}

if(c

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

elseif(c>b)

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

else

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

}

⑷编写一个程序实现如下功能:

输入一个整数,判断它能否被3,5,7整除,并输出该数所属类型。

A:

能同时被3,5,7整除;B:

能被其中两数(要指出哪两个)整除;C:

能被其中一个数(要指出哪一个)整除;D:

不能被3,5,7任一个整除。

解法1:

#include"stdio.h"

voidmain()

{

intn,a,b,c;

printf("请输入整数n=");

scanf("%d",&n);

a=n%3;

b=n%5;

c=n%7;

if(a==0)

if(b==0)

if(c==0)

printf("A:

3,5,7\n");

else

printf("B:

3,5\n");

else

if(c==0)

printf("B:

3,7\n");

else

printf("C:

3\n");

else

if(b==0)

if(c==0)

printf("B:

5,7\n");

else

printf("C:

5\n");

else

if(c==0)

printf("C:

7\n");

else

printf("D:

none\n");

}

解法2:

#include"stdio.h"

voidmain()

{

intn,s=0;

printf("请输入整数n=");

scanf("%d",&n);

if(n%3==0)s+=1;

if(n%5==0)s+=2;

if(n%7==0)s+=4;

switch(s)

{

case0:

printf("D:

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

当前位置:首页 > 医药卫生 > 基础医学

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

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