1. 初始化

char a[10] = {'1','2','3','4','5'};//指定数组大小并部分赋初值, 其余部分赋值 '\0' ,ASSIC 是 0
char b[] = {'1','2','3','4','5'};//未指定数组大小赋初值, 数组根据元素个数确定大小

  

2. 练习,字符数组把内容逆序,如: "hello" 换为 "olleh"

方法1:(把数组折半遍历和后一半交换数据)

分析:数组长 5 ,那麽只需要前两个与后两个交换即可,中间的不变 5 / 2 = 2,下标从0开始 则只需要使 a[0] 与a[4] 交换; a[1] 与 a[3] 交换

     数组长 6 ,中间的不变 6 / 2 = 3,下标从0开始 则只需要使 a[0] 与a[5] 交换; a[1] 与 a[4] 交换 ; a[2] 与 a[3] 交换即可

#include <stdio.h>
#define M 20
int main(int argc, const char *argv[])
{
   char data[M] = {0};
int i = 0;
   char ch = 0;
int len = 0;    while((ch = getchar()) != '\n') //通过getchar获取字符串,使用scanf时不能获取 ' ' 空格符
{
data[i++] = ch; //把获取的字符放在数组中     
if(len != 20) //数组不能越界, len=20时退出while循环
{     
len+=1;   
}     
else     
{     
break;     
}
} for(i = 0; i < len/2; i++) //折半交换
{
ch = data[i];
data[i] = data[len-1-i];
data[len-1-i] = ch;
}
puts(data); //回车符
return 0;
}

  

方法2:

int main(int argc, const char *argv[])
{
int i=0,j=0;
int len=0;
char ch = 0; while((ch=getchar())!='\n' && len<10)
{
in[i++] = ch;
len++;
} len = strlen(in);
for(i=len-1,j=0;i>=0;i--,j++)
{
out[j]= in[i];
}
printf("%s\n",out);
return 0;
}

3. 查找数组中最大的值

#include <stdio.h>
#define MAX 5
int main(int argc, const char *argv[])
{
int buf[MAX] = {0};
printf("请输入 5 个整数\n");
int i = 0;
for(i=0; i<MAX; i++) //终端获取值放在数组中
{
scanf("%d",&buf[i]);
} int m = 0;
int j = 0;
int tip = 0;
for(i=0;i<MAX;i++) //使用一个中间值,遍历数组比较大小,然后把最大的值放在这个中间值
{
if(m < buf[i])
{
m = buf[i]; //获取最大值,放在中间值 m 中
tip = i; //获取这个数组中最大值 的下标
}
}
printf("max = %d\n",m);
printf("tip = %d\n",tip);
return 0;
}

  

4. 冒泡排序

#include <stdio.h>
#define MAX 6 int main(int argc, const char *argv[])
{
int i = 0;
int j = 0;
int a[MAX] = {0};
int s = 0;
for(i=0;i<MAX;i++) //输入值,存在数组中<br>  
{
scanf("%d",&a[i]);  
} for(i=0;i<MAX-1;i++) //
{
for(j=0;j<MAX-1-i;j++) //每次都是从第一个数开始比较,但是最后一个可定是最大的(最小的)数据,则每次循环的最后一个数据就是最值
{
if(a[j] > a[j+1]) //最大值,下标最大 , 把最大的值依次往后移
{
s = a[j];
a[j] = a[j+1];
a[j+1] = s;
} /*
if(a[j+1] > a[j]) //最小值,下标最大 , 把最小值依次往后移
{
s = a[j];
a[j] = a[j+1];
a[j+1] = s;
}<br>                */
}
}
for(i=0;i<MAX;i++) <br>     {
printf("%d\n",a[i]);
   }
return 0;
}

  

5. 冒泡排序优化

#include <stdio.h>
#define MAX 6 int main(int argc, const char *argv[])
{
int i = 0;
int j = 0;
int a[MAX] = {0};
int s = 0;
for(i=0;i<MAX;i++)  scanf("%d",&a[i]); int min = 0;
for(i=0;i<MAX-1;i++)
{
min = j;
for(j=i+1;j<MAX;j++)
{
if(a[min] > a[j]) //min 时刻获取最小值的下标
{
min = j;
}
}
if(min != i)
{
s = a[min];
a[min] = a[i];
a[i] = s;
}
}
for(i=0;i<MAX;i++)
printf("%d\n",a[i]); return 0;
}

  

