当前位置:文档之家› 程序设计实验报告2

程序设计实验报告2

《C语言程序设计》实验报告
实验名称:数组应用编程
系别: 计算机系专业:计算机科学与技术班级:五班
姓名: 学号:
实验日期: 2011 年 11 月 25 日
教师审批签字:
实验7 C数组应用编程
⒈实验目的
⑴掌握一维数组和二维数组定义、赋值和输入输出的方法。

⑵掌握字符数组和字符串函数的使用。

⒉实验内容或实验题目
A:修改调试题目:
调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。

写出调试过程。

#include “stdio.h”
void main()
{ int i,n,a[10],av;
for(i=0;i<n;i++)
scanf("%d",a[i]);
for(i=0;i<n;i++)
{ printf("%d",a[i]);
if (i%3==0) printf("\n");
}
for(i=0;i!=n;i++)
av+=a[i];
printf("av=%f\n",av);
}
上面给出的程序是完全可以运行的,但是运行结果是完全错误的。

调试时请注意变量的初值问题、输出格式问题等。

请使用前面实验所掌握的调试工具,判断程序中的错误并改正。

在程序运行过程中,可以使用<Ctrl>+<Break>键终止程序的运行,返回到T C环境。

B、编程题目:(题目⑴、题目⑵为一组,题目⑶为一组,题目⑷为一组。

每个同学每组都必须完成1题)
要求:每道题目分别书写程序,试运行(如何输入,结果如何)。

题目⑴:从键盘输入10个整数存入数组,找出其中最大和最小值,并输出。

题目⑵:从键盘输入一个字符串,编写程序将该字符串逆序。

题目⑶:输出杨辉三角形(要求输出10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
………………
(提示,使用二维数组)
题目⑷:输入4×4的数组,编写程序实现:
①求出对角线上各元素的和;
②求出对角线上行、列下标均为偶数的各元素的积;
③找出对角线上其值最大的元素和它在数组中的位置。

⒊算法说明
(用文字或流程图说明。

)
⒋程序清单
A:修改调试题目:
#include "stdio.h"
void main()
{ int i,n=10,a[10];
float av,b=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{ printf("%d,",a[i]);
if ((i+1)%3==0) printf("\n");
}
printf("\n");
for(i=0;i!=n;i++)
(float)b+=a[i];
av=b/10;
printf("av=%f\n",av);
}
题目⑴:
#include <stdio.h>
main()
{
int i,n=10,a[10],max,min;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<n;i++)
if(a[i]>max)
max=a[i];
printf("最大的数为%d\n",max);
min=a[0];
for(i=1;i<n;i++)
if(a[i]<min)
min=a[i];
printf("最小的数为%d\n",min);
}
题目⑶:
#include <stdio.h>
main()
{
int i,j,n=10,a[10][10];
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=0;i<n;i++)
{
for(j=0;j<=20-2*i;j++)
{
printf(" ");
}
for(j=0;j<=i;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
题目⑷:
#include <stdio.h>
main()
{
int c,b,i,j,n=4,d=1,max,sum=0,a[4][4];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
max=a[0][0];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==j||i+j==3)
sum+=a[i][j];
if((i==j||i+j==3) && i%2==0 && j%2==0)
d*=a[i][j];
if((i==j||i+j==3) && a[i][j]>max)
{
max=a[i][j];
b=i;
c=j;
}
}
}
printf("和为%d\n积为%d\n",sum,d);
printf("对角线上最大的元素为%d\n它在数组中的位置为a[%d][%d]\n",max,b,c);
}
⒌运行结果
(包括原始数据、相应的运行结果和必要的说明。

)
A:修改调试题目:
题目⑴:
题目⑶:
题目⑷:
⒍分析与思考
调试过程及调试中遇到的问题及解决办法;调试程序的心得与体会;其他算法的存在与实践等。

若最终未完成调试,要认真找出错误并分析原因等。

总结:对数组的输入输出都要用For语句循环,同时特别注意语句中所包括的哪些循环体,要循环到哪里。

相关主题