南昌大学C 语言程序设计实验报告.docx

上传人:b****5 文档编号:7661013 上传时间:2023-01-25 格式:DOCX 页数:28 大小:61KB
下载 相关 举报
南昌大学C 语言程序设计实验报告.docx_第1页
第1页 / 共28页
南昌大学C 语言程序设计实验报告.docx_第2页
第2页 / 共28页
南昌大学C 语言程序设计实验报告.docx_第3页
第3页 / 共28页
南昌大学C 语言程序设计实验报告.docx_第4页
第4页 / 共28页
南昌大学C 语言程序设计实验报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

南昌大学C 语言程序设计实验报告.docx

《南昌大学C 语言程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《南昌大学C 语言程序设计实验报告.docx(28页珍藏版)》请在冰豆网上搜索。

南昌大学C 语言程序设计实验报告.docx

南昌大学C语言程序设计实验报告

 

C语言实验报告

学院:

姓名:

学号:

专业班级:

 

2012年5月25日

 

目录

 

实验一C语言的编程环境2

实验二数据类型、运算符和表达式3

实验三顺序程序设计5

实验四控制语句....................................................................................7

实验五数组..........................................................................................13

实验六函数22

 

实验一C语言的编程环境

一.实验目的

1.初步了解C程序的编译、连接和运行的过程。

2.掌握和理解C程序的结构。

 

二.实验内容

1.使用Visualc++6.0

2.运行一个简单的C程序

三.实验环境

PC微机;

Windows操作系统;

VisualC++程序集成环境。

四.实验步骤

1.启动VC++6.0.

2.输入程序

输入以下程序

main()

{

printf(“Howareyou!

”);

}

3.运行程序

4.保存文件

5.退出VC++程序

6.打开已经存在的文件

五.思考题

总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。

答:

在编辑时速度太慢,编译时提示出现错误,运行不了,所以要仔细检查,编辑的时候要认真,不要老是漏掉字符,所以要详记c语言的语句规则。

实验二数据类型、运算符和表达式

一.实验目的

1.了解C语言中数据类型的意义;

2.掌握不同数据类型之间的赋值的规律;

3.学会有关C语言的有关运算符,以及包含这些运算符的表达式,特别是++和--运算符的使用。

4.进一步熟悉C程序的编辑环境。

二.实验内容

1.用printf函数来输入表达式运行结果

2.观察实验步骤中表达式的结果

三.实验环境

PC微机DOS操作系统或Windows操作系统VC++程序集成环境

4.实验步骤

输出以下表达式的值:

1.当x=5,y=6,z=7时

x

1

y>x输出:

1

x!

=y输出:

1

x==z-2输出:

1

x=x-2输出:

3

x>=z输出:

0

x<=z输出:

1

2.当x=0,y=-1,z=1时

x&&y输出:

0

x||y输出:

1

y&&z输出:

1

y||z输出:

1

x&y输出:

0

x|y输出:

1

以上表达式的值

3.见教材习题P3.6,3.7

P3.6运行结果:

aabbcctabc

P3.7程序如下:

#include

main()

{

charc1,c2,c3,c4,c5;

c1='C';c2='h';c3='i';c4='n';c5='a';

c1=c1+5;c2=c2+5;c3=c3+5;c4=c4+5;c5=c5+5;

Printf("%c,%c,%c,%c,%c\n",c1,c2.c3.c4.c5);

}

五.思考题

1.“=”和“==”有什么区别?

答:

=称为赋值运算符,它的作用是把一个数据赋值给一个变量;==是等号运算符,它表示的就是一个量的值。

2.“&”和“&&”、“|”和“||”有什么区别?

答:

&是按位与运算符,而&&是逻辑与运算符;‘|’是按位或运算符,而‘||’是逻辑或运算符它们的作用是不同的。

 

实验三顺序程序设计

一.实验目的

1.熟练掌握字符数据的输入输出函数getchar和putchar的使用;

2.熟练掌握格式输入输出函数scanf和printf的使用;

3.进一步熟悉C程序的编辑环境。

二.实验内容

编程实现习题P884.4、4.8、4.9

三.实验环境

PC微机

