C语言实验二分析

合集下载

c语言实验2顺序结构程序设计

c语言实验2顺序结构程序设计

实验2 顺序结构设计实验要求:1.掌握语句的概念;2.掌握在语句中数值表达式的计算和运行结果;3.掌握赋值语句的使用,掌握根据题目需要定义变量类型;4.掌握对整型和实型数据的简单输入输出语句,并设计简单的输入输出语句;5.掌握在执行简单的输入语句时,能够进行正确的输入操作;6.会利用基本语句设计顺序执行的程序;7.会上机调试、运行简单的顺序结构程序。

读程序:1.编写程序,输入两个整数给变量a 和b ,输入的大数放在a 中,输入的小数放在b 中,求出他们的商数和余数并进行输出。

分析:题目已指定数据是按照先大后小次序输入,这样可以保证下面程序中变量a 存放大数,变量b 存放小数,可用除法运算符“/”对整数运算的特点求商,用取余运算符“%”求余数。

#include "stdio.h"main(){int a,b,c,d;printf("input two integers:\n");scanf("%d %d",&a,&b);c=a/b;d=a%b;printf("%d,%d",c,d);}程序解释:第一个printf 语句:\n 为回车换行符,表示输入这行话以后光标另起一行。

scanf 语句:输入a 和b 的值,注意输入的格式要和scanf 语句里的格式相同,这里中间有一个空格,即我们输入a 以后要按一下空格,再输入b ;如果scanf 语句是这样写scanf("%d ,%d",&a,&b);那么我们输入a 的值以后还要输入一个逗号,然后再输入b 的值,然后按回车表示输入结束。

2. 已知三条边a 、b 、c ,求三角形面积。

