//
// main.m
// C4–一维数组
//
// Created by dllo on 15/7/3.
// Copyright (c) 2015年 Gaozi. All rights reserved.
//
printf(“主人,请您输入您喜欢的两个数吧!\n”);
int m = 0, n = 0;
scanf(“%d%d”,&m,&n);
int max = m > n ? m : n;
//用来保存找到的最小公倍数
int minnum = 0;
for (int i = max; i > 0; i++) {
if (0 == i % m && 0 == i % m) {
minnum = i;
break;
}
}
printf(“最小公倍数%d\n”,minnum);
printf(“主人,请您输入您喜欢的两个数吧!\n”);
int m = 0, n = 0;
scanf(“%d%d”,&m,&n);
int min = m < n ? m : n;
int maxnum = 0;
for (int i = min; i > 0; i–) {
if (m % i == 0 && n % i == 0) {
maxnum = i;
break;
}
}
printf(“最大公约数%d\n”,maxnum);
printf(“主人,请您输入您喜欢的两个数吧!\n”);
int m = 0, n = 0;
scanf(“%d%d”,&m,&n);
while (m % n != 0) {
int temp = m % n;
// 把n的数给m
m = n;
// 结果给n;
n = temp;
}
printf(“最大公约数%d\n”,n);
// 相同数据类型成员组成的一组数据.
//数组元素访问: a[0];数组下标从0开始,到数组个数-1;
//下表可以是常量,也可以是变量.
//int arr[5] = {1,2,3,4,5,6};//[5]指的是数组里面元素个数即长度.
// 若数组多加了一个元素,则为数组溢出.可以改成int arr[].
//printf("%d\n",arr[5]); //c语言中系统面对数组越界会产生一个警告,当前访问的元素超过了数组下标的最大值;而在oc中程序会产生崩溃现象.
int arr[5] = {2, 1};
for (int i = 0; i < 5 ; i++) {
printf(“%d\n”,arr[i]);
}
//1、定义⼀一个具有20个元素的整型数组,每个元素的取值范围是30-70之间,求数组元素的和。找最大值和最小值和他们的下标位置.
int arr[] = {};
// 定义数组的合
int sum = 0;
//定义数组中最大数和最小值
int max = 0;
int min = 70;
//定义数组的最大最小值位置.
int maxindex = 0;
int minindex = 0;
for (int i = 0; i < 20; i++) {
arr[i] = arc4random() % (70 - 30 + 1) + 30;
printf(“%d\n”,arr[i]);
sum = arr[i] + sum;
if (max < arr[i]) {
max = arr[i];
maxindex = i;
}
if (min > arr[i]) {
min = arr[i];
minindex = i;
}
}
printf(“他们的和为%d\n”,sum);
printf(“其中最大数为%d,其下标为%d\n”,max,maxindex);
printf(“其中最小数为%d,其下标为%d\n”,min,minindex);
printf(“小主,请您告诉奴婢您想需要的数组元素个数:\n”);
int a = 0, b = 0;
int num = 0;
scanf(“%d”,&num);
printf(“小主,请您确定您想输入数组数的范围:\n”);
scanf(“%d%d”,&a,&b);
//定义两个数组.长度相同.
int arr1[num]; // 可变数组.变量不能设初值,即后面没有={};
int arr2[num];
for (int i = 0; i < num ; i ++) {
arr1[i]= arc4random() % (b - a + 1) + a;
arr2[i] = arr1[i];
printf(“%d “,arr2[i]);
}
printf(“\n”);
//用数组来保存和值
int arr[28] = {0};
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
arr[i+j+k]++;
}
}
}
for (int i = 0; i < 28; i++) {
printf(“%d\n”,arr[i]);
}
//
int arr1[10]={0};
int arr2[10]={0};
int arr3[10]={0};
printf(“arr1的数组元素:”);
for (int i = 0; i < 10; i++) {
arr1[i]=arc4random() % (40 - 20 + 1)+20;
printf(“%d “,arr1[i]);
}
printf(“\n”);
printf(“arr2的数组元素:”);
for (int i = 0; i < 10; i++) {
arr2[i]=arc4random() % (40 - 20 + 1)+20;
printf(“%d “,arr2[i]);
}
printf(“\n”);
printf(“arr3的数组元素:”);
for (int i = 0 ; i < 10 ; i++) {
arr3[i] = arr1[i] + arr2[i];
printf(“%d “,arr3[i]);
}
printf(“\n”);
int arr[6] = {5,6,2,1,4,3};
// 外部循环的-1 :循环执行到还有两个数没有排序时,只要把未排序的两个数交换即可,执行次数是数组元素数 - 1.
for (int i = 0; i < 6 - 1; i++) {
// 内部循环的 -1 :为了防止数组越界.(因为要与后一个元素比较)
for (int j = 0; j < 6 - 1 - i; j++) {
// -i 避免了不必要的比较.
if (arr[j] > arr[j + 1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < 6; i++) {
printf(“%d\n”,arr[i]);
}
int arr[6] = {5,6,2,1,4,3};
for (int i = 0; i < 6 - 1; i++) {
for (int j = 0; j < 6 - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < 6; i++) {
printf(“%d\n”,arr[i]);
}
int arr[6] = {5,6,2,1,4,3};
for (int i = 0; i < 6 -1; i++) {
for (int j = 0; j < 6 - i -1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr [j + 1];
}
}
}
for (int i = 0; i < 6; i++) {
printf(“%d\n”,arr[i]);
}
//1–定义长度为10的数组
int arr[10]={0};
//2–随机产生数,对数组进行赋值操作
printf(“小主,没有您的命令我得到了这些随机数 -||-:”);
for (int i = 0; i < 10; i++) {
arr[i] = arc4random() % (40 - 20 +1)+20;
printf(“%d “,arr[i]);
}
printf(“\n”);
//3–对已经赋值的元素进行排序操作
printf(“谢谢小主为我做主 ~@.@~:”);
for (int i = 0; i < 10 - 1; i++) {
for (int j = 0; j < 10 - 1- i; j++) {
if (arr[j] > arr[j + 1] ) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1]= temp;
}
}
}
//4–打印排序结果
for (int i =0; i < 10 ; i++) {
printf(“%d “,arr[i]);
}
printf(“\n”);
char str[6] = {‘i’,’p’,’h’,’o’,’h’,’e’};
// 下标是5的元素进行复制赋值
str[5] = ‘r’;
for (int i =0; i < 6; i++) {
printf(“%c “,str[i]);
}
printf(“\n”);
//下面称为字符串,打印出7个字节.
char str[7] = “iphone”;//最后一位是’\0’.
// 下面这个称为字符数组 , 打印出为6 个字节.
char str1[6]={‘i’,’p’,’h’,’o’,’h’,’e’};
// 这两者的区别
int arr[5]={0,7,2,1,3}; 输出为20,int型一个占4字节.
printf(“%ld\n”,sizeof(str));
// 区别在于: 字符串比字符数组在结尾的地方有一个’\0’,\0是字符串结束的标志,有’\0’的字符数组才可以称为字符串.
//打印字符串.%s打印是通过寻找字符串的结束标志’\0’,碰到’\0’就会结束打印.
printf(“%s\n”,str);
char str[10]=”iphone”;
printf("%ld\n",strlen(str));
printf("%ld\n",sizeof(str));
// sizeof :是字符串所占空间的大小,包括'\0'.若没指定长度,sizeof会寻找'\0'结束输出,则为7;而现在设定了长度为10,所以打印10.
// strlen :是肉眼能够看到的字符个数,到'\0'结束,不包括'0'.
char newStr[10] = "";
//被const修饰的不会改变.
strcpy(newStr, str);
printf(“%s\n”,newStr);
char str1[20] = "I have";
char str2[20] = “iPhone”;
//在后面拼接,不变的是str2; 注 : 被拼接的字符串要足够长.
strcat(str1, str2);
printf(“%s\n”,str1);
char str1[]="abcd";
char str2[]="acc";
printf("%d\n",strcmp(str1, str2));
// 从第一位开始使用ASC码表的值互减得到不是0就不一样.
char str[]="lala so fus id fgd sf";
char str1[]="";
//用来记录空格.
int a = 0;
for (int i = 0 ; i < strlen(str); i++) {
printf("%c",str[i]);
if (str[i] == ' ' ){
a++;
}
}
printf("\n");
printf("%d ",a);
//将字符串倒转:例如:“afjnpue” 转变成字符串“eupnjfa”(注:是改变字符串本⾝身,不是反向输出)
char str[] = "afjnupue";
// 反向输出//
for (int i = (int)strlen(str); i >= 0 ; i--) {
printf("%c ",str[i]);
}
printf("\n");
int len = strlen(str);
for (int i = 0; i < len/2; i++) {\
char str2 = str[i];
str[i] = str [len - 1 -i];
str [len - 1 - i] = str2;
}
printf(“%s\n”,str);
//输入随意一个字符串..
char b[] = {};
scanf("%s",&b);
printf("%s\n",b);
printf("%c\n",b[5]);
return 0;
}