哈尔滨理工大学

软件与微电子学院

实 验 报 告

(2018-2019第一学期)

课程名称:结构化程序设计(C)
班 级:软件18- 1 班
学 号:1814010130
姓 名:张立辉

哈尔滨理工大学软件与微电子学院


实验名称:数组程序设计专 业软件工程
姓 名张立辉学 号1814010130班 级软件18-1

一、 实验目的:

(1) 掌握一维数组和二维数组的定义、引用和初始化
(2) 掌握数组输入输出的方法。

二、实验内容:

(1) 用起泡法对10个整数排序。10个整数用scanf函数输入。
(2) 编程将一个数组中的值按逆序重新存放。
(3) 有一个2x3的矩阵,编程求出其中值最小的那个元素的值,以及其所在的行号和列号。
(4) 将两个字符串连接起来,不要用strcat函数。
(5) 有一篇文章,共有2行文字,每行有30个字符。要求分别统计出其中英文字母、 数字、空格以及其他字符的个数。

三、实验设备及软件环境:

计算机,Windows系统,CodeBlocks;

四、实验过程及结果:

(1):用起泡法对10个整数排序。10个整数用scanf函数输入。

#include<stdio.h>
int main()
{
    int a[10];
    int i,j,t;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\n");
    for(j=0;j<9;j++)
    {
        for(i=0;i<9-j;i++)
        {
            if(a[i]>a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        printf("%d",a[i]);
        printf("\t");
    }
    return 0;
}

(2):编程将一个数组中的值按逆序重新存放。

#include<stdio.h>
int main()
{
    int a[10];
    int i,j,t;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=0;j<9;j++)
    {
        for(i=0;i<9-j;i++)
        {
                t=a[i];
                a[i]=a[9-i];
                a[9-i]=t;
        }
    }
    for(i=0;i<10;i++)
    {
        printf("%d\t",a[i]);
    }
    return 0;
}

(3):有一个2x3的矩阵,编程求出其中值最小的那个元素的值,以及其所在的行号和列号。

#include<stdio.h>
int main(void)
{
    int a[2][3];
    int i,j,sun,x,y;
    sun=a[0][0];
    for(i=0;i<2;i++)
    {
        for(j=0;j<3;j++)
        {
            scanf("%d",&a[i][j]);
            if(sun>a[i][j])
            {
                sun=a[i][j];
                x=i+1;
                y=j+1;
            }
        }
        printf("\n");
    }
    printf("%d\n%d\n%d\n",sun,x,y);
    return 0;
}

(4):将两个字符串连接起来,不要用strcat函数。

# include <stdio.h>
int main()
{
   char str1[80],str2[40];
   int i=0,j=0;
   printf("请输入第一个字符串:\n");
   gets(str1);
   printf("请输入第二个字符串:\n");
   gets(str2);
   while(str1[i]!='\0')
      i++;
   while(str1[j]!='\0')
      {
         str1[i]=str2[j];
         i++;
         j++;
      }
  str1[i]='\0';
  printf("连接后字符串为:\n%s",str1);
}

(5):有一篇文章,共有2行文字,每行有30个字符。要求分别统计出其中英文字母、 数字、空格以及其他字符的个数。

#include<stdio.h>
int main(void)
{
    int i,j,zimu=0,shuzi=0,kongge=0,zifu=0;
    char a[2][31];
    for(i=0;i<2;i++)
    {
        for(j=0;j<31;j++)
        {
            scanf("%c",&a[i][j]);
            if(a[i][j]>=65&&a[i][j]<=90)
                zimu++;
            else if(a[i][j]>=97&&a[i][j]<=122)
                zimu++;
            else if(a[i][j]>=48&&a[i][j]<=57)
                shuzi++;
            else if(a[i][j]==32)
                kongge++;
            else
                zifu++;
        }
    }
    printf("字母%d数字%d空格%d字符%d",zimu,shuzi,kongge,zifu);
    return 0;
}

代码均构建并运行成功并测试多次;

五、总结:

经过本次实验,对数组程序设计有了更深一步认识,并了解到了自己的不足在哪方面,日后应针对该方面进一步加强练习

实验成绩: 指导教师:

最后修改:2021 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