计算三角形面积的海伦公式:))()((c s b s a s s area ---=,其中)(21c b a s ++= #include<stdio.h>#include<math.h>main(){float a,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c)); /*调用求平方根函数sqrt*/printf("area=%f",area);}实验内容:1.输入两个整型数字,输出他们的和。

c语言实验二实验报告

c语言实验二实验报告

一、实验目的1、掌握关系表达式和逻辑表达式的使用。

2、掌握选择结构程序设计的一般方法。

3、熟练使用if语句进行程序设计。

4、掌握使用switch语句实现多分支选择结构。

二、实验内容有一分段函数如下:编写程序,输入x(实数)的值,输出以如下格式:x=??.??,y=??.?? ( 即小数部分保留2位)程序代码:#include "stdio.h"int main(){float x,y;scanf("%f",&x);if(x<1)y=x*x;if(x>=1&&x<10)y=5*x-1;if(x>=10)y=2*x+4;printf("x=%.2f,y=%.2f\n",x,y);return 0;}2、从键盘输入三个实数,输出最大数和最小数。

样例输入:1.23 3.45 5.67样例输出:5.67 1.23程序代码:#include "stdio.h"int main(){float a,b,c,max,min;scanf("%f%f%f",&a,&b,&c);if(a>b){max=a;min=b;}else{max=b;min=a;}if(a>c)if(b>c){min=c;}else {min=b;}else {max=c;}printf("%.2f %.2f\n",max,min);return 0;}3、读入3个非零的double数后,判别这三个值是否可以表示一个三角形的三条边。

样例输入1:1.23 1.23 1.23样例输出1:yes.样例输入2:5.23 3.45 -12.34样例输出2:no.程序代码:#include "stdio.h"int main(){double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);if(a>0&&b>0&&c>0)if(a+b>c&&b+c>a&&a+c>b)printf("yes.\n");else printf("no.\n");else printf("no.\n");return 0;}4、读入3个非零整数后,判别这三个值是否可以表示一个直角三角形的三条边。

C语言实验二报告

C语言实验二报告

北京电子科技学院(BESTI)实验报告课程:程序设计基础班级:姓名:学号:成绩:指导教师:张晓昆实验日期:实验密级:预习程度:实验时间:15:30~18:30仪器组次:必修/选修:必修实验序号: 2实验名称:函数编程练习实验目的与要求:主函数通常只处理输入和输出;掌握定义函数的方法;掌握函数实参与形参的对应关系,以及“值传递”的方式;掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法,、了解函数的嵌套调用方法和递归调用方法。

观察堆栈窗口call stack,注意函数调用过程堆栈的动态变化。

有兴趣的同学可以将几个函数分别放到不同的.C文件中,分别编译,再利用Project建立工程文件,然后连接执行,观察结果。

实验内容素数(Prime Number),又称为质数,它是不能被1和它本身以外的其他整数整除的正整数。

按照这个定义,负数、0和1都不是素数,而17之所以是素数,是因为除了1和17以外,它不能被2~16之间的任何整数整除。

任务1:试商法是最简单的判断素数的方法。

用i=2~m-1之间的整数去试商,若存在某个m能被1与m本身以外的整数i整除(即余数为0),则m不是素数,若上述范围内的所有整数都不能整除m,则m是素数。

采用试商法,分别用goto语句、break语句和采用设置标志变量并加强循环测试等三种方法编写素数判断函数IsPrime(),从键盘任意输入一个整数m,判断m是否为素数,如果m是素数,则按"%d is a prime number\n"格式打印该数是素数,否则按"%d is not a prime number\n"格式打印该数不是素数。

然后分析哪一种方法可读性更好。

1、goto语句#include <stdio.h>#include <stdlib.h>int IsPrime(int n); //判断是否是素数的函数原型int main(){int m;printf("Please enter a integer:");scanf("%d", &m); //用户输入欲判断的数if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果printf("%d is a prime number!\n", m);}else{printf("%d is not a prime number!\n", m);}return 0; //返回0} //主函数结束int IsPrime(int n) //判断是否是素数的函数{int i = 2;int j = 0;if(n < 2){ //若n小于2,返回0值return 0;}if(n == 2){return 1;}loop:if(n % i == 0){ //利用goto语句i++;j++;goto loop;}if(j >= 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0;}else{return 1;}} //子函数结束2、break语句#include <stdio.h>#include <stdlib.h>int IsPrime(int n); //判断是否是素数的函数原型int main(){int m;printf("Please enter a integer:");scanf("%d", &m); //用户输入欲判断的数if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果printf("%d is a prime number\n", m);}else{printf("%d is not a prime number\n,", m);}return 0; //返回0} //主函数结束int IsPrime(int n) //判断是否是素数的函数{int i;int j = 0;if( n < 2 ){ //若n小于2,返回0值return 0;}for(i = 2; i <= n - 1; i++){if( n % i == 0){ //利用试商法判断是否能被2~n-1之间的数整除j++;}if(j > 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0;break;}}if( j == 0)return 1;} //子函数结束3、采用设置标志变量并加强循环测试#include <stdio.h>#include <stdlib.h>int IsPrime(int n); //判断是否是素数的函数原型int main(){int m;printf("Please enter a integer:");scanf("%d", &m); //用户输入欲判断的数if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果printf("%d is a prime number\n", m);}else{printf("%d is not a prime number\n,", m);}return 0; //返回0} //主函数结束int IsPrime(int n) //判断是否是素数的函数{int i;int j = 0;if( n < 2 ){ //若n小于2,返回0值return 0;}for(i = 2; i <= n - 1; i++){if( n % i == 0){ //利用试商法判断是否能被2~n-1之间的数整除j++;}}if(j >= 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0;}else{return 1;}} //子函数结束任务2:用数学的方法可以证明,不能被2取整)之间的数整除的数,一定不能被1和它本身之外的其他任何整数整除。

《c语言程序设计》实验报告(实验-2)

《c语言程序设计》实验报告(实验-2)

《c语⾔程序设计》实验报告(实验-2)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。

⼆、预习内容:教材《C语⾔程序设计教程》第1章。

三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。

#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。

2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。

成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。

实验二C语言中的分支语句程序设计实验

实验二C语言中的分支语句程序设计实验

实验二 C语言中的分支语句程序设计一、实验目的:1.掌握C语言的基本语法;2.掌握C语言的表达式运算及标准库函数的调用方法;3.掌握C语言的基本输入输出语句;4.掌握字符类型、整型和浮点型数据的输入输出及表达式计算方法;5.掌握if语句和switch语句的用法;6.掌握分支程序结构的设计思想;二、实验内容(一)分析程序,用程序验证下面各个表达式的值1、当整型变量a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少? (1) if(a>c) {a=b; b=c; c=a;}else {a=c; c=b; b=a;}执行后a,b,c的值为,,(2) if(a<c) a=c;else a=b; c=b; b=a;执行后a,b,c的值为,,(3) if(a!=c) ;else a=c; c=b; b=a;执行后a,b,c的值为,,2、若整数x分别等于95、87、100、43、66、79,57,则以下程序段运行后屏幕显示是什么?switch(x/10){ case 6:case 7: printf("Pass\n"); break;case 8: printf("Good\n"); break;case 9:case 10: printf("V eryGood\n"); break;case 5 : printf("Between Pass and Fail\n");default: printf("Fail\n");}x等于95时,程序段运行后屏幕上显示。

x等于87时,程序段运行后屏幕上显示。

x等于100时,程序段运行后屏幕上显示。

x等于43时,程序段运行后屏幕上显示。

x等于66时,程序段运行后屏幕上显示。

x等于79时,程序段运行后屏幕上显示。

x等于57时,程序段运行后屏幕上显示。

c语言实验报告 (2)

c语言实验报告 (2)

C语言实验报告说明1,所有程序均用VC6。

0编译运行,文件名命名为姓名+日期,因为实验存在补做,所以并不是按照日期先后排列的。

2,为了使截图清晰,手动将运行窗口由“黑底白字"改为了“白底黑字”.实验2 数据类型、运算符和表达式一、实验目的:(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法。

(2)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。

(3)掌握C语言的输入和输出函数的使用(4)进一步熟悉C程序的编辑、编译、连接和运行的过程.三、程序调试与问题解决:(1)输人并运行下面的程序#include<stdio.h>void main(){char c1,c2;c1='a’;c2=’b';printf(”%c %c\n”,c1,c2);}错误!运行此程序.错误!在上面printf语句的下面再增加一个printf语句。

printf(”%d%d\n",c1,c2);再运行,并分析结果。

输出结果如图,编译成功,无错误.错误!将第3行改为int c1,c2;再运行,并分析结果。

错误!再将第4、5行改为c1=a;c2=b;再运行,并分析结果。

a,b没有定义,编译报错。

错误!再将第4、5行改为c1=‘’a‘’;c2=‘’b‘’;再运行,并分析结果。

○6再将第4、5行改为c1=300;c2=400;再运行,并分析结果.以字符型输出时,输出的将是300,400对应的字符.(2)输人并运行教材第3章习题3. 6给出的程序#include〈stdio.h〉main (){char c1=’a’,c2=’b’,c3=’c',c4=’\101’,c5=’\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf(”\t\b%c %c\n”,c4,c5);}#include<stdio.h>void main(){int a,b;unsigned c,d;long e,f;a=100;b=-100;e=50000;f=32767;c=a;d=b;printf("%d,%d\n",a,b);printf(”%u,%u\n",a,b);printf("%u,%u\n",c,d);c=a=e; d=b=f;printf(”%d,%d\n",a,b);printf("%u,%u\n”,c,d);}请对照程序和运行结果分析:①将一个负整数斌给一个无符号的变t,会得到什么结果.画出它们在内存中的表示形式。

C语言_实验二、选择结构程序设计

C语言_实验二、选择结构程序设计

实验二 选择结构程序设计一、实验目的1. 掌握关系表达式和逻辑表达式的使用。

2. 熟悉选择结构程序设计。

3. 熟练使用if 语句进行程序设计。

4. 使用switch 语句实现多分支选择结构。

二、实验内容(1 计算a+|b| 2 判断一个整数是否可以被3和5整除)1.[目的]掌握判断一个字符型数据是否数字字符的方法,以及数字字符转换为相应整数的方法。

[题目内容]从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。

[输入]一个字符型数据[输出]整数或出错信息[提示] 根据字符型数据的ASCII 码值是否在‘0’字符与‘9’字符之间进行判断。

使用if …else …语句和复合语句。

2.[目的]掌握条件表达式的使用[题目内容] 编写一个程序,其功能为:从键盘输入三个数x 、y 、z ,判断x+y=z 是否成立,若成立输出‚x+y=z ‛的信息,否则输出‚x+y!=z ‛的信息。

[输入] 三个数x 、y 、z[输出] ‚x+y=z ‛或‚x+y!=z ‛[提示] 条件判断表达式x+y==z3.[目的]掌握求最大值最小值的方法。

[题目内容] 编写一个程序,其功能为:输入三个整数,输出最大数和最小数。

[输入] 三个整数[输出] 最大值和最小值[提示] 设置最大值变量max 和最小值变量min ;首先比较a,b 的大小,并把大数存入max , 小数存入min ;然后最大值变量max 和最小值变量min 再与c 比较,若c 大于max ,则max 取值c ,否则保持不变;如果c 小于min ,则min 取值c ,否则保持不变。

最后输出max 和min 的值。

使用if …else …语句、if 语句以及复合语句。

4.[目的]运用已学知识解决实际问题。

[题目内容]如下两个线性方程组的两个未知数为x1和x2:ax 1+bx 2=mcx 1+dx 2=n该方程的唯一解为(ad-cb 不等于零时):cb ad bn md x --=1 bcad mc na x --=2 请编写一个程序,读取a 、b 、c 、d 的值,计算x1和x2的值。

C语言实验报告,实验一和实验二

C语言实验报告,实验一和实验二

实验一C语言的运行环境、运行过程和表达式的使用一、目的与要求1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。

2、了解在该系统上如何编辑、编译、连接和运行一个C程序。

3、通过运行简单的C程序,初步了解C源程序的特点。

4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。

5、学会使用C的有关算术运算符,以及包含这些运算符的表达式二、上机实验及运行结果1、例题实验及运行结果例一:#include"stdio.h"void main(){printf("Hello,World!\n");printf("Wolcome to the C language world!\n");printf("Everyone has been waiting for.\n");}运行结果为Hello, world !Welcome to the C language world!Everyone has been waiting for.在第一次输入源程序时,由于粗心在printf(“Hello,world!”)后面忘记输入“;”,在编译中检查出来,修改后编译成功。

例二:#include"stdio.h"void main(){int a,b,sum;a=123;b=456;sum=a+b;printf("sum is %d\n",sum);}运行结果为:sum is 579。

一次编译就成功了。

例三:#include"stdio.h"void main(){int a,b,c;int max(int,int);scanf("%d,%d",&a,,&b);c=max(a,b);printf("max=%d",c);}int max(int x,int y){int z;if (x>y) z=x;else z=y;return(z);}键盘输入“8,9”,屏幕上输出“max=9”例四:#include"stdio.h"void main(){char c1 , c2;c1=97;c2=98;printf("%c %c", c1, c2);}在此基础上1)加一个printf语句,并运行之。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行结果抓图至下方:
Eg2-3:输入年份和月份,求该月有多少天。
(1)算法分析:要考虑大月有31天,小月有30天,闰年的二月有29天以及非闰年的二月有28天这几种情况。
(2)源程序:
#include <stdio.h>
void main( )
{
int year,month,days;
printf("请输入年月:");
scanf("%d%d",&year,&month);
switch (month)
{
case 1: case 3: case 5: case 7:
case 8: case 10: case 12: /*处理"大"月*/
days=31;break;
case 4: case 6: case 9: case 11: /*处理"小"月*/
(2)调试开始,设置三个断点,具体位置见源程序的注释。
(3)单击Go 按钮,输入a,b,c的值(2.0 9.0 3.0)后,程序执行到第一个断点处,在观察窗口输入变量名a,b,c,查看变量a,b,c的值。此时,这些变量的值与输入的值一致。
(4)继续单击Go 按钮,程序运行到第二个断点处,观察到变量d的值为57,说明方程有实根。
days=30;/*注意跳出处理!!*/
case 2: /*处理"平"月*/
if (year%4==0&&year%100!=0||year%400==0)
days=29; /*如果是闰年,注意体会此判断表达式!!*/
else days=28; /*不是闰年*/
break;
default: printf("Input error! \n"); /*月份输入错误*/
days=0;
}
if (days!=0) printf("%d年%d月有%d天\n",year,month,days);
}
(3)在VC++编辑环境下编辑源程序。并仔细阅读此程序,理解其编程思路!!
(4)编译直到程序没有错误。
(5)从键盘输入
2008,9↙,运行结果如何?为什么?
运行结果:Input error!
一、调试程序训练
注:本训练中没有必须要完成的任务,但请大家务必掌握这种调试程序的方法,并在今后的程序调试中积极使用这种方法,因为它对于我们分析程序、尤其是那些貌似正确(无语法错误)、但执行结果错误的程序,非常有帮助!!!
Eg2-1:调试训练——改正下列程序中的错误,输入参数a,b,c,求一元二次方程ax2+bx+c=0的根。
(1)算法分析:标准ASCII码值范围是0到127,所以在此范围内的数可以以字符形式输出,实现方法是用格式输出函数并用格式符%c控制输出。
(2)源程序:
#include <stdio.h>
void main( )
{
int x,y,sub ;
scanf("%d%d",x,y); /*变量前一定要加取地址符&,再次提醒!!*/
sub==x*x-y*y ;/*注意读题意!!*/
printf("%c,%c,%d\n",x,y,sub);
}
(3)在VC++编辑环境下编辑源程序。
(4)编译并运行。如有错误,则改正至无错。
(5)从键盘输入
100 50↙,运行结果如何?(请将运行结果抓图放入下面框内,并体会字符型数据的存储机制!!)
}
}
说明:断点的作用是使程序执行到断点处暂停,让用户可以观察当前变量或表达式的值。设置断点时,先将光标定位到要设置断点的位置,然后单击编译微型工具的“ ”按钮,断点即设置完毕。如果要取消设置的断点,只需要将光标移到要取消的断点处,单击“ ”按钮,该断点即取消。
(1)打开源程序,对程序进行编译和连接,没有出现错误信息。
}
运行结果:
Eg2-5:用if语句编写一个C程序:输入a, b, c三个值,输出其中最大者。
在下面写出源程序:
#include<stdio.h>
void main()
{int a,b,c,max;
printf("请输入a,b,c=");
提示:注意c=5/9*(f-32)与c=5.0/9.0*(f-32)的区别
请将程序及运行结果粘贴至下面:
程序:
#include<stdio.h>
void main()
{
int c,f;
printf("请输入一个华氏温度:");
scanf("%d",&f);
c=5.0/9.0*(f-32);
printf("%d\n",c);
{
if (c==0)
printf("参数都为零,方程无意义!\n");
else
printf("a和b为0,c不为0,方程不成立!\n");
}.2f\n",-c/b);
}
else
if (d>=0)//断点2
{
printf("x1=%0.2f\n",(-b+sqrt(d))/(2*a));
(5)再次单击Go 按钮,程序运行到最后一个断点处,运行窗口显示x1=-0.36,x2=-4.14,符合题目要求。
(6)单击Stop Debugging 按钮,程序调试结束
二、实验内容一(验证及程序分析)
Eg2-2:从键盘输入两个0到127的整数,求两数的平方差并输出其值以及这两个整数的ASCII码对应的字符。
#include <stdio.h>
#include <math.h>
void main( )
{
double a,b,c,d;
printf("Enter a,b,c:");
scanf("%lf%lf%lf",&a,&b,&c);
d=b*b-4*a*c;//断点1
if (a==0)
{
if (b==0)
printf("x2=%0.2f\n",(-b-sqrt(d))/(2*a));
}
else//断点3
{
printf("x1=%0.2f+%0.2fi\n",-b/(2*a),sqrt(d)/(2*a));
printf("x2=%0.2f-%0.2fi\n",-b/(2*a),sqrt(d)/(2*a));
原因:原来的程序是年月,如果输入“,”会被看成字符
(6)再输入
2010 6↙,输出结果:
运行结果抓图至下方:
1900 2↙,输出结果:
运行结果抓图至下方:
2000 2↙,输出结果:
运行结果抓图至下方:
三、实验内容二(综合及设计类)
Eg2-4:输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)。
相关文档
最新文档