码农小屋 码农小屋
  • 首页
  • 文章
    • Python
    • 计算机基础
    • C语言
    • Java
    • 数据库
    • Linux
  • 资源
  • 随笔
  • 优秀软件
  • 24h新鲜事
  • 专题
  • 留言板
  • 注册 登录
立即登录
0文章
0评论
0获赞
  • 首页
  • 博客中心
    • 文章
    • 资源
  • 随笔
  • 优秀软件
  • 24h新鲜事
  • 专题
  • 留言板
主页 › 文章 › C语言 › C语言实验——合并表记录
#C语言#

C语言实验——合并表记录

4月前
145 0 0

题目

数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

要求

  • 输入描述:先输入键值对的个数,然后输入成对的index和value值,以空格隔开
  • 输出描述:输出合并后的键值对(多行)

设计思路

本道题的目的是对相同的表索引求和并按表索引升序排序。按照题目思路是先合并再进行排序。但由于输入的表索引是杂乱无章的,很难进行系统的合并,特别容易疏漏,所以直接合并就显得似乎有些困难。但如果先对表索引进行排序的话,只有临近的表索引才有可能相同,这样就比较容易合并,不会有遗漏。所以先排序再合并,这样的思路也比较清晰,编写起来也相对简单,代码比较简洁。

模块设计

  • 升序排序 采用冒泡法对表索引进行升序排序
  • 合并数值 先比较两个的表索引是否相等,如果相等,第二个数值就等于前一个数值加上它本身,并指向下一个表索引,这样数值就合并了,如果不相等,则依次输出表索引和数值
  • 输出数据 采用一边比较表索引一边按相应格式输出表索引和数值的方法

源程序清单

#include<stdio.h>
int main()
{
    /*定义变量*/
    int index[1000],value[1000];  
    int i,j,n;
    int temp1,temp2;
    printf("请输入表格行数:\n");
    while(scanf("%d",&n)!=EOF)
    {
	printf("请输入表格数据:\n");
	for(i=0;i<n;i++)
	{
	    /*输入数据*/
	    scanf("%d%d",&index[i],&value[i]);  
	}
	for(i=0;i<n-1;i++)
	{
	    for(j=i+1;j<n;j++)
	    {
	        /*冒泡法排序*/
		if(index[i]>index[j])  
		{
		    temp1=index[i];
		    index[i]=index[j];
		    index[j]=temp1;
		    temp2=value[i];
		    value[i]=value[j];
		    value[j]=temp2;
		}
	    }
	}
	printf("\n");
	printf("结果为:\n");
	for(i=0;i<n;i++)
	{
	    /*合并相同表索引的数值*/
	    while(i<n&&index[i]==index[i+1]) 
	    {
	        value[i+1]=value[i]+value[i+1];
	        i++;
	    }
	    /*按格式输出数据*/
	    printf("%d %d\n",index[i],value[i]); 
	}
    }
return 0;
}

最终程序效果

C语言实验——合并表记录-码农小屋
C语言实验——合并表记录-码农小屋
0
Mr Gu
相关文章
C语言 * 与 &
C语言中的“>>”和“<<”
C语言基础知识
C语言和C++的区别
C语言简介
评论 (0)
再想想
Mr Gu管理员
Better late than never.
45文章 1评论 51获赞
文章推荐
ZIP Pro 3 – 文件压缩分享加密管理套件
2月前
Uninstall Tool-专业的软件卸载工具
3月前
Speccy:优秀的硬件检测工具
3月前
CleanMyPC-专为 Windows打造的清理工具
4月前
Internet Downloader Manager-一款专业的Win下载工具
4月前
Wise Care 365-Windows 系统清理和加速工具
4月前
新鲜事
新Mac太牛:在电脑上运行iPhone、iPad的软件、游戏
2月前
自从苹果M1芯片发布之后,使用这颗芯片的Mac电脑,就被大家认为是有史以来最强的Mac,因为这颗小米的芯片,在性能上已经打败了苹果使用的最高端的i9芯 ...[阅读全文]
苹果发布会总结:一个芯片,三款产品!苹果这把棋下得可真深
2月前
北京时间11月11日凌晨2点,苹果在圣何塞召开了本年度最后一场发布会。在这次发布会上,苹果推出了基于ARM架构的全新M1自研处理器。 ...[阅读全文]
荣耀命运落定:救了自己,也救华为
2月前
华为出售荣耀一事终于落槌。 ...[阅读全文]
发布会停不下来,苹果下月发布新Mac
3月前
今年的苹果有些与众不同,往年只开一次秋季发布会,今年在九月十月连开两场。 ...[阅读全文]
iPhone 12 开启 5G 续航锐减,苹果回应
3月前
对于今年的 iPhone 12 来说,除了回归直角边框设计之外,最大的亮点就是 5G 了。 ...[阅读全文]
华为Mate40正式发布
3月前
定位高端旗舰的华为Mate40系列共发布四款新机:华为Mate40(6.5英寸)、华为Mate40 Pro(6.76英寸)、华为Mate40 Pro+ ...[阅读全文]
更多
  • 专题
  • 文章
  • 友情链接
  • 留言板
Copyright © 2020-2021 码农小屋. 苏ICP备20033168号