Windows操作系统

VC++程序集成环境

四.实验步骤

P88程序如下:

4.4

#include

voidmain()

{

inta,b,c;

floatx,y,z;

longintu,n;

charc1,c2;

a=3;

b=4;

c=5;

x=1.2;

y=2.4;

z=-3.6;

u=51274;

n=128765;

c1='a';

c2='b';

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

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

printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);

printf("u=%6dn=%9d\n",u,n);

printf("c1='%-2c'or%3d\n",c1,c1);

printf("c2='%-2c'or%3d",c2-32,c2);

 

}

4.8

#include

voidmain()

{

floatr,h;

floatc,s,b,v1,v2;

scanf("%f,%f",&r,&h);

c=2*3.14*r;

printf("圆2周¨¹长¡èc=%.2f\n",c);

printf("圆2面?

积ys=%.2f\n",3.14*r*r);

printf("圆2球¨°表À¨ª面?

积yb=%.2f\n",4*3.14*r*r);

printf("圆2球¨°体¬?

积yv1=%.2f\n",4.0/3*3.14*r*r*r);

printf("圆2柱¨´体¬?

积yv2=%.2f\n",(3.14)*r*r*h);

}

4.9

#include

voidmain()

{

floatc,F,a;

scanf("%f",&F);

a=5.0/9*(F-32);

printf("摄¦?

氏º?

温?

度¨¨c=%.2f",a);

}

五.实验结果和心得体会

答:

虽然一开始学写程序很难,有点吃力,而且编译的时候老是出错,运行结果有时也是出乎意料,但是我想经过自己平时的多多练习,肯定会又进步,且编程序时也不会老是犯一些低级错误,这样以后学起来也不会觉得很无趣。

 

实验四控制语句

一.实验目的

1.熟练掌握if、if…else、if…elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。

2.熟练掌握while语句、do...while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。

3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。

进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

二.实验内容

1.选择结构程序设计;

2.if语句的使用;

3.使用switch语句实现多分支选择结构;

4.三种循环语句的应用;

5.循环结构的嵌套;

6.break和continue语句的使用。

三.实验环境

PC微机DOS操作系统或Windows操作系统TurboC程序集成环境

四.实验步骤

1、编程判断输入整数的正负性和奇偶性。

#include

main()

{

intx,y;

printf("Pleaseinputainteger:

");/*输入一个整数!

*/

scanf("%d",x);

if(x<0)

printf("It'sanegativenumber!

");/*输入的数是负数!

*/

else

printf("It'sapositivenumber!

");/*输入的数是正数!

*/

y=x%2;

if(0==y)

printf("It'saevennumber!

");/*输入的数是偶数!

*/

else

printf("It'saoddnumber!

");/*输入的数是奇数!

*/

}

2.要求:

编程实现:

输入一个整数,将其数值按照①小于10,②10~99,③100~999,④1000以上四个类别分类并显示。

(1)将变量定义为整型。

(2)输入整数前,利用puts()/printf()给出提示信息。

(3)输出结果时要有必要的说明,例如:

输入358时,显示358is100to999。

(4)该程序利用if语句实现。

运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。

#include

main()

{

inta;

printf("请输入一个整数:

\n");

scanf("%d",&a);

if(a<10)printf("%dis<10\n",a);

if(10<=a&&a<100)printf("%dis10to99\n",a);

if(100<=a&&a<1000)printf("%dis100to999\n",a);

elseprintf("%dis>1000\n",a);

}

3、输入三角形的三条边a,b,c,判断它们能否构成三角形,若能构成三角形,指出是何种三角形(等腰三角形、直角三角形、一般三角形)。

#include

voidmain(void)

{

inta,b,c;

printf("请输入三个边长:

\n");

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

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

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

printf("可以构成一个直角三角形。

\n");

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

printf("可以构成一个等边三角形。

\n");

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

printf("可以构成一个等腰三角形。

\n");

else

printf("可以构成一个一般三角形。

\n");}

else

printf("不能构成三角形。

\n");

}

4.编写程序:

根据公式

,输出π的值。

要求:

(1)变量π为单精度类型,n为整型;

(2)计算当n的取值分别为20,50,100,200时的π值,说明什么问题?

(3)修改程序,不给出n值,而改为求π值,直到最后一项的数值小于10-4为止。

(4)对修改后的程序,输出π值以及总的项数n。

输出格式为:

π=值;n=值。

 

修改前:

#include

#include

main()

ntn,i=1;

floatpi,a=1,t=0,b;

scanf("%d",&n);

while(i<=n)

{b=i*i;a=6*(1/b);t=t+a;i=i+1;}

pi=sqrt(t);

printf("pi=%f\n",pi);}

说明了当输入的n越来越大的时候,π的值也越来越精确。

修改后:

#include

#include

main()

{intn,i=1;

floatpi,a=1,t=0,b;

while(a>1e-4)

{b=i*i;a=6*(1/b);t=t+a;i=i+1;}

pi=sqrt(t);

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

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

输出结果:

pi=3.137702n=246

5.从键盘输入一个0~1000之间的任意整数,输出该整数的所有因子(例如:

输入12,其因子为1,2,3,4,6,12)。

要求:

(1)采用while循环语句实现。

(2)输出格式为:

Input:

12

Output:

1,2,3,4,6,12 

程序如下:

#include

main()

{inta,b,i=1;

printf("请输入一个小于1000的整数:

\n");

scanf("%d",&a);

while(i<=a)

{b=a%i;

if(b==0)

printf("%d,",i);

i++;}

}

6.编程实现:

由用户从键盘输入一串字符(以回车键结束),统计其中数字、大、小写字母、空格、其它字符的个数。

要求:

(1)通过键盘输入字符。

(2)给出相应的输入/输出信息提示。

并按照数字、大写字母、小写字母、空格、其它字符数的顺序输出结果。

程序如下:

#include

main()

{

inti=0,m=0,n=0,k=0;

charc;

printf("请从键盘上输入字符:

\n");

while((c=getchar())!

='\n')

{

if(65<=c&&c<=90)i++;

elseif(97<=c&&c<=122)m++;

elseif(48<=c&&c<=57)n++;

elseif(c=='')k++;

}

printf("大写字母:

%d个\n小写字母:

%d个\n数字:

%d个\n空格:

%d个\n",i,m,n,k);

}

7.计算并输出1000以内最大的10个素数以及它们的和。

要求:

(1)在程序内部加必要的注释。

(2)由于偶数不是素数,可以不考虑对偶数的处理。

(3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。

(4)输出形式为:

素数1+素数2+素数+…+素数10=总和值。

程序如下:

#include"stdio.h"

#include"math.h"

intf(intx)//检查素数函数

{inti;

for(i=2;i

if(x%i==0)

return0;//不是素数返回0

return1;//是素数返回1

}

voidmain()

{inta[10],sum=0,i,j,count=0;

for(i=999,j=0;count!

=10;i-=2)//计算器等于10为循环结束条件,i-=2为只检查奇数。

if(f(i))//调用函数

{

count++;//计数器加一

a[j]=i;//赋值给数组

j++;

}

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

{sum+=a[j];//计算十个数的总和

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

if(j<9)printf("+");//前9个符号为'+'

elseprintf("=");//最后一个符号为'='

}

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

}

五.思考题

1.对于多分支选择结构何时使用if语句的嵌套,何时使用switch语句?

答:

当题目给定的条件很多时,我们就得用到if语句的嵌套;switch语句是多分支选择语句,当问题中需要用到多分支的选择时,如人口统计分类,工资统计分类等,就要用到switch语句。

2.小结三种形式的循环使用的区别。

答:

while:

它用来实现"当型"循环结构。

其一般形式如下:

while(表达式)语句

当表达式为非0值时执行WHILE语句中的内嵌语句。

其特点是:

先判断表达式,后执行语句。

do...while:

第一次执行一个语句块,然后重复循环的执行该语句块,

直到条件表达式不满足条件是停止。

for:

是用来表示循环次数已知的情况,它的使用格式为:

for(表达式一;表达式二;表达式三)循环体语句。

 

实验五数组

一.实验目的

1.掌握数组的基本概念,包括:

数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。

2.掌握字符数组与字符串的使用方法。

理解字符数组与其它数组的区别、理解字符串及其特点。

掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。

3.掌握与数组相关的算法,包括排序算法和查找算法等。

二.实验内容

有关数组的程序设计

三.实验环境

PC微机DOS操作系统或Windows操作系统TurboC程序集成环境

四.实验步骤

1.编程实现:

对任意一个一维数组,从中找出数组元素的最大值和最小值。

要求:

(1)数组为整型数组(10个元素)。

(2)使用scanf函数实现数组元素的输入。

在输入前给出必要的提示。

(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。

#include

voidmain()

{

inta[10],max,min,i;

printf("\n");

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

{

printf("Inputa[%d]:

",i);

scanf("%d",&a[i]);/*输入十个数组元素*/

}

max=a[0];

min=a[0];

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

{

if(a[i+1]>max)max=a[i+1];/*找出最大值*/

if(a[i+1]

}

printf("\nThetennumis:

");

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

{

printf("%d,",a[i]);/*原样输出数组*/

if(i==9)printf("\b\b.\n\n");/*将最后的逗号改为句号*/

}

printf("max=%-8dThemaxnumis:

",max);

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

{

if(a[i]==max)printf("a[%d],",i);/*输出数组中与最大值相等和数*/

if(i==9)printf("\b.\n");/*将最后的逗号改为句号*/

}

printf("min=%-8dTheminnumis:

",min);

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

{

if(a[i]==min)printf("a[%d],",i);/*输出数组中与最小值相等的数*/

if(i==9)printf("\b.\n");/*将最后的逗号改为句号*/

}

}

(4)如果现改为20个元素的数组,怎样修改程序?

修改程序后,运行程序进行检查。

如果需要数组元素不断改变,应怎样修改程序?

 

答:

只要将数组大小改成要求的大小,再把for循环的循环次数改成相应的就可以了。

2.编程实现:

在给定的字符串中查找满足条件的第一个字符。

要求:

(1)字符串采用初始化的方式处理。

(2)通过scanf函数读入一个任意字符。

(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。

如果不存在该字符,则要给出相应的信息。

#include

#include

main()

{intj,n;

chari;

charc[]={"Iamastudent"};

printf("给定字符串为:

%s\n请输入要查找的字符:

",c);

scanf("%c",&i);

n=strlen(c);

for(j=0;j

if((int)c[j]==(int)i)

{printf("字符串中满足条件的第一个字母为%d个字符",j+1);break;}

if(j>=n)

printf("字符串中不存在满足条件的字符");

}

3.编程实现:

首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n

n),形成n

n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:

数组不允许动态定义)。

例如:

原始数据:

n=4结果数据:

12348111416

3591035910

81114161234

1527615276

要求:

(1)本题中所涉及到的循环都采用for语句。

(2)在输入/输出时进行必要的说明。

(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。

(4)输入一个n

n矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。

(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。

(6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明。

(7)对n为3,4,5时,输入数组元素是要注意哪些问题?

执行程序,检查程序的正确性。

#include

main()

{intn,j,k,z,x,max,a[10][10];

printf("请输入一个2到10之间的数:

");

scanf("%d",&n);

printf("请输入一个n*n数组:

\n");

for(j=0;j

for(k=0;k

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

printf("原始数组为:

n=%d\n",n);

for(j=0;j

{for(k=0;k

If(a[j][k]>max)

{max=a[j][k];z=j;}

for(j=0;j

for(k=0;k

If(a[j][k]

{min=a[j][k];x=j;}

for(j=0;j

{k=a[z][j];a[z][j]=a[x][j];a[x][j]=k;

printf("结果数据:

\n");

for(j=0;j

for(k=0;k

printf("%5d",a[j][k]);

printf("\n");}}

修改程序得到最大值和最小值所在行;只需在程序末尾加上语句:

Printf(最大值在第%d行,最小值在第%d行”,z,x);

4.编程实现“折半查找”的过程。

折半查找的处理过程是:

在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找。

要求:

(1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。

(2)用scanf函数输

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

当前位置:首页 > 农林牧渔 > 林学

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

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