《C程序设计》上机实验报告(四)之一维数组

news2024/11/28 10:41:48

1.运行程序

#include <stdio.h>

void main( )

{ int a[5],i,j;

  for(i=1;i<5;i++)  a[i]=0;

  for(i=1;i<5;i++)

         for(j=1;j<5;j++)

         a[j]=a[i]+1;

  printf("%d %d\n",a[0],a[3]);

}

要求:

(1)输入并调试上述源程序,对源程序进行编译、连接。

(2)运行并将结果填入表5-1。

(3)分析数组的定义、初始化过程以及结果的关系。

表5-1 程序测试及结果分析

运行结果

分    析

a;数组名;5:常量表达式,a[5]表示数组有五个元素。

2.程序填空

下面程序的功能是将两个有序(由小到大排列)数组中的数据合并到一个数组中,要求合并后的数组依然是由小到大顺序排列,最后输出排序后数组内容。数组中以数据0表示数据的结束。试在横线处填上正确的内容,以实现程序功能。

#include <stdio.h>

void main( )

{ int a[10]={1,4,7,17,23,0};

  int b[10]={2,6,9,10,15,24,45,72,0};3

  int i,j,k,c[20];

  i=j=k=0;

  while ((a[i]!=0)&&(b[j]!=0))

  {

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

      {   c[k]=         1         ;

          i++;

      }

      else

      {   c[k]=         2         ;

          j++;

      }

      k++;

  }

  if(a[i]==0)

     while(b[j]!=0)  c[k++]=b[j++];

  if(b[i]==0)

     while(a[j]!=0)  c[k++]=a[j++];

  c[k]=0;

  for(i=0;i<=k-1;i++)  printf("%3d",c[i]);

  printf("\n");

}

要求:

(1)输入并调试上述源程序,对源程序进行编译、连接。

(2)运行并将结果填入表5-2。

(3)分析数组的定义、初始化过程以及与结果的关系。

表5-2 程序测试及结果分析

1

2

填空内容

 a[i]

b[j]

输出数据

结果分析

3. 按照如下方式从头到尾逐字符地对输入字符串is进行处理,以生成输出字符串os并作为结果输出:

(1)若is的当前字符不是数学字符,则将该字符复制到输出字符串os中。

(2)若is的当前字符是一个数学字符,且假定其大小值为n,则将该数字字符替换为n+1个相关字母并存放到输出字符串os中:字符0替换为1个a,字符1替换为2个b,字符2替换为3个c,……,字符9替换为10个j。

例如:当输入字符串为“s1k02”时,输出字符串应为“sbbkaccc”;

      当输入字符串为“abc5uf20t”时,输出字符串应为“abcffffffufcccat”;

程序:

#include<stdio.h>

int main()

{

 char is[1000], os[1000];

 int len, len1;

 int i = 0;

 int j = 0;

 int m;

 gets_s(is);

 len = strlen(is);

 while (i < len)

 {

  if (is[i] >= '0' && is[i] <= '9')

  {

   len1 = is[i] - '0';

   for (m = 0; m <= len1; m++)

   {

    os[j++] = 'a' + len1;

   }

   i++;

  }

 else

   os[j++] = is[i++];

 }

 os[j] = '\0';

 puts(os);

 }

4. 编写程序

编写一个程序,对10个整数排序并统计其中素数的个数(要求10个整数从键盘输入)。

程序:

#include<stdio.h>

int main()

{

    int a[10];

    int i, j, temp, sum = 0;

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

        scanf_s("%d", &a[i]);//赋值

       //排序 冒泡法

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

        for (j = 0; j < 9 - i; j++)

            if (a[j + 1] > a[j])

            {

                temp = a[j + 1];

                a[j + 1] = a[j];

                a[j] = temp;

            }

    //输出一次排好序的数组

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

        printf("%4d", a[i]);

    //找素数

    printf("\n");

    for (i = 0; i < 10; i++)//a[i]=6  2,到4

    {

        int m;

        for (int m = 2; m <= a[i] - 1; m++)

            if (a[i] % m == 0) break;

        if (m > a[i] - 1)

        {

            printf("%d YES\n", a[i]);

            sum = sum + 1;

        }

    }

printf("共有素数%2d个", sum);

    return 0;

}

5.编写程序

已知一个有15个整数组成的一维数组a,另输入一个整数x。编写一个程序,判断x是否在数组a中。若是,给出信息 “YES!;否则,给出信息“NO!”。

程序:

#include<stdio.h>

int main()

