c语言实验报告

阅读: 评论:0

2024年2月1日发(作者:)

c语言实验报告

. .. ..

c语言实验报告及建议

.

... .c

. .. ..

实验6 数组

一、实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出方法。

(2)掌握与数组有关的算法(特别是排序算法)。

(3)掌握字符数组和字符串的使用方法。

(4)能正确定义数组的指针,熟练使用指针访问数组元素。

(5)学会使用字符串的指针和指向字符串的指针变量。

(6)学会使用指针数组处理多个字符串数据。

二、实验预备知识:

三、实验容

1.观察下面给一维数组赋值有什么错误,怎样修改,写出正确运行后的结果。

#include "stdio.h"

main()

{

int i,a[3],sum=0;

scanf(“%d,%d,%d”,a);

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

sum=sum+a[i];

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

}

错误语句:scanf(“%d,%d,%d”,a);改正: scanf("%d,%d,%d",&a[0],&a[1],&a[2]);

运行结果: 1,1,1,sum=3

2.(1)补全下面的程序,程序的功能是求一位数组的中最小元素的值及其所在的下标号。

#include "stdio.h"

main()

{

int i,a[10],min,index;

(1) for(i=0;i<10;i++) /*利用一充循环给数组a赋值*/

scanf(“%d”, (2)&a[i] );

for(i=0, (3)min-a[0] ;i<10;i++) /*求数组a中的最小值min及其对应的下标index*/

if(min>a[i]){ (4) min=a[i];index=i; }

printf("MIN=%d,index=%dn",min,index);

}

. ... .c

. .. ..

(2)模仿2(1)对一个3行4列的矩阵b[3][4],求出其中最大的元素的值及其所在的行号和列号。提示:二维数组有两个下标,极值所在的行标和列表可以使用两个变量(row和col)来表示,先将它们初始化为0,最大值用max表示,先初始化为b[0][0],然后利用双重循环遍历二维数组元素,如果有比最大值大的元素,就用max记录下它的值,用row和col分别记录最新的最大值所在的行号和列号,循环结束后max记录下所出现过的最大值, row和col分别记录最大值所在的行号和列号,最后输出max、row和col的值就完成要求。

#include

void main()

{

int i,j,b[3][4],max,row=0,col=0;

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

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

b[i][j] = 0;

printf("请输入一个三行四列的矩阵:n");

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

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

{

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

}

max = b[0][0];

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

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

if(max < b[i][j])

{

max = b[i][j];

row = i;

. ... .c

. .. ..

col = j;

}

printf("最大的元素max=%d,在第 %d 行第 %d 列n",max,row+1,col+1);

return 0;

}

3.有下面一个矩阵:

10 15 4 1

23 13 8 7

2 4 8 1

22 9 6 5

编写程序,要求完成以下功能:

(1) 分别求该矩阵的主次对角线元素之和。

(2) 求该矩阵的周边元素之和。

(3) 求该矩阵主对角线及其上方元素之和。

#include

void main()

{

int a[4][4];

int i,j;

int sum1=0;//主次对角线之和

int sum2=0;

int sum3=0;//周边元素之和

int sum4=0;//主对角线及其下方的元素之和。

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

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

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

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

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

if(i==j||i+j==3)

. ... .c

. .. ..

sum1+=a[i][j];

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

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

sum2+=a[i][j];

sum3+=sum2-a[1][1]-a[1][2]-a[2][1]-a[2][2];

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

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

if(i>=j)

sum4+=a[i][j];

printf("%d %d %dn",sum1,sum3,sum4);

}

4.有两个字符串S1和S2,编程将S1串中出现的和S2串中相同的字符删掉,输出新的字符串S1。

#include"stdio.h"

#include"string.h"

main()

