第6章 数组-实验6-参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<N;i++)
{
for(j=0;j<i+1;j++)
printf("%-5d",num[i][j]);
printf("\n");
}
}
5、已知一个由小到大排好序的数组,现插入一个新的值,要求保持由小到大的顺序并输出。
参考程序:
#define MaxLen 20 //数组最大个数
#define CurLen 10 //数组中当前可用数据的个数
#include<stdio.h>
#include<string.h>
void main()
{
int i,j,stuNum;
double cscore[ArrLen];
char name[ArrLen][10],num[ArrLen][10],searchName[10];
printf("请输入学生人数=");
参考程序:
#define N 10
#include<stdio.h>
void main()
{
int num[N][N],i,j;
for(i=0;i<N;i++)
{
num[i][0]=1;
num[i][i]=1;
}
for(i=2;i<N;i++)
for(j=1;j<i;j++)
num[i][j]=num[i-1][j]+num[i-1][j-1];
num1=num2=num3=num4=0;
printf("请输入三行字符:\n");
for(i=0;i<3;i++)
{
gets(arr[i]);
for(j=0;arr[i][j]!='\0';j++)
{
if(arr[i][j]>='a'&&arr[i][j]<='z'||arr[i][j]>='A'&&arr[i][j]<='Z')
}
for(i=0,j=N-i-1;i<N;i++,j--)
{
total+=num[i][i];
total+=num[i][j];
}
printf("对角线和=%d\n",total);
}
3、某个学习小组有5名学生,共开设了3门课程,要求编程输入该小组所有学生各门课程的成绩,然后按照总成绩从高到低进行排序,并输出排序后的结果。
if(i==0)max=min=num[0];
if(num[i]>max)max=num[i];
if(num[i]<min)min=num[i];
total+=num[i];
}
printf("max=%d,min=%d,average=%d\n",max,min,total/10);
}
2、求一个N*N矩阵对角线元素之和。
break;
}
}
if(i==stuNum)
printf("本班无此人!\n");
}
8、输入一篇文章,包含3行文字,每行最多有20个字符,要求统计出总字符数,字母、数字、空格以及其他字符的个数。
参考答案:
#include<stdio.h>
void main()
{
char arr[3][80];
int i,j,num1,num2,num3,num4;
{
temp=score[i][0];
score[i][0]=score[j][0];
score[j][0]=temp;
temp=score[i][1];
score[i][1]=score[j][1];
score[j][1]=temp;
temp=score[i][2];
score[i][2]=score[j][2];
scanf("%s",searchName);
for(i=0;i<stuNum;i++)
{
if(strcmp(name[i],searchName)==0)
{
printf("找到的学生信息如下:\n");
printf("%-10s%-10s%-10s\n","学号","姓名","C语言");
printf("%-10s%-10s%-10.0f\n",num[i],name[i],cscore[i]);
scanf("%d",&stuNum);
for(i=0;i<stuNum;i++)
{
printf("请输入第%d个人的信息:\n",i+1);
printf("学号=");scanf("%s",num[i]);
printf("姓名=");scanf("%s",name[i]);
printf("C语言成绩=");scanf("%lf",&cscore[i]);
for(i=0;i<5;i++)
{
printf("%-10d",i+1);
for(j=0;j<4;j++)
{
printf("%-10.0f",score[i][j]);
}
printf("\n");
}
}
4、打印杨辉三角。例如,n=5时,输出以下图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 1010 5 1
order=CurLen;
//将数组order下标后面的数据后移一个位置
for(i=CurLen;i>order;i--)
{
arr[i]=arr[i-1];
}
//把数据插入到数组中
arr[order]=num;
printf("新数组:\n");
for(i=0;i<CurLen+1;i++)
{
printf("%-5d",arr[i]);
参考程序:
#include<stdio.h>
void main()
{
double score[5][4],total,temp;
int i,j;
//输入学生成绩
for(i=0;i<5;i++)
{
total=0;
printf("请输入第%d个学生的成绩\n",i+1);
for(j=0;j<3;j++)
num1++;//统计字母
else if(arr[i][j]>='0'&&arr[i][j]<='9')
num2++;//统计数字
else if(arr[i][j]==' ')
num3++;//统计空格
else
num4++;//统计其他字符
}
}
printf("%-5s%-5s%-5s%-5s%-5s\n","总数","字母","数字","空格","其他");
score[j][2]=temp;
temp=score[i][3];
score[i][3]=score[j][3];
score[j][3]=temp;
}
}
//按输出学生成绩
printf("%-10s%-10s%-10s%-10s%-10s\n","序号","课程1","课程2","课程3","总分");
{
printf("第%d门课=",j+1);
scanf("%lf",&score[i][j]);
total+=score[i][j];
}
score[i][3]=total;
}
//按总成绩排序
for(i=0;i<4;i++)
for(j=i+1百度文库j<5;j++)
{
if(score[i][3]>score[j][3])
printf("数组原顺序:\n");
for(i=0;i<Len;i++)
printf("%-5d",arr[i]);
printf("\n");
for(i=0;i<Len/2;i++)
{
temp=arr[i];
arr[i]=arr[Len-1-i];
arr[Len-1-i]=temp;
}
printf("数组新顺序:\n");
1、输入10个整数,存放在一维数组中,求出这10个数中的最大、最小值以及这10个数的平均值。
参考程序:
#include<stdio.h>
void main()
{
int num[10],i,max,min,total=0;
for(i=0;i<10;i++)
{
printf("第%d个数=",i+1);
scanf("%d",&num[i]);
}
printf("\n");
}
6、将一个数组中的值进行重新存放。例如,原来的数值为1,3,9,5,4;要求改为4,5,9,3,1。
参考程序:
#define Len 9 //数组最大个数
#include<stdio.h>
void main()
{
int arr[Len]={1,2,3,4,5,6,7,8,9},temp,i;
}
printf("学生信息为:\n");
printf("%-10s%-10s%-10s\n","学号","姓名","C语言");
for(i=0;i<stuNum;i++)
printf("%-10s%-10s%-10.0f\n",num[i],name[i],cscore[i]);
printf("请输入要查找的学生姓名=");
for(i=0;i<Len;i++)
printf("%-5d",arr[i]);
printf("\n");
}
7、输入一个班N个学生的信息,包括学号、姓名以及C语言的成绩。然后通过输入某一学生的姓名进行查找,如果找到,输出其相关的信息;如果未找到,输出“本班无此人”。
参考程序:
#define ArrLen 20
printf("%-5d%-5d%-5d%-5d%-5d\n",num1+num2+num3+num4,num1,num2,num3,num4);
}
四.实验步骤
1、程序代码:
运行结果:
2、程序代码:
运行结果:
五.实验总结
}
printf("\n");
printf("请输入要插入的数:");
scanf("%d",&num);
for(i=0;i<CurLen;i++)
{
if(num<arr[i])
{
order=i;//记录要插入值在数组中的位置
break;
}
}
if(i==CurLen) //如果插入数值比数组中所有数值都大,则插入到最后
参考答案:
参考一:
#define N 3
#include<stdio.h>
void main()
{
int i,j,num[N][N],total=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
printf("num[%d][%d]=",i,j);
scanf("%d",&num[i][j]);
#include<stdio.h>
void main()
{
int arr[MaxLen]={-10,-5,0,12,15,34,56,67,89,100},i,num,order;
printf("原数组:\n");
for(i=0;i<CurLen;i++)
{
printf("%-5d",arr[i]);
实验六数组应用
班级:学号:姓名:成绩:
一.实验目的
1.熟练掌握数组及数组元素的概念。
2.掌握一维数组、二维数组的定义、初始化以及使用。
3.掌握字符数组以及字符串的定义、初始化以及使用。
4.掌握数组相关的常用算法。
二.使用的设备和仪器
计算机+Windows XP +Visual C++6.0
三.实验内容及要求
相关文档
最新文档