您的位置:首页 > 编程语言 > C语言/C++

c语言==一维数组与二维数组(2)

2016-07-07 17:34 435 查看
今天复习了数组内容。

包括一维数组,二维数组,字符数组,字符串等内容。

一维数组

形式就是int a[常量(可缺省)]={1,2,3}

冒泡排序

设数组个数为n,则冒泡排序要比较n-1次

在某一次比较中。将其可以比较的最后一个数与前面所有的数进行比较。

最终将数组全部比较,形成升序或降序排列。

#include <stdio.h>

int main()
{
int i;
int j;
int temp;

int a[6] = {1, 4, 6, 2, 7, 0};

for(j = 0; j < 5; j++)
{
for(i = 5; i > j; i--)
{
if(a[i-1] > a[i])
{
temp = a[i];
a[i] = a[i-1];
a[i-1] = temp;
}
}
}

for(i = 0; i < 6; i++)
{
printf("%d\t" , a[i]);

if (i == 5)
{
printf("\n");
}
}

return 0;
}


输入星号三角形

首先是书上有一道题目是这样的,让我输出如下的星号三角形。



当时我想的是自己键入有多少行。

先输出前面所有的\t,再输出※,再输出※间的\t,直到输出完所有的※

但是我才疏学浅,敲不对。

于是看了书上的答案。发现他就是描述了这个图而已。在定义二维数组的时候给他初始化了,{ {……},{……},{……} }。是※就打出来,不是※就直接’ ‘,然后输出的时候一股脑输出就可以得到正确答案了。

但是我的那个方法还没有得到答案,于是我就百度了。百度上好像也没有我这样奇葩的想法。是如下的这种星号三角形。星号之间没有空格。



大概思想就是把前面的空格先输出出来,然后输出※就可以了。不需要输出※间的空格

#include <stdio.h>

int main()
{
int i;
int j;
int h;

printf("请输入三角形的高\n");
scanf("%d" , &h );

for(i = 0; i < h; i++)
{
for(j = 0; j < h - i; j++)
printf(" ");
for(j = h - i; j < h + i + 1; j++)
printf("*");
printf("\n");
}

return 0;
}


然后我又尝试了一下星号之间有空格的情况



#include <stdio.h>

int main()
{
int i;
int j;
int h;

printf("请输入三角形的高\n");
scanf("%d" , &h );

for(i = 0; i < h; i++)
{
for(j = 0; j < h - i - 1; j++)
printf("\t");
for(j = h - i - 1; j < h + i; j++)
printf("*\t");
printf("\n");
}

return 0;
}


二维数组

形式是 int a[][]={ {1,2,3} , {4,5,6} }

倒置二维数组

只需将行数变为列数,列数变为行数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息