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. DevExpress TreeList 拖动时中如何判断源节点作为目标节点的子节点还是兄弟节点

    目的:只允许同级拖动. 两个判断: 1.原节点(假设为:S)的父级如果不等于目标节点(假设为:T)的父节点,那么发生了跨级,即非同级移动.这个判断很容易. 2.S.T是同一级的,但是S是移动到T下一级 ...

  2. DevExpress WinForms使用教程:皮肤颜色和LookAndFeel

    [DevExpress WinForms v18.2下载] v18.2版本中更改了控制背景颜色和皮肤一起处理的方式.在v18.1中引入了Project Settings页面,其中包含一个skin se ...

  3. MySQL data sync to Oracle with OGG(Remote Delivery)

    MySQL to Oracle with OGG 1. Install MySQL: yum install mysql-community-server [root@localhost ~]#  y ...

  4. Thread类线程结束会唤醒使用其对象做锁而睡眠的线程

    首先回顾一下我们的基础知识. sleep: 线程睡眠,不会释放锁 wait: 线程等待.释放锁. notity: 唤醒随机一个当前对象等待的线程,并不会释放锁 notityAll: 唤醒所有当前对象等 ...

  5. Eclipse个人快捷键设置及常用快捷键

    Eclipse中字母自动提示的快捷键设置,具体如下图所示,加上大写字母A-Z 二.常用快捷键设置 (1)在java代码中按 ctrl+O 快速查看类的属性和方法列表如下所示 (2)在java代码中选中 ...

  6. 2019-04-19-day036-协程与进程池

    内容回顾 11:30 码云 :王老师检查作业+定期抽查 注册账号 考试的时间 threading.enumerate(),能够获取到当前正在运行的所有线程对象列表 守护线程 守护线程会等待所有的非守护 ...

  7. TP5 生成二维码

    首先下载这个类:http://phpqrcode.sourceforge.net/ 把下载的文件放到vendor下面 public function getWchatQrcode($users_id= ...

  8. PHP 基于pdo的数据库操作类

    http://www.php.cn/php-weizijiaocheng-404645.html <?php class Pdodb{   protected $pdo;   protected ...

  9. VB Mouse Pointer

  10. 最新版本汉化-PowerDesigner 16.6 汉化并河蟹

    更新日志: 2019-03-14 V1.1 1.支持反复多次汉化: 2.修复少许bug. 最新的16.6版本已经在汉化中了,基本上所有的菜单均已汉化完成,部分窗体还没有编译通过. 不过,不影响尝鲜使用 ...