{

 int a[15] = { 1,2,3,4,5,6,7,8,9,10,16,23,42,56,77 };

 int low = 0, mid, high = 14, x;

 printf("请输入要查找的数x=");

 scanf_s("%d", &x);

 do

 {

  mid = (low + high) / 2;

  if (x == a[mid])

  {

   printf("YES!\n"); break;

  }

  else if (x > a[mid])low = mid + 1;

  else high = mid - 1;

 } while (low <= high);

 if (low > high)printf("NO!\n");

}

6.编写程序

用数组来处理求Fibonacci数列问题。编程输出数列的前40项,要求每行输出5个数据,每个数据输出时占8列宽度。

程序:

#include<stdio.h>

int main()

{

 int i;

 int f[40] = { 1,1 };

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

  f[i] = f[i - 2] + f[i - 1];

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

{

  if (i % 5 == 0)printf("\n");

  printf("%8d", f[i]);

 }

 printf("\n");

 return 0;

}

7.编写程序

编写一个程序,求10个整数中最大、最小值及所处的位置。

程序:

#include <stdio.h>

int main()

{

 int a[10], i, p = 0, q = 0, max, min;

 printf("输入10个整数:");

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

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

 max = a[0];

 min = a[0];

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

 {

   if (max < a[i])

   {

     max = a[i];

    p = i;

   }

  if (min > a[i])

  {

   min = a[i];

   q = i;

  }

 }

 printf("最大值为 % d, 对应的下标为 % d; 最小值为 % d, 对应的下标为 % d\n", max, p, min, q);

}

8.编写程序

编写程序,输入正整数m,它代表人民币的m元。试求得这样一个方案,使用最小张数的人民币(如k张),凑成上述的钱数m,并输出求得结果。注意,目前共有7种元以上面

值的人民币纸币,其面值分别为:100、50、20、10、5、2、1。

序执行后的输入输出交互界面可设计为:

m=? 192↙

1(100)   1(50)  2(20)  1(2)

最小张数k=5

程序:

#include<stdio.h>

int main()

{

 int m;

 int a[7] = { 100,50,20,10,5,2,1 };

 static int b[7];

 printf("请输入数m=");

 scanf_s("%d", &m);

 for (int i = 0; i < 7; i++)

 {

  b[i] = m / a[i];

  m = m % a[i];

 }

 for (int j = 0; j < 7; j++)

 {

  if (b[j] == 0)continue;

  printf("%3d (%3d)", b[j], a[j]);

 }

 return 0;

}

9.编写程序

将输入的十进制正整数转换为罗马数据。假设罗马数据中只使用“基值”字母:M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。

例如:十进制数1985应转换为罗马数据MDCCCCLXXXV

程序:

#include<stdio.h>

int main()

{

 int a[7] = { 1000,500,100,50,10,5,1 };

 int b[7] = { 0 };//放有几个1000,500

 char c[7] = { 'M','D','C','L','X','V','I' }; //定义字符型的一维数组,数组类型 数组名[数组长度]  赋值方法有三种:直接赋值,间接赋值(用键盘)

int n;

 printf("请输入一个十进制整数n:");

int n;

 printf("请输入一个十进制整数n:");

 scanf_s("%d", &n);//1985

for (int i = 0; i < 7; i++)

 {

  if (n >= a[i])

  {

   b[i] = n / a[i];

   n = n % a[i];

  }

 }

 for (int j = 0; j < 7; j++)//j=0,j=1

 {

  for (int k = 0; k < b[j]; k++)// b[j]  k=0<b[0]  k=1<b[0]  k=0,0<b[1]

  {

   printf("%c", c[j]);

  }

 }

 return 0;

}

10.编写程序

用折半查找方法,在元素呈升序排列的具有15个元素的数组a中,查找值为key的那个元素的序号(即下标号)并输出,其中key值通过健盘输入。若数组中没有值为key的元素,则提示信息“No such element!”。

所谓的折半查找方法如下:先key值与处于15个元素“中间”的那个元素进行比较,若恰好相等,则那个“中间”元素的序号即为所求;若key值大于那个“中间”元素,则将查找范围缩小到数组的后一半去继续查找,否则将查找范围缩小到前一半去继续查找。

程序:

#include<stdio.h>

int main()

{

 int a[15], i, key;

 //赋值

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

  a[i] = i + 1;



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

//折半

 printf("%3d", a[i]);

 printf("\n");

 scanf_s("%d", &key);

//折半

 int low = 0;

 int high = 14;

 int mid = 0;

 while (low <= high)

 {

  mid = (low + high) / 2;

  if (key < a[mid]) high = mid - 1;

  if (key > a[mid]) low = mid + 1;

  if (key == a[mid]) break;

 }

 if (low > high)

  printf("No such element!");

 else printf("key 在数组中的下标为:%d\n", mid);

 return 0;

}

