数组的定义和使用
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//定义一个数组,同时初始化所有成员变量
int a[10] = { 1, 2, 3 };//初始化前三个成员,后面所有元素都设置为0
int a[10] = { 0 };//所有的成员都设置为0
int a[] = { 1, 2, 3, 4, 5 };//定义了一个数组,有5个成员
#include <stdio.h> int main() { int a[] = { 1, -2, 3,- 4, 5, -6, 7, -8, -9, 10 };//定义一个数组,同时初始化所有成员变量 int i = 0; int j = 0; int n = sizeof(a) / sizeof(a[0]); int tmp; //1、流程 //2、试数 for (i = 0; i < n-1; i++) { for (j = 0; j < n - i -1 ; j++)//内循环的目的是比较相邻的元素,把大的放到后面 { if (a[j] > a[j + 1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } for (i = 0; i < n; i++) { printf("%d ", a[i]); } printf("\n"); return 0; }
//分段赋值 int a[3][4] = {{ 1, 2, 3, 4 },{ 5, 6, 7, 8, },{ 9, 10, 11, 12 }};
int a[3][4] ={ { 1, 2, 3, 4 }, { 5, 6, 7, 8, }, { 9, 10, 11, 12 } };
//连续赋值
int a[3][4] = { 1, 2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12 };
//可以只给部分元素赋初值,未初始化则为0
int a[3][4] = { 1, 2, 3, 4 };
//所有的成员都设置为0
int a[3][4] = {0};
//[]中不定义元素个数,定义时必须初始化
int a[][4] = { 1, 2, 3, 4, 5, 6, 7, 8};
字符数组与字符串区别
C语言中没有字符串这种数据类型,可以通过char的数组来替代
数字0(和字符‘\0’等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char的数组
#include <stdio.h> int main() { char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' }; //普通字符数组 printf("c1 = %s\n", c1); //乱码,因为没有’\0’结束符 //以‘\0’(‘\0’就是数字0)结尾的字符数组是字符串 char c2[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0'}; printf("c2 = %s\n", c2); //字符串处理以‘\0’(数字0)作为结束符,后面的'h', 'l', 'l', 'e', 'o'不会输出 char c3[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0'}; printf("c3 = %s\n", c3); return 0; }
字符串的初始化
#include <stdio.h> // C语言没有字符串类型,通过字符数组模拟 // C语言字符串,以字符‘\0’, 数字0 int main() { //不指定长度, 没有0结束符,有多少个元素就有多长 char buf[] = { 'a', 'b', 'c' }; printf("buf = %s\n", buf); //乱码 //指定长度,后面没有赋值的元素,自动补0 char buf2[100] = { 'a', 'b', 'c' }; printf("buf2 = %s\n", buf2); //所有元素赋值为0 char buf3[100] = { 0 }; char buf4[50] = { '1', 'a', 'b', '0', '7' }; printf("buf4 = %s\n", buf4); //使用字符串初始化,编译器自动在后面补0,常用 char buf5[] = "agjdslgjlsdjg"; //'\0'后面最好不要连着数字,有可能几个数字连起来刚好是一个转义字符 //'\ddd'八进制字义字符,'\xdd'十六进制转移字符 // \012相当于\n char str[] = "\012abc"; printf("str == %s\n", str); return 0; }
字符串的输入输出
#include <stdio.h> int main() { char str[100]; scanf("%s", str); printf("output:%s\n", str); return 0; }
字符串追加:在一个字符串屁股后面再累加一个字符串
#include <stdio.h> int main() { char str1[] = "abcdef"; char str2[] = "123456"; char dst[100]; int i = 0; while (str1[i] != 0) { dst[i] = str1[i]; i++; } int j = 0; while (str2[j] != 0) { dst[i + j] = str2[j]; j++; } dst[i + j] = 0; //字符串结束符 printf("dst = %s\n", dst); return 0; }
随机数
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a; srand((unsigned)time(NULL)); a = rand(); printf("%d\n", a); return 0; }
随机数reference:http://c.biancheng.net/view/2043.html