实验报告1202.docx

上传人:b****8 文档编号:28483756 上传时间:2023-07-14 格式:DOCX 页数:55 大小:30.49KB
下载 相关 举报
实验报告1202.docx_第1页
第1页 / 共55页
实验报告1202.docx_第2页
第2页 / 共55页
实验报告1202.docx_第3页
第3页 / 共55页
实验报告1202.docx_第4页
第4页 / 共55页
实验报告1202.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

实验报告1202.docx

《实验报告1202.docx》由会员分享,可在线阅读,更多相关《实验报告1202.docx(55页珍藏版)》请在冰豆网上搜索。

实验报告1202.docx

实验报告1202

实验报告

第二章

实验Ⅰ变量的使用和赋值运算

1实验目的与要求

(1)掌握C语言的数据类型。

(2)掌握变量的定义与使用。

(3)掌握C语言的赋值运算和算术运算。

2实验题目

(1)阅读程序,写出结果,上机验证。

#include

voidmain(){

inta,b;

a=5/2;

b=1/2;

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

printf("5/2.0=%f,1.0/2=%f\n",5/2.0,1.0/2);

a=5%2;

b=2%5;

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

a=-5%2;

b=5%-2;

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

}

(2)修改错误

#include

voidmain(){

intr;

floatarea;

scanf("%d",&r);

area=3.14159*r*r;

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

}

(3)由键盘输入两个整数,分别计算它们的和差积商,并输出结果。

#include

voidmain(){

inta,b,A,B,C,D;

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

A=a+b;

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

B=a-b;

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

C=a*b;

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

D=a/b;

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

}

(4)由键盘输入10~99之间的整数,将该数分解,分别输出个位和十位数字。

#include

voidmain(){

inta,b,c;

printf("请输入一个10到99的数\n");

scanf("c=%d",&c);

a=c%10;

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

b=c/10;

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

}

体会:

注意数据类型,赋值运算和算术运算有区别,使用时要注意。

实验Ⅱ格式化输入输出函数

1实验目的与要求

(1)掌握C语言的格式化输入输出函数。

(2)掌握整型,实型数据不同格式的输出和正确输入字符型数据。

2实验题目

(1)阅读以下程序,先写出程序的运算结果,再上机验证。

#include

voidmain(){

floatx,y;

charc1,c2,c3;

x=5/2.0;

y=1.2+5/2;

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

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

c1='A';

c2=c1+32;

c3='0'+8;

printf("c1=%3c,c2=%5c,c3=%-5c\n",c1,c2,c3);

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

printf("%s\n%8s\n%.3s\n%6.2s\n","hello","hello","hello","hello");

}

(2)上机输入以下两个程序,用给定的3种方式输入,看结果,想想为什么?

程序1

#include

voidmain(){

inta,b;

floatx,y;

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

scanf("%f%f",&x,&y);

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

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

}

程序2

#include

voidmain(){

charc1,c2,c3,c4;

scanf("%c%c",&c1,&c2);

scanf("%c,%c",&c3,&c4);

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

printf("c3=%c,c4=%c\n",c3,c4);

}

(3)由键盘输入两个整数,分别计算它们的商和余数,并输出结果,要求输出商时保留两位小数。

#include

voidmain(){

inta,b,n;

floatm;

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

m=a/(b*1.0);

printf("m=%0.2f\n",m);

n=a%b;

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

}

(4)输入一个字母,输出与之对应的ASCII码,输入输出有相应的文字提示。

#include

voidmain(){

inta;

a='a';

printf("请输入一个字母\n");

scanf("%c",&a);

printf("输出该字母的ASCIIB\n");

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

}

体会:

注意格式化输入输出以及字符和数据的不同。

实验Ⅲ宏定义、条件编译程序

1实验目的与要求

(1)掌握带参数的宏定义的编程。

(2)理解文件包含的意义。

(3)掌握条件编译的编程。

2实验题目

(1)阅读以下程序,先写出程序的运算结果,再上机验证。

#include

#definef(x)x%2

voidmain(){

ints1=0,s2=0;

s1=s1+f

(1);

s2=s2+f

(2);

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

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

}

(2)用带参数的宏定义编程实现求3个数的最大数。

#include

#defineF(a,b,c)a>b?

(a>c?

a:

c):

(b>c?

b:

c)

voidmain(){

intj,k,l,max;

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

scanf("%d,%d,%d",&j,&k,&l);

max=F(j,k,l);

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

}体会:

宏定义有点难度,注意使用。

第三章

实验Ⅰif语句编程

1实验目的与要求

(1)掌握关系运算和逻辑运算,能写出正确的关系表达式和逻辑表达式。

(2)掌握if语句的3种形式,及if语句的嵌套。

2实验题目

(1)阅读以下程序,先写出程序的运算结果,再上机验证。

#include

voidmain(){

inta=0,b=0,c=1,x=0;

if(a)x=5;

else

if(!

b)

if(!

c)x=15;

elsex=25;

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

a=2;b=3;c=0;

if(a>b)x=1;

else

if(a==b)x=0;

elsex=-1;

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

}