程序测试及运行结果:

3.

4.

5.

6.

7.

8.

9.

10.

结果分析与讨论:

1.通过实验总结一维数组的定义、初始化的语法形式。

答:

        定义:类型说明符  数组名 [常量表达式];

        初始化的语法形式:
        (1).完全初始化     
        int a[5] = { 1, 2, 3, 4, 5 };
        (2).部分初始化,没有赋值的元素默认值为0    
        int a[6] = { 1, 2, 3 };前三个分别赋值为1,2,3,后边没赋值他们就为0。
        (3).不指定数组长度,系统会根据元素个数定义数组的长度。
int a[] = { 1, 2, 3, 4, 5 };

2.理解求极值、排序、查找、数组合并等算法的设计思想,对这些算法进行分析、总结,找出其特点。

答:

        可以先画N-S流程图,在根据流程图写代码。

        将数组初始化,可进行一定的赋值,通过冒泡法,折中查找法进行排序和查找以及数值的比较。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装 vant-ui 实现底部导航栏 Tabbar

本例子使用vue3 介绍 vant-ui 地址&#xff1a;介绍 - Vant 4 (vant-ui.github.io) Vant 是一个轻量、可定制的移动端组件库 安装 通过 npm 安装&#xff1a; # Vue 3 项目&#xff0c;安装最新版 Vant npm i vant # Vue 2 项目&#xff0c;安装 Vant 2 npm i vantlatest-v…

数据可视化 pycharts实现中国各省市地图数据可视化

自用版 数据格式如下&#xff1a; 运行效果如下&#xff1a; import pandas as pd from pyecharts.charts import Map, TreeMap, Timeline, Page, WordCloud from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.globals im…

api接口1688商品详情接口采集商品详情数据商品价格详情页数据可支持高并发调用演示示例

接入1688商品详情API接口的步骤如下&#xff1a; 注册账号&#xff1a;首先&#xff0c;你需要在1688开放平台注册一个账号。 创建应用&#xff1a;登录后&#xff0c;在控制台中找到“我的应用”&#xff0c;点击“创建应用”。 获取API密钥&#xff1a;创建应用后&#xff…

C语言数据结构之二叉树

少年恃险若平地 独倚长剑凌清秋 &#x1f3a5;烟雨长虹&#xff0c;孤鹜齐飞的个人主页 &#x1f525;个人专栏 &#x1f3a5;前期回顾-栈和队列 期待小伙伴们的支持与关注&#xff01;&#xff01;&#xff01; 目录 树的定义与判定 树的定义 树的判定 树的相关概念 树的运用…

网络工程师必学知识:2、IPv4和IPv6地址划分

网络工程师必学知识&#xff1a;2、IPv4和IPv6地址划分 1.概述&#xff1a;2.IPv4&#xff1a;地址划分&#xff1a;有类划分&#xff0c;无类划分。一、有类划分&#xff1a;分为5类。ABCDE&#xff0c;掩码分别位8、16、24、28、27取值范围&#xff1a;出类别bit不变&#xf…

我是赵士杰,自述我的 Java 之旅:四年编码,千言万语中成长

你好我的朋友&#xff0c;请先容许我作一个简单介绍&#xff1a;我是赵士杰&#xff0c;一名 Java 攻城狮&#xff0c;欢迎关注我的微信公众号【技术人阿杰】。 不知不觉中&#xff0c;我在撰写技术博客领域已经投入了四年的精力&#xff0c;这也让我从一个默默无名之辈成长为了…

种草日记|林曦老师的冬日好物分享

冬天将尽春天就要来了&#xff0c;换季的时候最容易引起皮肤干燥、头发毛躁不舒服的问题&#xff0c;今天就来说说林曦老师推荐的冬日护理爱用好物。大家都要“如婴儿乎”&#xff0c;照顾好自己哦&#xff5e;      1、Aco甘油保湿霜    Aco甘油保湿霜好大一罐&#x…

《Vue3 基础知识》 使用 GoGoCod 升级到Vue3+ElementPlus 适配处理

此篇为 《Vue2ElementUI 自动转 Vue3ElementPlus&#xff08;GoGoCode&#xff09;》 的扩展&#xff01; Vue3 适配 Vue3 不兼容适配 Vue 3 迁移指南 在此&#xff0c;本章只讲述项目或组件库中遇到的问题&#xff1b; Vue3 移除 o n &#xff0c; on&#xff0c; on&#…

