//
// main.m
// C4-一维数组,字符数组
//
// Created by dllo on 15/10/8.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
//#define SIZE 10;
int f(float n){
float c = 0;
if (n == 1 || n == 0) {
c = 1;
}else {
c = f( n - 1) * n ;
}
return c;
}
int main(int argc, const char * argv[]) {
int n = 0;
float y = 0;
// int f(float n);
scanf("%d",&n );
y = f( n );
printf("%.0f",y);
}
int a = 0;
定义一个数组
数组终端而每个(成员/元素)的类型为int
数组的名字叫做arr
数组中的每个变量初值为0
注意:1,arr[常量] 2 数组中的变量都是相同类型的
int arr[5] = {0};
初值的几种不同形式
int arr[5] = {0};
int arr1[5] = {1,2,3,4,5};
int arr2[5] = {1,2,3};
注意!!! 定义数组的时候一定要指定好数组中的元素个数
这种初值形式,系统会自动根据初值个数取决定数组元素值
int arr3[] = {1,2,3,4,5};
float arr[7] = {1.0};
char brr[6] = {'v','c'};
访问数组中的元素
int arr[5] = {1,2,3,4,5};
给数组中的元素赋值
注意数组中的元素编号从0开始
2为编号,专业名称叫"下标"
arr[2] = 10;
打印第四个(下标为3)元素的值
printf("%d ",arr[3]);
注意!!!!!!!越界问题!!!!!!!
数组下表从0开始,最大编号比定义少1
arr[5] = 11;
printf("%d",arr[5]);//也能打出来数但是没有超出定义范围,该数据不受保护,因为该储存地址有可能被其他程序所用,当被其他程序占用的时候,数据丢失
int i = 0;
int a[10] = {0};
for (i = 0; i <10; i++) {
a[i] = i + 1;
printf("%d ",i);
}
定义一个具有20个元素的整型数组,每个元素的取值范围在30-70之间,求数组元素的值
int arr[20] = {0};
int i = 0;
int sum = 0;
for(i = 0;i < 20;i++){
为每个元素赋值随机数
注意访问的时候,数组下标可以是变量
定义的时候,数组下标只能是常量
int ret = arc4random() % (70 - 30 + 1) + 30;
arr[i] = ret;
//元素求和
sum = sum + arr[i];
}
for(i = 0;i < 20;i++){
printf("%d ",arr[i]);
}
printf(" ");
printf("%d ",sum);
生成2个数组,每个数组都有10个元素,元素取值范围在30-70之间,,将相对应的元素求和
int a[10] = {0};
int b[10] = {0};
int sum = 0;
for(int i = 0;i < 10;i++){
a[i] = arc4random() % (70 - 30 + 1) + 30;
b[i] = arc4random() % (70 - 30 + 1) + 30;
printf("i:%d a:%d b:%d ",i,a[i],b[i]);
sum = a[i] + b[i];
printf("sum:%d",sum);
printf(" ");
}
限时代码
int a = 0;
int max = 0;
for (int i = 0; i < 10 ; i++) {
a = arc4random() % (40 - 20 + 1) + 20;
printf("%d ",a );
if (a> max) {
max = a ;
}
}
printf(" ");
printf("%d",max);
冒泡排序(万能程序)
int arr[8] = {22,13,8,2,44,3,6,66};
i控制进行几轮比较 n个数就把3换成n-1就可以
for (int i = 0; i < 8 - 1; i++) {
j 控制每轮比较多少次 ,n个数就把 4换成 n - i - 1 就可以
for (int j = 0; j < 8 - i - 1; j++) {
若当前元素大于后面的元素,交换2个变量的值
if (arr[j] < arr[j + 1]) {
交换
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for(int i = 0;i < 8;i++){
printf("%d ",arr[i]);
}
定义一个20 个元素,为每个元素赋值20-70,并进行冒泡排序
int a[20] = {0};
for (int i = 0; i < 20 ; i++) {
a[i] = arc4random() % ( 70 - 20 + 1) + 20;
}
printf("先前数组为:");
for (int i = 0; i < 20 ; i++) {
printf("%d ",a[i]);
}
printf(" ");
for (int i = 0 ; i < 20 - 1; i++) {
for (int j = 0; j < 20 - i - 1 ; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp ;
}
}
}
printf("排序后的数组:");
for (int i = 0; i < 20 ; i++) {
printf("%d ",a[i]);
}
定义一个字符型的数组
char str[] = {'y','h','c','l','g','f'};
字符串-也是一维数组,系统会自动的在后面添加结束符' ',但是仍需要多预留一个位置
char name[6] = "yuhao";
这种写法需要手动添加结束符' '
char name1[6] = {'y','u','h','a','o',' '};
char name2[] = "李金明";
char name3[] = "wangqiong";
for (int i = 0; i < 6; i++) {
printf("%c",name[i]);
}
for (int i = 0; i < 6; i++) {
printf("%c",str[i]);
}
printf(" ");
printf("%s ",name1);
printf("%s ",name2);
printf("%s ",name3);
printf("%s",str);//报错,因为没有找到