一、实验目的
(1)掌握一维数组和二维数组的定义、赋值和输入输出方法。
(2)掌握字符数组的使用。
(3)掌握与数组有关的算法。
二、实验内容及步骤
1、已有一个已排好序的数组,要求输入一个数,将它插入数组中,保持数组依然有序。
程序代码:
#include
int main()
{
int i,j,a,q,end,x;
int b[10]={1,3,5,6,7,8,9,10,11};
for(int i=0;i<=9;i++)
{
printf("%d ",b[i]);}
printf("\n");
printf("请输入一个数");
scanf("%d",&a);
end=b[8];
if(a>=end)
b[9]=a;
else
for(i=0;i<=9;i++)
{
if(b[i]>a)
{ j=b[i];
b[i]=a;
for(x=i+1;x<10;x++)
{
q=b[x];
b[x]=j;
j=q;
}
break;
}
} //TODO
for(i=0;i<=9;i++){
printf("%d ",b[i]);}
}
2、 检验并打印幻方矩阵
在下面的5*5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
程序代码:
#include
int main()
{
int a[5][5],sum1=0,sum2=0,sum3=0,sum4=0,b[5]={0},c[5]={0},k=0;
printf("请依次输入数组元素\n");
for(int i=0;i<5;i++)//数组输入
{
for(int j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<5;i++)//每一行和放到一个数组
{
for(int j=0;j<5;j++)
{
sum1+=a[i][j];
}
b[i]=sum1;
sum1=0;
}
for(int j=0;j<5;j++)//每一列和放到一个数组
{
for(int i=0;i<5;i++)
{
sum2+=a[i][j];//TODO
}
c[j]=sum2;
sum2=0;
}
for(int i=0;i<5;i++)
{
int j=0;
sum3+=a[i][j];
j++;
}
for(int i=0;i<5;i++){
for(int j=4;j<=0;j--)
{
sum4+=a[i][j];//TODO
}
}
if(b[1]==b[2]&&b[2]==b[3]&&b[3]==b[4]&&b[1]==b[0])
k++;
if(c[1]==c[2]&&c[2]==c[3]&&c[3]==c[4]&&c[1]==c[0])
k++;
if(sum3==sum4);
k++;
if(b[1]==c[1]&&c[1]==sum3);
k++;
if(k==4)
{printf("该数组为幻方矩阵\n");
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
printf("%-3d",a[i][j]);
}
printf("\n");
}
}
else
printf("该数组不是幻方矩阵");
}
3、完成以下程序,并进行调试
某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:1)计算每个学生的总分和平均分;
2)按总分成绩由高到低排出成绩的名次;
3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分;
4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。
程序代码:
#include
int main()
{
int score[4][30]={0},num[7][30]={0},sum[30]={0},aver[30]={0};
int a;
printf("请输入参加考试学生人数\n");
scanf("%d",&a);
printf("请输入学生学号和成绩(数学 英语 计算机)\n");
int q,w,e,r,i=0;
for(int j=0;j
4.编写一个程序,利用字符数组实现两个字符串的比较。(注意不能使用字符串比较函数strcmp())
程序代码:
#include
int main()
{
char a[100]={0},b[100]={0};
printf("请输入第一个字符串:\n");
scanf("%s",a);
printf("请输入第二个字符串:\n");
scanf("%s",b);
for(int i=0;;i++)
{ if(a[i]>b[i])
{
printf("字符串1大于字符串2");
break;
}else if(a[i]
不能
可用getch() 代替
如#include<stdio.h>
int main()
{
char a;
a=getchar();
printf("1%c1",a);
}
1.数组在“定义”时和“引用”时所带的下标有何区别?
定义下标表示的是该数组所能容纳的数组元素个数
引用时下标下标表示引用元素所在的行和列。