【Web前端实操21】商城官网_白色导航

今日份实现白色导航栏部分&#xff0c;也就是第三部分&#xff0c;效果如图中划线所示&#xff1a; 本次实现代码如之前的全局样式不再赘述&#xff0c;如有需要可以去我博客的Web前端实操19或者20自行查看。 本次主要更新mi.css和index.htm。 实现导航栏所需要的CSS样…

【图解面试】深入解析数据类型转换

将值从一种数据类型转换到另一种数据类型通常称为数据类型转换。在面试过程中大多数都是以代码输出题出现&#xff0c;但是要了解到具体的转换规则&#xff0c;彻底搞懂底层原理&#xff0c;才能应对变来变去的值类型~ 转布尔类型 Boolean类型有两个字面值&#xff1a; true …

调整Activation Function参数对神经网络的影响

目录 介绍&#xff1a; 数据集&#xff1a; 模型一&#xff08;tanh&#xff09; &#xff1a; 模型二&#xff08;relu&#xff09;&#xff1a; 模型三&#xff08;sigmoid&#xff09; &#xff1a; 模型四&#xff08;多层tanh&#xff09;&#xff1a; 模型五&am…

使用“快速开始”将数据传输到新的 iPhone 或 iPad

使用“快速开始”将数据传输到新的 iPhone 或 iPad 使用 iPhone 或 iPad 自动设置你的新 iOS 设备。 使用“快速开始”的过程会同时占用两台设备&#xff0c;因此请务必选择在几分钟内都不需要使用当前设备的时候进行设置。 确保你当前的设备已连接到无线局域网&#xff0c;并…

一篇带你彻底搞懂 Python 编程进阶之闭包

前言 在Python编程语言中&#xff0c;闭包是强大而灵活的语法&#xff0c;它为开发者提供了一种优雅而高效的方式来处理函数和代码结构。作为自动化测试和测试开发同学&#xff0c;弄懂它的作用及工作原理很有必要&#xff0c;面试中提及到的概率非常之大。 关于函数名的本质 …

APT攻击是什么?如何进行防护

随着网络技术的飞速发展&#xff0c;APT&#xff08;Advanced Persistent Threat&#xff09;攻击已经成为网络安全领域的一个重大问题。APT攻击是一种高度复杂的网络攻击&#xff0c;其目标是长期潜伏并逐步深入到目标网络中&#xff0c;以窃取敏感信息、破坏关键基础设施或制…

MyBatis 的注解实现方法

MyBatis 的注解实现方法 MyBatis 的注解实现方法引入依赖添加配置创建表创建实体类创建mapper接口InsertDeleteSelectResults和ResultMap通过配置文件解决 UpdateOptions MyBatis 的注解实现方法 引入依赖 在springBoot项目中下载了EditStarters插件的,可以直接在配置文件处右…

幻兽帕鲁怎么选择服务器

想要部署属于自己的幻兽帕鲁&#xff0c;首先需要拥有一台服务器&#xff0c;服务器是幻兽帕鲁运行的基础。游戏所需的服务器取决于游戏的规模、用户数量和功能需求。以下是一些通常需要考虑的服务器要求&#xff1a; 计算性能&#xff1a;包括cpu、内存、硬盘&#xff0c;cpu…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextPicker组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之TextPicker组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TextPicker组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不…

C++基础语法学习笔记

C Tutorial 1.基础语法 C 应用&#xff1a;操作系统、图形用户界面和嵌入式系统 C和C区别&#xff1a;C支持类和对象 C语法 #include <iostream> using namespace std;int main(){cout << "hello world!";return 0; }int main () { cout << &q…

vue之elementUi的el-select同时获取value和label的两种方法

一、通过ref的形式&#xff08;推荐&#xff09; <template><div class"root"><el-selectref"optionRef"v-model"value"placeholder"请选择"style"width: 250px"><el-optionv-for"item in optio…

Kubernetes实战(二十三)-k8s event监控利器kube-eventer对接企微告警

1 背景 监控是保障系统稳定性的重要组成部分&#xff0c;在Kubernetes开源生态中&#xff0c;资源类的监控工具与组件监控比较多。 cAdvisor&#xff1a;kubelet内置的cAdvisor&#xff0c;监控容器资源&#xff0c;如容器cpu、内存&#xff1b;Kube-state-metrics&#xff1…