#import <Foundation/Foundation.h> #include <stdio.h> #include <stdbool.h> //< 系统定义的> “自定义的” bool leapYear(int year); bool leapYear(int year) { bool leap = false; //方便以后修改 if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)) { leap = true; } return leap; } int maxCommonDiv(int num1,int num2); int maxCommonDiv(int num1,int num2) { if(num1 == num2) { return num2; } int min = 0; int commonDIC = 0; min=(num1 < num2)?num1:num2; //求出2个数中那个数最小 for (int i = 1; i <= min; i++) { //循环最小数次求模 if (num1 % i == 0 && num2 % i ==0) { commonDIC = i; //得到最大公约数 } } return commonDIC; } void revert(int arr[],int len); void revert(int arr[],int len) { if(len <= 0){ return; // 跳出函数 } int temp = 0; for (int i = 0; i < len / 2; i++) { temp = arr[i]; arr[i] = arr[len-1-i]; arr[len-1-i] = temp; } } struct date { int year; int month; int day; }; int getdayInMonth(int month,int year); int getdayInMonth(int month,int year) { int day = 0; switch (month) { case 1:case 3:case 5:case 7:case 8:case 10:case 12: { day = 31; break; } case 4:case 6:case 9:case 11: { day = 30; break; } case 2: { if(leapYear(year)) { day = 29; } else { day = 28; } break; } default: break; } return day; } void bullue(int arr[],int len); void bullue(int arr[],int len) { int tmp = 0; for (int i = 0; i < len - 1 ;i++ ) { for (int j = 0; j <len - 1 -i; j++) { if(arr[j] > arr[j+1]) { tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } }} void insert(int arr[],int len,int num); void insert(int arr[],int len,int num) { //寻找位置 int loc = 0; //定位置 for (int i = 0; i < len; i++) { if (arr[i] < num) // 先跳出小于它的数 { continue; } loc = i; //定位置 break; } //移位 for (int j = len; j > loc; j--) { //从后到当前位置 arr[j] = arr[j -1]; //把前一个值赋到最后的值中 } arr[loc] = num; //将当前位的num置赋 //输出 for (int k = 0; k < len; k++) { printf("%d ",arr[k]); } printf(" "); } int main(int argc, const char * argv[]) { //定义一个函数。功能:传入一个年份,求该年是不是闰年。函数名字 bool leapYear(int year); int y = 2012; printf("%d is or not leap year:%d ",y,leapYear(y)); //定义一个函数。作用是求整数num1和num2的最大公约数,并返回该值。函数名字int maxCommonDivisor(int num1,int num2); printf("最大公约数为:%d ",maxCommonDiv(2,4)); //将一个数组中的值按逆序重新存放,例如原来的顺序为:8,6, 5, 4,1.要求改为:1,4,5,6,8;并将数组中的值输出。 int arr[] = {1,3,5,7,9}; revert(arr, 5); for (int i = 0; i < 5; i++) { printf("%d ",arr[i]); } //定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题。 struct date d = {2014,2,1}; int day = 0; for (int i = 1;i < d.month; i++) { day += getdayInMonth(i,d.year); } day += d.day; printf("%d-%d-%d是一年中的第%d天 ",d.year,d.month,d.day,day); //编写一个函数用“冒泡法”对10个字符 reputation 按由小到大顺序排序。 //char a[11] = {'r','e','p','u','t','a','t','i','o','n',' '}; char a[] = "reputation"; int temp = 0; for (int i = 0; i < 9; i++) { //控制趟和下标 for (int j = 0; j < 10 - i -1; j++) { //控制次数和下标 if(a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } printf("a = %s ",a); //编写子函数:(1)用”冒泡法”将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。 主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。 int k[6] = {1,56,7,10,12}; insert(k,6,8); //随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。 //产生一个10到50间的随机数 int r = 0; int x = 10,y1 =50; r = arc4random() % (y1- x + 1)+x; printf("%d ",arc4random()); printf("%d ",r); // srand((unsigned int)time(NULL)); // int r = rand()%41+10; //[10,50] // printf("r = %d ",r); return 0; }