{int i,j,p;

char s1[80],s2[80];

gets(s1);

gets(s2);

for(i=0;i

for(j=0;j

if(s2[j]==s1[i])

for(p=i;p

{ s1[p]=s1[p+1];

puts(s1);}

puts(s1);

}

. ... .c

. .. ..

5.将字符串S1和S2中的字符按照字符ASCⅡ码由小到大的顺序连接在一起形成S3,输出S1和S2和S3。

#include

#include

void main()

{

char s1[80],s2[80],s3[160];

int i,j,n,t;

printf("请输入第1个字符串n");

gets(s1);

printf("请输入第2个字符串n");

gets(s2);

strcpy(s3,s1); strcat(s3,s2);

n=strlen(s3);

for(i=0;i

for(j=i+1;j

if(s3[i]>s3[j]){

t=s3[i];s3[i]=s3[j];s3[j]=t;

}

puts(s3);

}

. ... .c

. .. ..

实验7 函数

一、实验目的

(1)了解函数的基本结构。

(2)理解函数参数传递的机制,理解过程程序设计的思想。

(3)理解函数调用的过程。

(4)理解函数的嵌套调用和递归调用。

(5)了解局部变量和全局变量的使用方法和作用围。

二、实验预备知识:

1、

三、实验容:

1.使用调试方法跟踪程序的运行,并在后面填写执行的顺序和结果。

#include "stdio.h"

int fun(int x,int y) /*1*/

{

int z; /*2*/

z=10*x+y; /*3*/

return z; /*4*/

}

void main() /*5*/

{

int a,b,result; /*6*/

printf("nPlease input 2 numbers a, bn"); /*7*/

scanf("%d,%d",&a,&b); /*8*/

result = fun(a,b); /*9*/

printf("nThe result is=%dn", result); /*10*/

}

保存文件,编译,然后追踪运行程序,观察语句运行顺序,并观察变量x,y,a,b的值的变化。注释语句表明每行的序号,请在下面()中填入响应的语句序号以及在横线上该语句的执行结果。

程序中语句执行顺序:(5)程序执行起点→(6)a,的值为整形随机数→( 7 )

. ... .c

. .. ..

打印该语句 →(8 ) 从键盘上输入 →(9 )调用自定义函数

→(1 ) 进入自定义函数 →(2 ) 定义z的值为整形随机数

→(3 ) 把10*x+y赋值给z →(4 ) 返回z值

→(9 ) 把z值赋给result →(10 )打印语句

2.编写一个函数int isaprime( int x),函数功能是判断参数n是不是素数,是素数返回1,不是返回0.

#include

#include

int isaprime(int x);

void main()

{

int n;

printf("enter an integer n=");

scanf("%d",&n);

if(isaprime(n)==0)

printf("No!n");

else

printf("Yesn");

}

int isaprime(int x)

{

int k;

for(k=2;k<=sqrt(x);k++)

if(x%k==0)return 0;

return 1;

}

. ... .c

. .. ..

3.在第2题基础上,编写程序判断给定的数组中含有的素数的个数。源程序如下:补全程序并上机验证。(提示:判读素数的功能可以用第2题编写的函数完成)

#include

#include

int isaprime(int x)

{

int k;

for(k=2;k<=sqrt(x);k++)

if(x%k==0)return 0;

return 1;

}

int isprime(int x[10],int n)

{

int j,total=0;

for(j=0;j

if(isaprime(x[j])==1)

total++;

return total;

}

void main()

{

int i,x[10];

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

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

printf("数组中有%d个素数n",isprime(x,10));

}

. ... .c

. .. ..

4.下面程序使用递归函数实现将一个整数转化成2进制数输出。(给程序填空并添加注释)

#include "stdio.h"

void change(int i)

{if(i<0){i=-i;putchar('-');}/*负数情况的处理*/

if (i/2>=1) change(i/2);/* 递归调用*/

printf("%d",i%2);/*打印转化为2进制后每位数(从后往前)*/

}

main()

{

int i;char ch;

do{

printf("nPlease input an interger!n");/*提示输入*/

scanf("%d",&i);/*从键盘上输入*/

getchar();/*接收键盘上的输入*/

change(i);/*调用自定义函数*/

printf("nDo you want to continue? Y or N?");/*循环提示语*/

ch=getchar();/*从键盘接收回答*/

}while(ch=='y'||ch=='Y');/*循环条件*/

}

5.分析程序并填空

#include "stdio.h"

int x=10;

int f(int y)

{static int x=0;

x+=y;

printf("f:x=%dn",x);

return x;

}

main()

{ int x=6;

{int x=5;

. ... .c

. .. ..

f(x);

printf("part:x=%dn",x);

}

x=f(x);

printf("main:x=%dn",x);

}

结果是:

f:x=5

part:x=5

f:x=11

main:x=11

6.分析下面两个程序的异同,哪一个能改变a和b的值,为什么?

#include "stdio.h"

#include "stdio.h"

void swap(int x,int y)

void swap(int *x,int *y)

{int z;

{int z;

z=x;

z=*x;

x=y;

*x=*y;

y=z;

*y=z;

}

}

main()

main()

{

{

int a,b;

int a,b;

a=3;

a=3;

b=5;

b=5;

printf("a=%d,b=%dn",a,b);

printf("a=%d,b=%dn",a,b);

swap(a,b);

swap(&a,&b);

printf("a=%d,b=%dn",a,b);

printf("a=%d,b=%dn",a,b);

}

}

能改变a.b值的是右边的程序,因为右边的程序将地址传递了,而左边的程序传递的只是个复制品。. ... .c

. .. ..

关于对实验指导书的建议

实验指导书作为老师上课教学的一种辅助工具,是一种比较实用的方法,不管对于课上还是课下,对于学生而言都是很好的学习渠道。

优点:

①课上便于老师上课讲解,学生听讲理解,能达到很好的上课效率;

②学生课下也可以自己通过实验指导书自学;

③能够通过实验指导书明确的知道本章要掌握的知识,理论结合实际操作;

④有源程序,方便复制粘贴快速运行。

缺点:

①实验指导书很复杂,有些难以理解,课上时间短很难消化;

②没有备份答案,学生们往往不知道自己是否做对;

建议:

①老师在利用实验指导书上课的同时也能够结合计算机上机演示;

②老师能够在每章过后将答案发给同学,便于及时纠错整理;

③老师可以把相同或类似的题目进行归类,着重标记一定要理解的题型;

④可以不同的标记课上要做的题和课下要做的题,达到一定的效率。

总体而言,实验指导书题型多样,容丰富,能够很好地起到指导作用,是上课必要的的辅导工具,精益求精得话,会使老师同学上课更加轻松。

. ... .c

c语言实验报告

本文发布于:2024-02-01 13:20:10,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676481036883.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数组   程序   实验   使用   语句
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23