C语言习题与实验
c语言实验报告(附答案版)

1、熟练掌握while,do—while,for语句实现循环的方法,包括如何正确地设定循环条件,如何控制循环的次数。
2、掌握break语句与continue语句的使用方法。
3、熟悉循环的嵌套以及从循环体内退出循环的处理。
4、理解什么是循环程序结构。
三、实验指导
为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
实验1简单判定性问题求解
一、实验学时
完成本实验需4学时。
二、实验目的
1、阅读程序题
(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;
(2)掌握不同的类型数据之间赋值的规律;
(3)掌握数据在内存中的存储方式;
(4)学会输入、输出函数的基本格式和使用方法;
(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。
1)解题分析:解决问题的关键算法为求圆的面积并按要求输出。循环求圆的面积area,若area<40,则用continue语句提前结束本次循环并开始新一轮循环,若area>90,则用break语句跳出循环。
2)算法流程图如图2-1:
3)综合分析
需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break和continue语句。
(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应关系如下表:
百分制
90-100
80-89
70-79
60-69
<60
等级制
优
良
中
差
劣
具体要求如下:
1)用switch语句实现该功能;
C语言程序设计实验与习题(1-4)

ffB v vbvv bgbb实验一C程序运行环境及简单程序的运行2.程序改错并调试改正后的程序⑴下列程序的功能为:计算x*y的值并将结果输出,程序中有8处错误,尝试改正并上机调试之(程序以文件名sy1_2.cpp#include <stdio.h>void main{ int x=2;y=3;aA=x*yprint ("a=%d",a);printf(‘\n’);}⑵下列程序的功能为:输入圆的半径,计算圆面积并将结果输出;程序中有9处错误,尝试改正并上机调试之(程序以文件名sy1_3.cpp存盘)。
#include stdio.h;int mian();float r; area;printf("input r:\n"); scanf("%f",r);area=3.14159r*r;printf("r=%f , area=%f\n"3.编写程序并上机调试⑴输入三个整数a、b、c,显示出其中的最大值。
4.分析与总结⑴总结C程序的结构和书写规则。
⑵阅读:附件1-C语言程序的跟踪调试。
特别提示:当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。
12习题一一、选择题参考答案:1~5 C B A C D 6~10 C C A C B 11~14 A A C B二、综合题绘制NS 算法流程图。
(1)输入10个数,求其中的最大值。
(2)输入3个数,将它们升序排列输出。
(3)输入2个数,求它们的最大公约数。
(4)输入一元二次方程的系数a 、b 、c ,判断其根。
实验二顺序结构程序设计1.阅读程序,尝试写出程序的运行结果,然后输入并调试程序,对照其实际输出与分析的结果是否一致,若不一致,请找出原因。
⑴以下程序用于测试C中不同类型数据所占内存字节数,运行并体会sizeof运算符的使用方法。
c语言程序设计实验.设计.习题.答案.顺序结构与逻辑运算

}
实验四部分
4-1-a该程序的功能是:输入两个数:a、b,判断a*a+b*b的值,若a*a+b*b的值等于3或1,则y=a+b;若a*a+b*b的值等于0,则y=b-a;若a*a+b*b的值等于其他值,则输出“eerror”;最后输出y的值。
运行结果画面:
#include<stdio.h>
main()
{
int a,M;
scanf("%d",&a);
M=a>0?a:-a;
printf("abs(a)=%d\n",M);
}
4-4运行结果画面:
#include<stdio.h>
main()
{
int c,t,m;
printf("input the number of coat and trousers your want buy:\n");
scanf("%d",&x);
h=x/60;
m=x%60;
printf("%d小时%d分钟",h,m);
}
3-7我使用的算法:进行千分位转换,四舍五入。
运行结果画面:
#include<stdio.h>
main()
{
double x;
scanf("%lf",&x);
printf("%7.2f\n",x);
怎样终止调试状态(程序复位)?在菜单栏中选择“调试”,然后选择“StopDebugging”。
单步调试状态下,向下运行一条语句的操作方法(分两种情况回答,第一种,跟踪到自定义函数内部,第2种,不跟踪到自定义函数内部):第一种选择“Step Into”,跟踪到自定义函数内部;第2种选择“Step over”,不跟踪到自定义函数内部
C语言程序设计及实验指导练习及习题参考答案(8--10)

C语言程序设计及实验指导练习及习题参考答案(8--10) 8练习参考答案1、练习8-1.如果有定义:intm,n=5,某p=&m;与m=n等价的语句是BA.m=某p;B.某p=某&n;C.m=&n;D.m=某某p;8-2.设计一个程序计算输入的两个数的和与差,要求自定义一个函数um_diff(floatop1,floatop2,float某pum,float某pdiff),其中op1和op2是输入的两个数,某pum和某pdiff是计算得出的和与差。
解答:#includeintmain(void){floatop1,op2,um,diff;voidum_diff(floatop1,floatop2,float某pum,float某pdiff);printf(“inputop1andop2:“);canf(“%f%f”,&op1,&op2);um_d iff(op1,op2,&um,&diff);printf(“%f+%f=%f;%f-%f=%f\\n”,op1,op2,um,op1,op2,diff);return0;}voidum_diff(floatop1,floatop2,float某pum,float某pdiff){某pum=op1+op2;某pdiff=op1–op2;}8-3.两个相同类型的指针变量能不能相加?为什么?解答:不能。
因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在C语言中指针变量相加是非法的。
8-4.根据表8.2所示,这组数据的冒泡排序其实循环到第6遍(即n-2)时就已经排好序了,说明有时候并不一定需要n-1次循环。
请思考如何改进冒泡排序算法并编程实现(提示:当发现一遍循环后没有数据发生交换,说明已经排好序了)。
解答:设置一个标志变量flag,进入一轮循环前设置为0,在循环中有发生数据交换就改写flag值为1。
C语言程序设计练习题(答案)

C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:\lx 目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。
设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。
图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。
c语言实验习题及答案详解

1.数据类型a.输入一个小数点后有多位数字的小数,实现将其保留三位小数,并输出;(3.14159 →3.142,10.123456 →10.123)#include<stdio.h>main(){double b,d;printf("请输入一个小数:");scanf("%lf",&b);printf("输出原来的数:%f\n",b);b*=1000;b+=0.5;b=(int)b;d=b/1000;printf("输出现在的数:%.3lf\n0",d);}b.输入一个4位整数,求其得各位数字的平方和;(1234 → 1+4+9+16=30)#include<stdio.h>main(){int n,sum=0,i,t;printf("请输入一个四位整数:\n");scanf("%d",&n);for(i=0;i<4;i++){t=n%10;n/=10;sum+=t*t;}printf("%d\n",sum);}c.定义字符型变量ch,写出六种给ch赋值字符’A’的代码;#include<stdio.h>main(){char ch;ch='A';ch=65;ch=0x41;ch=0101;ch='\101';ch='\x41';}d.编写程序输出26组大小写字母;(AaBbCc……….XxYyZz)#include<stdio.h>main(){int i;for(i=65;i<91;i++){printf("%c",i);printf("%c",i+32);}printf("\n");}e.定义浮点型变量f1、f2,为f1赋值10的-30次,为f2赋值10的30次#include<stdio.h>main(){double f1,f2;f1=10e-30;f2=10e30;printf("%lf\n%lf\n",f1,f2);}f.定义一个单精度浮点型变量f和一个双精度浮点型变量d,为f和d都赋值3.14159265358979323846264338327950288,输出f和d得值,要求保留20位小数,观察输出结果;#include<stdio.h>void main(){float f;double d;f=3.14159265358979323846264338327950288;d=3.14159265358979323846264338327950288;printf("f=%.20f\nd=%.20lf\n",f,d);}g.输入华氏温度求摄氏温度。
C语言课后实验设计题目及答案

C语⾔课后实验设计题⽬及答案C语⾔实验题⽬及答案1、实验项⽬⼀ C程序的编辑、编译、连接和运⾏题⽬:编写程序,要求屏幕上显⽰如下信息:***********************This is a C program .***********************程序:#includevoid main(){printf(“***********************\n”);printf(“This is a C programn .\n”);printf(“***********************\n”);}实验项⽬⼆数据类型、运算符、表达式题⽬(1)程序填空:输⼊1 个实数x,计算并输出其平⽅根(保留1 位⼩数)。
填空1.double x,root;2.root=sqrt(x);(2)输⼊⼀个⼤写英⽂字母,输出相应的⼩写字母。
填空1.ch=ch+32;1、#include "stdafx.h"#include "stdio.h"#include "math.h"int main(int argc, char* argv[]){printf("This is a Cprogram\n");return 0;}#include "math.h"int main(int argc, char* argv[]) {double x;printf("x=");scanf("%lf",&x);printf("%lf\n",sqrt(x));return 0;}2、实验项⽬三顺序结构程序设计题⽬(1)编写程序,输⼊三⾓形的三边长a、b、c,求三⾓形⾯积area。
(2)设圆半径r=1.5,圆柱⾼h=3,求圆周长、圆⾯积、圆球表⾯积、圆球体积、圆柱体积。
C语言实验题及参考答案

实验一1、计算整数各位数字之和(10 分)输入一个3位正整数,将其每一位的数字相加,输出和。
输入格式:输入一个3位正整数。
变量数据类型为unsigned。
输出格式:输出整数每一位相加后的整数和。
输入样例:输出样例:【参考答案】#include ""int main(){ unsigned int a,ge,shi,bai,sum;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;sum=ge+shi+bai;printf("%d\n",sum);return 0;}2、计算代数表达式(10 分)求:输入格式:输入角度x。
变量数据类型为double。
π为。
输出格式:输出y的值,精确到小数点后2位。
输入样例:输出样例:【参考答案】#include <>#include <>#define PIint main(){double x,y;scanf("%lf",&x);y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));printf("%.2lf",y);return 0;}3、逆序的三位数(10 分)程序每次读入一个正3位数,然后输出按位逆序的数字。
注意:当输入的数字含有结尾的0时,输出不应带有前导的0。
比如输入700,输出应该是7。
输入格式:每个测试是一个3位的正整数。
输出格式:输出按位逆序的数。
输入样例:输出样例:【参考答案】#include ""int main(){ int a,ge,shi,bai,b;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;b=ge*100+10*shi+bai;printf("%d\n",b);return 0;}4、求整数均值(10 分)本题要求编写程序,计算4个整数的和与平均值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题与上机实验总的目的和要求目的:实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。
C 程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。
学会独立上机调试程序。
也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。
计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。
对程序设计来说,要求会编写程序并上机调试通过。
因此调式程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。
调式程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。
因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。
甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。
这样的学习才会有真正的收获。
实验目的可归纳如下:1.验证自己已建立起来的概念或所编写的程序是否正确;2.加深对课堂所学内容的理解和语法规则的记忆;3.理解和掌握运用计算机高级语言进行编程的思想方法;4.掌握常用算法的设计与应用实现;5.熟悉UNIX等程序开发环境,掌握C程序常用的调试手段;6.学会上机调试程序的方法,不断积累调试经验,提高排错能力;7.使自己具有独立的应用编程和熟练的程序调试能力。
要求:1.做好每一次上机前的准备以提高上机效率:①预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;②按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。
③将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。
2.上机时输入和调式自己所编写的程序。
在使用键盘时,应采用正确的指法击键,为今后正确使用键盘打下基础;应该一人一组,尽量独立思考,上机过程中出现的问题,除了是系统的问题外,一般应自己独立处理,尤其对“出错信息”,应善于自己分析判断,并充分利用开发工具提供的错误信息和调试手段解决出现的问题,及时修改与完善源程序,随时记录有价值的内容。
解决问题是学习调式程序的良好机会。
初学者切不可不编程序或抄别人的程序去上机,应从一开始就养成严谨的科学作风。
3.程序调试通过后,应运行程序并根据事先准备的典型数据验证结果,在运行时要注意在输入不同数据时所得到的不同结果(如解一元二次方程上时,不同的a、b、c 组合应得到实根、复根的不同结果)。
此时应运行几次,分别检查在不同情况下程序是否正确。
4.为便于教师检查和以后复习,请不要删除已通过的程序,包括有问题待答疑的程序,应保存在自己的工作目录内。
源程序名应能反映哪一次实验的哪一个题目,如exp1_1.c表示实验一的第一题,exp3_5.c表示实验三的第五题,exp5_1_1.c和exp5_1_2.c 分别表示实验五中第一题的方法1和方法2。
若有未完成调试的源程序,可以作存盘保存处理,待下一次实验继续完成。
5.上机结束后,应整理出实验报告,实验报告应包括以下内容:①实验目的;②题目;③程序清单(附算法描述或流程图);④运行结果(必须是程序清单所对应的输入数据和打印输出的结果);⑤调式分析和体会。
这是实验报告中最重要的一项,也是最容忽视的一项。
实验过程中大量的工作是程序调式,在调式过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高编程的能力。
应此,对实验的总结,最重要的是程序调式经验的总结。
调式分析也包括对结果的分析。
体会主要是指通过本次实验是否达到了实验目的,有那些基本概念得到了澄清等。
习题与实验一: C程序的运行环境与运行一个C程序的过程一、目的要求:1.了解所使用的计算机系统的基本操作方法,学会独立使用该系统。
2.掌握在该系统上如何编辑、编译、连接和运行C程序。
3.通过编写和运行简单的C程序,了解程序的基本结构和函数的定义形式,理解系统库函数的说明性预处理文件(stdio.h,math.h等)的概念,掌握函数的定义和系统库函数的使用。
初步了解C源程序的特点。
二、习题与实验内容:1.学习从开机开始的操作,包括按帐号登录、列文件目录、显示文件内容、删除文件、复制文件等。
2.调用文本编辑程序,输入范例程序,并进行编译和运行。
应了解所用的系统是用什么命令进行编译和运行的。
编译和连接后所到的目标程序的后缀是什么?3.了解如何在运行时向程序变量输入数据和输出运行结果。
4.运行自己编写的上机习题:1,2,3,4。
三、上机习题:1.编写一个C程序,输出以下信息:**********************Very Good!**********************2.编写计算半径为R、高度为H的圆柱体体积的程序。
要求R和H的数值由键盘输入。
3.阅读程序分析运行结果,并上机验证。
#include <stdio.h>main(){char c1,c2,c3,c4;scanf("%c%c",&c1,&c2);getchar();c3=getchar(); c4=getchar();printf("%c %c %c %c\n",c1,c2,c3,c4);printf("%c,%d\n",c1,c1);printf("%d,%d\n",sizeof(c1),sizeof("1234"));}若从键盘分行输入以下数据,则输出结果是什么?12↙3456↙提示说明:执行getchar()函数时,首先直接从输入缓冲区中读取字符,直到输入缓冲区为空才等待从键盘继续输入。
一行上输入的所有字符一并送入缓冲区,输入完毕,getchar()函数从缓冲区读取一个字符,只要缓冲区还有剩余的字符,后面的getchar()函数就会直接从中读取。
空格和回车符都属于字符,很有必要充分注意和掌握字符输入的特殊性及其输入方❷sizeof为长度运算符(参看教材P375),运算对象(即括号中的内容)可以是常量、变量、表达式和数组名等,运算结果为运算对象地存储字节长度,对表达式而言是表达式值的字节长度。
❸注意思考解决源程序中第五行的功能是什么的问题。
4. 修改范例prg2.c程序文件,使程序中的变量均为float类型,并验证结果是否正确,分析原因(提示:从数据精度上找原因)。
习题与实验二:数据类型、运算符和表达式一.目的要求:1.掌握C语言数据类型、熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法。
2.掌握数据的输入输出的方法,能正确使用各种格式转换符。
3.掌握C的各类运算符的使用,以及包含这些运算符的表达式的运算求值,特别是自加(++)和自减(--)运算符的使用。
4.了解函数参数的求值顺序,UNIX等系统采用自右至左的顺序求函数参数的值,因此右边参数中的变量值的改变会影响左边参数中相应变量的值和表达式的值。
5.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二.习题与实验内容:1.将本题后给出的范例prg2_1.c改用scanf函数输入数据而不用赋值语句,scanf函数调用语句如下:scanf(“%d%d%c%c%f%f”,&a,&b,&c1,&c2,&d,&e);scanf(“%lf,%lf,%ld,%ld,%u,%u”,&f,&g,&m,&n,&p,&q);输入的数据如下:61 62ab3.56 –6.78↙3157.890121, 0.123456789,50000,-60000,32768,4000↙应输出如下结果:sizeof:4, a=61, b=62sizeof:1, c1=a, c2=bsizeof:4, d=3.56 , e=-6.78sizeof:8, f=3157.890121 , g=0.123456789000sizeof:4, m=50000, n=-60000sizeof:4, p=32768, q=4000要求:运行修改后的程序并分析运行结果。
然后将scanf函数中的%lf和%ld改为%f和%d,运行程序并观察分析结果。
范例源程序文件prg2_1.c清单:#include <stdio.h>main(){int a,b; char c1,c2; float d,e; double f,g;a=61; b=62;c1='a'; c2='b';d=3.56; e=-6.78;f=3157.890121; g=0.123456789;m=50000; n=-60000;p=32768; q=4000;printf("sizeof:%d, a=%d, b=%d\n",sizeof(int),a,b);printf("sizeof:%d, c1=%c, c2=%c\n",sizeof(char),c1,c2);printf("sizeof:%d, d=%-6.2f, e=%-6.2f\n",sizeof(float),d,e);printf("sizeof:%d, f=%-15.6f, g=%-15.12f\n",sizeof(double),f,g);printf("sizeof:%d, m=%ld, n=%ld\n",sizeof(long),m,n);printf("sizeof:%d, p=%u, q=%u\n",sizeof(unsigned),p,q);}提示:lf和ld格式符分别用于输入double型和long型数据。
若输入格式符与相应存储单元规定的格式不符,则将引起存储错误,最终将会导致运算结果的错误。
2. 输入并运行以下程序:#include <stdio.h>main(){int i,j,m,n;i=8; j=10;m=++i; n=j++;printf(“%d,%d,%d,%d\n”,i,j,m,n);}然后分别作以下改动并运行:①将第四行改为:m=i++; n=++j;②程序改为:main(){int i,j,m,n;i=8; j=10;printf(“%d,%d\n”,i++,j++);}③在②的基础上,将printf语句改为:printf(“%d,%d\n”,++i,++j);④再将printf语句改为:printf(“%d,%d,%d,%d\n”,i,j,++i,++j);⑤程序改为:main(){int i,j,m=0,n=0;i=8; j=10;m+=i++; n-=--j;printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);}要求:在上机前先用人工分析程序写出应得结果,上机后将两者对照。