C 一维数组 冒泡排序,查最大值的更多相关文章

  1. C#-一维数组——★★冒泡排序★★

    ////★★★★★冒泡排序 ; i < a - ; i++) { ; j < a; j++) { if (age[i] < age[j]) { int zhong = age[i]; ...

  2. C# 一维数组 冒泡排序

    假设有个三个杯子    一个杯子中有一个紫色的乒乓球  一个没有  一个有红色乒乓球    杯子不能动 怎么把紫色和红色的调换呢 主要是先把紫色的放到空的杯子   在把红的放到紫色原来的杯子   再把 ...

  3. PHP里获取一维数组里的最大值和最小值

    <?php $arr = ['10','100','50','90','2','5']; $min = min($arr); $max = max($arr); echo $min.PHP_EO ...

  4. Java求一个数组中的最大值和最小值

    原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/9927186.html 今天在工作中遇到对一个已知的一维数组取出其最大值和最小值,分别用于参与 ...

  5. PHP获取以为数组中的最大值和最小值

    1.PHP获取一维数组中的最大值 <?php $a=array('1','3','55','99'); $pos = array_search(max($a), $a); echo $a[$po ...

  6. C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,

    //函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序. //相当于数组的冒泡排序. #include <stdio.h> #include <stdlib.h> ...

  7. c#部分---一维数组、冒泡排序、foreach的用法

    一维数组:2016-10-14 定义方式:{定义的时候,需要数据类型.长度!} 1.int []aa=new int [5];  表示数组里面有5个字符: 2.int []aa=new int []{ ...

  8. C语言《一维数组的学习,冒泡排序》

    #include<stdio.h> /* 一维数组的学习,冒泡排序 soulsjie 20170623 */ void main(){ int a[6]; int i,j,k; print ...

  9. html标签内部简单加js 一维数组求最大值 最小值两个值位置和数字金字塔图形

     html标签内部,简单加js <a href=""></a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

随机推荐

  1. 利用 Eclipse IDE 的强大功能远程调试 Java 应用程序

    II. Eclipse 连接套接字模式下的 VM 调用示例(具体引用实践) 说明:不管采用哪种方式,调试的源代码都在eclipse的环境下 一.调试方式一(将目标应用程序作为调试的服务器,eclips ...

  2. 运行Office 2007安装程序提示:"找不到Office.zh-cn\OfficeMUI.xml"(转载)亲测

    去网上查结果原来是Office 2007和Visual Studio 2008 Authoring Component组件相冲突,网上说用VS.Net 2008光盘WCU\WebDesignerCor ...

  3. .Net Core+Angular6 学习 第一部分(创建web api)

    . 创建.net core web api 1.1 选择一个empty 模式,里面只有简单的2个class 1.2 配置web api 的路由. 1.2.1 打开Startup.cs,首先引用conf ...

  4. 马凯军201771010116《面向对象与程序设计Java》第十一周学习总结

    一.理论知识部分 第九章  集合 1.数据结构介绍:线性结构:线性表,栈,队列,串,数组,文件.非线性结构:树,图. 散列表:又称为哈希表. 散列表算法的基本思想是:以结点的关键字为自变量,通过一定的 ...

  5. python笔记——遇到一些报错

    1.TypeError: data type not understood File "C:\Users\81476\PycharmProjects\untitled1\k-临近算法\kNN ...

  6. python爬虫教程实践1——安装scrapy

    系统:macOS Sierra 10.12.6 python版本:3.6 1.安装homebrew(以前的环境配置中有介绍过) 官网:http://brew.sh/index_zh-cn.html 2 ...

  7. sql server 字符串根据指定分隔符进行分组

    SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO --功能:分拆字符串 --参数:@String:要分拆的字符串:@Delimiter:分割符号 --返回值: ...

  8. C# Winform 国际化

    1.在Form的language属性选择中文,来制作中文界面 保存后,设置界面标题会变成如下所示,并且会出现一个zh-CN的资源文件,打开resx文件可看到相应内容 2.将Form的language属 ...

  9. Python 安装第三方库中常见问题总结

    1.安装某个库时,例如 pip install tinify 出现Permission denied时,在安装命令的最前面添加sudo 例如: sudo pip install tinify 即可. ...

  10. linux怎么实时查看目录下是否有文件生成

    inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件. inotify-tools是用 ...