(2)找出程序错误并改正.

该程序用来计算以下分段函数

E(-x)x>0

Y=1x=0

-e(x)x<0

#include

#include

voidmain(){

intx,y;

scanf("%d,&x");

if(x>0)y=exp(-x);

else{

if(x<0)

y=-exp(x);

elsey=1;

}

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

}

(3)用if语句编程输入三角形的三边,判断能否组成三角形,若能,则计算出三角形的面积,并且输出它是直角三角形、等腰三角形、等边三角形、一般三角形;若不能,则输出信息“输入三边不能构成三角形”。

#include

#include

voidmain(){

inta,b,c;

floats,area;

printf("请输入三角形的三边长(三边为整数):

\n");

scanf("%d,%d,%d",&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("%f\n",area);

if(a*a+b*b==c*c){

printf("它是直角三角形\n");

}

elseif(a==b&&a==c&&b==c){

printf("它是等边三角形\n");

}

elseif(a==b||a==c||b==c){

printf("它是等腰三角形\n");

}

else{

printf("一般三角形\n");}

}

else{

printf("输入的三边不能构成三角形\n");}

}

(4)编程从键盘输入一个整数,判断它是否能被3、5整除,并根据不同情况输出以下信息之一:

①该数能同时被3和5整除;

②该数能被3或5整除;

③该数既不能被3整除也不能被5整除。

#include

voidmain(){

inta;

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

if(a%3!

=0&&a%5!

=0)

printf("既不能被3整除也不能被5整除");

else{

if(a%3==0&&a%5==0)

printf("能同时被3或5整除");

else

printf("能被3或5整除");

}

}

体会:

嵌套和不嵌套有区别,我就范错误了,导致结果总不对,还有关系表达式的表达及逻辑表达式表达一定要弄清楚。

实验Ⅱswitch语句编程

1实验目的与要求

(1)掌握switch语句的形式及使用方法。

(2)学会用switch语句编程解决实际问题。

2实验题目

(1)阅读以下程序,先写出程序的运算结果,再上机验证。

#include

voidmain(){

inta=2,b=7,c=5;

switch(a>0){

case1:

switch(b<0){

case1:

printf("@");break;

case2:

printf("&");break;

}

case0:

switch(c==5){

case0:

printf("*");break;

case1:

printf("#");break;

default:

printf("#");

}

default:

printf("$");

}

printf("\n");

}

(2)用switch语句编程实现一个简单的计算器程序,输入两个数和一个运算符,根据输入的运算符进行运算,并输出结果。

#include

voidmain(){

floata,b,A;

charch;

printf("输入两个数:

");

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

printf("输入运算符(+-*/):

");

getchar();

scanf("%c",&ch);

switch(ch){

case'+':

A=a+b;break;

case'-':

A=a-b;break;

case'*':

A=a*b;break;

case'/':

A=a/b;break;

default:

printf("输入运算符错误\n");

}

printf("%f%c%f=%f",a,ch,b,A);

}

(3)根据给出的函数关系,对输入的x值计算出相应的y值,要求用switch语句实现。

0(x<0)

x(0<=x<10)

y=10(10<=x<20)

-0.5x+10(20<=x<40)

#include

voidmain(){

floatx,y;

scanf("%f",&x);

switch(x<10){

case1:

switch(x>=0){

case1:

printf("y=%f",y=x);break;

case0:

printf("y=%f",y=0);break;

}break;

case0:

switch(x>=10&&x<20){

case1:

printf("y=%f",y=10);break;

case0:

printf("y=%f",y=-0.5*x+20);break;

}

}

printf("\n");

}

注意switch语句的使用,还有break和default不能掉,注意case的使用。

实验Ⅲ循环结构

1实验目的与要求

(1)掌握while、do-while、for这3种循环语句的形式及使用方法。

(2)掌握循环嵌套的使用方法。

(3)理解break和continue语句的区别,并能正确使用。

2实验题目

(1)阅读以下程序,先写出程序的运算结果,再上机验证。

#include

voidmain(){

inti,j;

floatsum;

for(i=7;i>4;i--){

sum=0.0;

for(j=i;j>3;j--)

sum=sum+i*j;

}

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

}

(2)分别用while和do-while语句编程实现计算1~200之间的能被3整除的整数之和。

#include

voidmain(){

inti,sum;

i=1;

sum=0;

while(i<=200){

if(i%3==0)

sum+=i;

i++;

}

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

}

#include

voidmain(){

inti,sum;

i=1,sum=0;

do{

if(i%3==0)

sum+=i;

i++;

}

while(i<=200);

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

}

(3)用for语句编程实现打印如下输出形式的九九乘法表:

123456789

4681012141618

9121518212427

162024283236

2530354045

36424854

495663

6472

81

#include

voidmain(){

inti,j,sum;

i=1,j=1;

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

for(j=1;j

printf("");

}

for(j=i;j<=9;j++){

sum=i*j;

printf("%-3d",sum);

}

printf("\n");

}

printf("\n");

}

体会:

掌握3种循环结构的使用,及区别,不要混用。

C语言书上实验:

(1)#include

#include

voidmain(){

inti,x,y;

for(i=0;i<=10000;i++){

x=sqrt(i+100);

y=sqrt(i+268);

if((x*x==100+i)&&(y*y==i+268))

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

}

}

(2)#include

#include

voidmain(){

inta,b,c,s=0;

scanf("%d",&a);

b=a;

while(b!

=0){

b=b/10;

s++;

}

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

while(a!

=0){

c=a%10;

printf("%d",c);

a=a/10;

}

printf("\n");

}

(3)#include

voidmain(){

inta,b,n,i,sum=0;

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

b=a;

sum+=b;

for(i=1;i

b=b*10+a;

sum+=b;

}

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

}

(4)#include

voidmain(){

inti,j;

intr=0;

for(i=2;i<=1000;i++){

r=1;

for(j=2;j

if(i%j==0){

r+=j;

}

}

if(i==r)

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

}

}

(5)#include

voidmain(){

inti,a,b,c,d,r;

for(i=100;i<=999;i++){

a=i/100;

b=i%100;

c=b/10;

d=b%10;

r=a*a*a+c*c*c+d*d*d;

if(r==i)

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

}

printf("\n");

}

(6)#include

#include

voidmain(){

floata,x1,x2;

scanf("%f",&a);

x1=1;

x2=(x1+a/x1)/2;

while(fabs(x1-x2)>1e-5){

x1=x2;

x2=(x1+a/x1)/2;

}

printf("%f\n",x1);

}

第四章

实验Ⅰ一维数组编程

1实验目的与要求:

(1)掌握一维数组的定义、初始化与使用;

(2)掌握一维数组的输入、输出方法;

(3)学会应用一维数组编程求解问题。

2实验题目

(1)阅读以下程序,先写出程序的运算结果,再上机验证。

#include

voidmain(){

inta[11]={3,5,8,10,12,16,19,24,28,37};

intn,i,j,pos;

printf("inputn:

");

scanf("%d",&n);

if(n>a[9])

a[10]=n;

else{

for(pos=0;pos<10;pos++)

if(a[pos]>n)break;

for(j=10;j>pos;j--)

a[j]=a[j-1];

a[pos]=n;

}

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

printf("%4d",a[i]);

printf("\n");

}

(2)编程对冒泡排序方法进行改进。

冒泡排序可能出现以下情况:

设有10个数排序,按照冒泡排序算法需要9轮比较,但是由于输入的原始数据具有一定的顺序,所以可能进行3轮比较后10个数就已经排好了,而后面的6轮比较其实没有进行任何数据的交换,改进的目的就是减少后面无意义的比较轮数。

#include

#defineN10

voidmain(){

inta[N],i,j,temp;

intfloag;

printf("请输入十个数:

",N);

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

floag=0;

for(j=0;j

if(a[j]>a[j+1]){

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

floag=1;

}

}

while(floag==1)break;

for(i=0;i

printf("%3d",a[i]);

printf("\n");

}

⑶编程实现两个有序组的合并,合并后的数组存放在第3个数组中,并保持其有序性。

#include

voidmain()

{

inta[5]={1,3,6,9,12},b[5]={2,5,7,10,15};

intc[10]={0},i=0,j=0;

while(i+j<9){

if(a[i]

c[i+j]=a[i];

i++;

}

else{

c[i+j]=b[j];

j++;

}

}

if(a[4]>b[4])

c[9]=a[4];

else

c[9]=b[4];

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

printf("%d",c[i]);

printf("\n");

}

⑷找出下面程序中的逻辑错误,该程序要实现的功能是:

输入10个数放入数组a中,找出其中最小的数与数组a[0]交换,找出其中最大的与a[9]交换,最后输出交换后的结果。

#include

voidmain()

{

inti,max,min,temp,a[10];

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

scanf("%d",&a[i]);

max=0,min=0;

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

{

if(a[i]>a[max])max=i;

if(a[i]

}

temp=a[9];

a[9]=a[max];

a[max]=temp;

if(a[i]

temp=a[0];

a[0]=a[min];

a[min]=temp;

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

printf("%3d",a[i]);

}

实验Ⅱ二维数组编程

1实验目的与要求:

(1)掌握二维数组的定义、初始化与使用。

(2)掌握二维数组的输入、输出的方法。

(3)学会应用二维数组编程求解问题。

2实验题目

(1)阅读程序,写出结果,上机验证。

#include

voidmain(){

inta[3][3],i,j;

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

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

a[i][j]=i+j;

for(i=0;i<3;i++){

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

printf("%3d",a[i][j]);

printf("\n");

}

}

(2)编程将二维数组a中的每一列元素向右移动一列,而原来

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

当前位置:首页 > 求职职场 > 简历

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

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