C语言第一天:
// insert code here...
// 单行注释 // 多行注释(/* */)
/*
printf("我是一名应届毕业生\n");
printf("我的名字叫 ***\n");
printf("我毕业于 河南师范大学 \n");
printf("我现在在蓝鸥河南校区学习iOS\n");
printf("本人单身,至今未婚!!!\n");
= 的作用是将等号 右边的值赋值于 左边
int a = 5 ;
char b = '4';
float c = 5.5;
printf("a的内存位置:%p\n",&a);
printf(" a = %d b = %c c = %.1f \n",a,b,c);
*/
/*
int a1 = 8;
int a2 = 9;
int a3 = 0;
a3 = a1 + a2;
printf("%d = %d + %d\n",a3,a1,a2);
printf("你今年多大了?");
int age = 23;
printf("我今年:%d \n",age);
NSLog(@"\n尹江涛的iOS之旅");
*/
//常量与变量的区别:
//常量:值不能被改变
//变量的定义:值能够被改变的存储区域。一般形式:变量类型 变量名 =常量 ;
/*
//定义一个整形变量(内存空间:)
int a = 5 ;
//定义一个字符型变量 ,单引号里面只能写一个字符
char b = 'u';
//定义一个浮点型的变量(用来存放小数,内存空间:字节)
float c = 3.60 ;
//定义一个短整形的变量(内存空间:2个字节)
short d = 5;
//定义一个长整形的变量(内存空间大小:4或8个字节)
long e = 78;
//定义一个双精度的变量(内存空间:)
double f = 78.98;
*/
//变量的使用
//1、变量的使用必须在变量被定义之后,即使用之前必须先定义
//2、变量的使用,一个变量只能被定义一次,不能被多次定义即重定义
//3、变量被多次赋值时,以最后一次的赋值为准
//直接拿变量的名字就可以使用
/*
int a = 8;
a = 5;
int b = -8;
printf(" a = %d\n",a);
printf(" b = %d\n",b);
char c = 128;
printf(" c = %d \n",c);
*/
/*
//变量名的命名规则
//1、变量的命名只能以字母、下划线、数字组成(不能以数字开头)
//2、不能与系统关键字重名
//3、变量的命名 见名知意
int age = 17;
int wight = 67;
//4、变量名的驼峰命名法
int studentAge = 22;
int teacherAge = 36;
//5、·变量名的明明不能重复定义
*/
/*
//赋值运算符: =
int a = 9 ;
a = 8 ;
//同一类型的变量可以在同一行定义,中间用, 隔开
int b ,c ,d ;
b = 3;
c = 4;
d = 5;
printf("b = %d c = %d d = %d \n",b,c,d);
//交换两个变量的值
int temp = b;
b = c;
c = temp;
printf("b = %d c = %d d = %d \n",b,c,d);
int xueBi = 5;
int keLe = 9;
printf("xueBi = %d , keLe = %d \n",xueBi,keLe);
int beiZi = xueBi;
xueBi = keLe;
keLe = beiZi;
printf("xueBi = %d , keLe = %d \n",xueBi,keLe);
*/
//运算符
/*
int a = 5;
int b = 7;
int c = a + b;
printf("c = %d \n",c);
c = a - b ;
printf("c = %d \n",c);
c = a * b ;
printf("c = %d \n",c);
c = a / b;
printf("c = %d \n",c);
c = b / a;
printf("c = %d \n",c);
//两个整型变量相除,得到的结果依然是整型
//两个变量相除,只要有一个浮点型变量,则结果也是浮点型
float d = b / a ;
printf("d = %.2f \n",d);
float b1 = 7.0;
float a1 = 5.0;
d = b1 / a1;
printf("d = %.2f\n",d);
//求余运算符 %
c = b % a;
printf("c = %d \n",c);
c = a % b ;
printf("c = %d \n",c);
*/
/*
// 自增++自减--
int a = 5, b = 8 ;
printf("在后面:a = %d , b = %d \n",a++,b--);
printf(" :a = %d , b = %d \n",a,b);
printf("在前面:a = %d , b = %d \n",++a,--b);
*/
/*
//复合运算符
int a = 6 ;
int b = 8;
a += b;
printf("a = %d ,b = %d \n",a ,b);
*/
/*
//输入函数scanf
//从键盘输入
// char a = '\0';
// scanf("%c",&a);
// printf("a = %c\n",a);
//输出函数
// int a = 5;
// float b = 8.123456200;
// // printf("a = %-4d \n",a);
// printf("a = %04d \n",a );
// printf("b = %f \n",b);
*/
//转义字符
//《第一讲:C语言基础》课后作业
// 1、 (*)计算十进制 42转换为二进制、八进制、十六进制分别对应的值。42的二进制101010,52,2A
//2、 (*)计算二进制 11010110对应的十进制值 214
//3、 (*)计算八进制 075对应的十进制值 61
//4、 (*)计算十六进制 0xA8对应的十进制值 168
//5、 (*)打印下面图形:* ** ***
// printf("*\n");
// printf("**\n");
// printf("***\n");
/*6、(**)编写一个程序,要求用户输入一个美元数量,然后显示出增加%5税
率后的相应金额。格式如下所示:
Enter an amount:100.00 With tax added:$105.00
*/
// float money1 = 0;
// printf("请输入你要兑换的美元数量:");
// scanf("%2f",&money1);
// float money2 = (1 + 0.05) * money1 ;0+
// printf("税率以后的相应金额:%.2f ",money2);
/* 7、(**)从键盘输入两个实数 a和 b,输出 a占 b 的百分之几。小数点后保留 2位。
例如:输入 1和 4,输出:25.00%
//scanf 3个变量 ,c = a / b * 100;
*/
// printf("请输入两个实数:");
// float a , b ;
// scanf("%2f %2f",&a ,&b);
// float c = a / b * 100;
// printf("%.2f%%",c);
/*
8、(**)编写一个程序,要求用户输入一个美金数量,然后显示出如何用最 少的 20美元、10 美元、5美元和 1 美元来付款:
Enter a dollar amount:93
$20 bills: 4
$10 bills: 1
$5 bills:0
$1 bills:3
*/
// printf("Enter a dollar amount:");
// int money ;
// scanf("%d",&money);
// int a = money / 20 ;
// int b = (money - 20 * a ) / 10 ;
// int c = (money - 20 * a - 10 * b ) / 5 ;
// int d = (money - 20 * a - 10 * b - 5 * c) / 1 ;
// printf("%d 个20美元, %d张10美元,%d张5美元,%d张1美元\n",a,b,c,d);
//
//9、(*)输入两个整数,打印这两个数的和,差,积,余数
// printf("输入两个整数");
// int a , b ;
// scanf("%d %d",&a ,&b);
// int sum = a + b ;
// int cha = a - b ;
// int ji = a * b ;
// int yuShu = a % b;
// printf("sum = %d, cha = %d , ji = %d , yuShu = %d\n",sum,cha,ji,yuShu);
//
//10、(*)查找 ASCII码表,分别用%d输出字符,用%c输出整数。
// char i = 0;
// for (i = 0; i<127; i++)
// {
// if (isalpha(i))
// {
// printf("%c %d\n",i,i);
// }
// }
// int a = 0;
// char b = '\0';
// printf("请输入:");
// scanf("%d%c",&a,&b);
// if (a >= 0 && a <= 127 )
// {
// printf("%c\n",a);
// }
// if ((b > 'A'&& b < 'Z' )|| (b > 'a' && a <= 'z') )
// {
// printf("%d\n",b);
// }
// char a = '\0';
// scanf("%c",&a);
// printf("%d\n",a);
// int b =0;
// scanf("%d",&b);
// printf("%c\n",b);
}
return 0;
}
:作业:
C语言第二天:
//顺序结构 程序从上到下依次运行
//分支结构
//布尔类型: 非零既真
/*
int a = 6;
BOOL result = NO;
if (result) {
printf("a = %d \n",a);
}
printf("Hello,World!");
char a = '\0';
printf("请输入一个字符:\n");
scanf("%c",&a);
if (a == 'w') {
printf("我是女孩!");
}else if(a == 'm')
{
printf("我是男孩!");
}else{
printf("请输入你的性别的英文缩写'w' or 'm':");
}
*/
/*
int a = 0;
printf("请输入一个数字:");
scanf("%d",&a);
if (a >= 18) {
printf("你的年龄是 %d 已经是成年人,可以进入观看:",a);
} else {
printf("你是 %d 未成年人,禁止观看本视频!",a);
}
*/
/*
//逻辑运算符:||一真皆真 , &&一假皆假 ,! 真既是假假即是真
int age = 0;
printf("请输入你的年龄,谢谢合作:");
scanf("%d",&age);
if (age < 18 ) {
printf("你是 %d ,禁止进入网吧",age);
}else if(age >= 18 && age <= 25){
printf("你是 %d ,可以进入网吧",age);
}else{
printf("你是 %d ,请注意节制,保重身体!",age);
}
*/
/*
int a = 0 ,b = 6;
int c = a && b ;
printf("c = %d\n",c);
int a1 = 5,b1 = 6;
int c1 = a1 || b1 ++;
printf("c1= %d\n",c1);
printf("b1 = %d\n",b1);
//bool 只有两个结果:真 或者 假
//C语言中 非零既真
//逻辑运算符 &&只要一个为假即为假(短路现象: 假&&*,*不会执行)
//逻辑运算符 ||只要一个为真即为真(短路现象: 真||*,当第一个为真,后面的*就不会再执行)
*/
//对于if来说,如果没有{}则默认紧跟着if的第一个“;”为if管理的语句
/*
int a = 7 ;
if(a==6)
printf("*********\n");
printf("%%%%%%%%%%%%%%\n");
*/
/*
int a ;
printf("请输入1,2,3,4中的任意一个数字,出现相应的季节:");
scanf("%d",&a);
if(a == 1)
printf("春天");
else if(a == 2 )
printf("夏天");
else if(a == 3)
printf("秋天");
else if(a == 4)
printf("冬天");
else
printf("一年之内没有这个季节!\n谢谢配合,请重新输入:");
*/
//逻辑运算符的优先级顺序:
//! > && > ||
/*
int a = 5;
int c = 0;
c = (2 || 0) && a++;
printf("c = %d a = %d \n",c ,a );
*/
/*
//求两个数的最大值
int a = 5,b = 7;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
int max = 0;
if (a > b) {
max = a ;
printf("max = %d a = %d b = %d \n",max , a , b );
}else{
max = b ;
printf("max = %d a = %d b = %d\n",max, a ,b);
}
*/
/*
//三国杀
int hp = 5;
int count = 0;
char color = '\0';
printf("请输入点数和桃色:");
scanf("%d,%c",&count,&color);
if ((color == 'B') && ((count >= 2) && (count <= 9))) {
hp -= 3;
printf("人不犯我我不犯人,人若犯我我必犯人!\n");
}else{
printf("能不能快点啊,我等的花都谢了!\n");
}
printf("玩家剩余血量:hp = %d\n",hp);
*/
//从控制台输入一个年份,并判断是否是闰年
//闰年的判断条件: 1、4的整数倍且不被100整除 2、能被400整除
/*
if (year % 400 == 0) {
printf("这一年是闰年!");
}else{
//不能被400整除
if (year % 4 == 0) {
//判断是不是100的整数倍
if(year % 100 == 0){
printf("今年是平年!");
}else{
printf("今年是闰年!");
}
}else{
printf("这一年是平年!");
}
}
*/
/*
int year = 0;
printf("请输入一个年份:");
scanf("%d",&year);
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){
printf("你输入的年份是闰年!");
}else{
printf("你输入的年份不是闰年!");
}
int i = 0;
for (i = 1; i <= 2015; i++) {
if ((i % 4 == 0 && i %100 != 0) || i % 400 == 0) {
printf("%d, ",i);
}
}
*/
/*
//三个数的最大值
int a = 0 ,b = 0 ,c = 0;
printf("输入abc三个数:\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a > b && a >c){
printf("最大值:a = %d\n",a);
}else if (b > a && b > c){
printf("最大值:b = %d\n",b);
}else{
printf("最大值:c = %d\n",c);
}
//三目运算符 :如果?前面的表达式真,则执行:前面的部分
// : 如果?前面的表达式为假,则执行:后面的部分
//先求两个数的最大值
int max = 0;
max = a > b ? a : b ;
max = a > b ? (a>b?a:b) : (b>c?b:c);
printf("max = %d\n",max);
*/
//switch case
//break 跳出整个switch循环
/*
int month = 0;
printf("请输入一个月份:\n");
scanf("%d",&month);
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31天");
break;
case 2:
case 4:
case 6:
case 9:
case 11:
printf("30天");
break;
default:
printf("请重新输入月份:");
break;
}
*/
/*
int telephoneNumber = 0;
printf("请输入一个电话号码:");
scanf("%d",&telephoneNumber);
switch (telephoneNumber) {
case 801:
printf("职业规划部电话!");
break;
case 802:
printf("财务部");
break;
case 803:
printf("市场营销部");
break;
case 804:
printf("教育部");
break;
case 805:
printf("行政部");
break;
default:
printf("请查证后再拨!");
break;
}
*/
//1.(*)输入一个整数,判断奇偶,并输出“某某是奇数”或者“某某是偶数”。
/*
int num = 0;
scanf("%d",&num);
if (num / 2 == 0) {
printf("%d是偶数",num);
}else {
printf("%d是奇数",num);
}
*/
//2.(*)输入一个数,判断符号。如果大于 0,输出“正数”;如果小于 0,输 出“负数”;如果等于 0,输出“0”。
/*
int num = 0;
if(num > 0){
printf("正数");
}else if(num < 0){
printf("负数");
}else{
printf("0");
}
*/
//3.(***)输入生日,输出年龄(周岁)和星座。
//第一种方法:
/*
int year,month,day;
printf("请输入按照年月日,输入你的生日:");
scanf("%d,%d,%d",&year,&month,&day);
int age;
age = 2015 - year;
if (( month = 3 && day >= 21 ) || (month = 4 && day <= 20)) {
printf("你是白羊座,年龄%d",age);
}else if((month = 4 && day >= 21 ) || (month = 5 && day <= 21)) {
printf("你是金牛座,年龄%d",age);
}else if((month = 5 && day >= 22 ) || (month = 6 && day <= 21)) {
printf("你是双子座,年龄%d",age);
}else if((month = 6 && day >= 22 ) || (month = 7 && day <= 22)) {
printf("你是巨蟹座,年龄%d",age);
}else if((month = 7 && day >= 23 ) || (month = 8 && day <= 22)) {
printf("你是狮子座,年龄%d",age);
}else if((month = 8 && day >= 23 ) || (month = 9 && day <= 23)) {
printf("你是处女座,年龄%d",age);
}else if((month = 9 && day >= 24 ) || (month = 10 && day <= 23)) {
printf("你是天秤座,年龄%d",age);
}else if((month = 10 && day >= 24 ) || (month = 11 && day <= 22)) {
printf("你是天蝎座,年龄%d",age);
}else if((month = 11 && day >= 23 ) || (month = 12 && day <= 21)) {
printf("你是射手座,年龄%d",age);
}else if((month = 12 && day >= 22 ) || (month = 1 && day < 21)) {
printf("你是魔蝎座,年龄%d",age);
}else if((month = 1 && day >= 21 ) || (month = 02 && day < 20)) {
printf("你是水瓶座,年龄%d",age);
}else{
printf("你是双鱼座,年龄%d",age);
}
*/
//第二种方法:
/*
printf("请按照年月日输入你的生日:");
int year ,month ,day ;
int age = 2015 - year;
scanf("%d,%d,%d",&year,&month,&day);
switch (month) {
case 1:
if (day >= 20) {
printf("年龄为:%d星座为:水瓶座!\n",age);
}else{
printf("年龄为:%d星座为:魔蝎座!\n",age);
}
break;
case 2:
if (day >= 19) {
printf("年龄为:%d星座为:双鱼座!\n",age);
}else{
printf("年龄为:%d星座为:水瓶座!\n",age);
}
break;
case 3:
if (day >= 21) {
printf("年龄为:%d星座为:白羊座!\n",age);
}else{
printf("年龄为:%d星座为:双鱼座!\n",age);
}
break;
case 4:
if (day >= 20) {
printf("年龄为: %d星座为:金牛座!\n",age);
}else{
printf("年龄为: %d星座为:白羊座!\n",age);
}
break;
case 5:
if (day >= 21) {
printf("年龄为:%d星座为:双子座!\n",age);
}else{
printf("年龄为:%d星座为:金牛座!\n",age);
}
break;
case 6:
if (day >= 22) {
printf("年龄为:%d星座为:巨蟹座!\n",age);
}else{
printf("年龄为:%d星座为:双子座!\n",age);
}
break;
case 7:
if (day >= 23) {
printf("年龄为: %d星座为:狮子座!\n",age);
}else{
printf("年龄为: %d星座为:巨蟹座!\n",age);
}
break;
case 8:
if (day >= 23) {
printf("年龄为: %d星座为:处女座!\n",age);
}else{
printf("年龄为:%d星座为: 狮子座!\n",age);
}
break;
case 9:
if (day >= 23) {
printf("年龄为:%d星座为:天秤座!\n",age);
}else{
printf("年龄为:%d星座为:处女座!\n",age);
}
break;
case 10:
if (day >= 23) {
printf("年龄为: %d星座为:天蝎座!\n",age);
}else{
printf("年龄为: %d星座为:天秤座!\n",age);
}
break;
case 11:
if (day >= 23) {
printf("年龄为:%d星座为:射手座!\n",age);
}else{
printf("年龄为:%d星座为:天蝎座!\n",age);
}
break;
case 12:
if (day >= 22) {
printf("年龄为:%d星座为:摩羯座!\n",age);
}else{
printf("年龄为:%d星座为:射手座!\n",age);
}
break;
default:
printf("你的生日输入错误,请重新输入!");
break;
}
*/
//4.(**)编程判断 3人中谁的年龄最大,并打印最大者的年龄
/*
printf("请输入3个人的年龄:");
int age1,age2,age3;
scanf("%d,%d,%d",&age1,&age2,&age3);
int ageMax = 0;
ageMax = age1 > age2 ? (age1 > age3 ? age1: age3) : (age2 > age3 ? age2 : age3);
printf("最大者的年龄:ageMax = %d\n",ageMax);
*/
//5.(**)铁路托运行李规定:行李重不超过 50公斤的,托运费按 0.15元每 公斤计算,如果超过 50公斤,超出部分每公斤加收 0.1元。编程实现上述功能
/*
float wight = 0;
float money = 0;
printf("请输入你的行李重量:");
scanf("%2f",&wight);
if (wight < 50) {
money = wight * 0.15;
printf("需要缴费:money = %.2f元\n",money);
}else{
money = 50 * 0.15 + (wight - 50) * (0.15 + 0.1);
printf("需要缴费:money = %.2f元\n",money);
}
*/
//6.(**)有一个函数:x<1的时候,y = x;1<=x<10 的时候,y=2x-1; x>=10 的时候,y=3x-11。写一段程序,输入 x,输出 y值
/*
int x , y;
printf("请输入X的值:");
scanf("%d",&x);
if (x < 1) {
y = x;
}else if ( x >= 1 && x < 10){
y = 2 * x - 1;
}else{
y = 3 * x - 11;
}
printf("y = %d\n",y);
*/
//7.(**)编制一个完成两个数四则运算程序。如:用户输入 34+56则输出结 果为 90.00,要求运算结果保留 2位有效小数,用户输入时将 2个运算数以及运算符都输入,根据运算符求结果
/*
printf("请输入两个数:");
float a ,b;
char c = '\0';
scanf("%f%c%f",&a,&c,&b);
switch (c) {
case '+':
printf("%.2f\n",(a + b));
break;
case '-':
printf("%.2f\n",(a - b));
break;
case '*':
printf("%.2f\n",(a * b));
break;
case '/':
printf("%.2f\n",(a / b ));
break;
default:
printf("输入错误,请重新输入!");
break;
}
*/
//8.(***)输入 3个数,判断是否能构成三角形
// printf("请输入3个数:\n");
// float a ,b, c ;
// scanf("%f,%f,%f",&a,&b,&c);
// //不知道哪个便是最长边,哪个是最短边
// if ((a + b) > c && (a + c) > b && (b + c ) > a ) {
// printf("%.2f ,%.2f ,%.2f 能够构成三角形!",a,b,c);
// }else{
// printf("这三个数不能构成三角形,请重新输入!");
// }
//9.(****)输入三个数,用两种方法打印出中间值(即第二大值)提示:第一种,先求最大最小;第二种,只使用条件运算符
//第一种方法:冒泡
/*
int array[3];
printf("请输入三个数:");
int mid;
scanf("%d,%d,%d",&array[0],&array[1],&array[2]);
for (int i = 0; i< 2; i++) {
for (int j = 0; j< 1; j++) {
if(array[i] < array[i+1])
{
int temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
}
}
mid = array[1];
printf("三个数的中间值:%d",mid);
*/
//第二种方法:条件运算
/*
printf("请输入3个数:");
int a ,b ,c;
scanf("%d,%d,%d",&a,&b,&c);
if (a > b && a < c ) {
printf("三个数的中间值为 %d\n",a);
}else if(b > c){
printf("三个数的中间值为:%d\n",b);
}else{
printf("三个数的中间值为;%d\n",c);
}
*/
}
return 0;
}
//循环语句
//循环结构:在某个特定条件之下,重复执行一个语句段(代码块)
//用来控制循环的变量:保证循环变量的改变,防止死循环导致程序崩溃
//int i = 1;
/*
//输出100之内的整数
while (i < 100) {
//当i小于100时,输出i的值
printf("%d ",i);
i++;
}
*/
/*
//取100之内的偶数,并向控制台输出
while (i<=100) {
//判断i是不是偶数
if (i % 2 == 0) {
printf("%d ",i);
}
i++;
}
*/
/*
//循环 打印 7 的倍数
printf("100以内的7的倍数:\n");
while (i <= 100) {
if (i % 7 == 0) {
printf("%d ",i);
}
i++;
}
*/
/*
//循环打印个位为7
printf("100以内的个位为:\n ");
while (i <= 100) {
if ( i % 10 == 7) {
printf("%d\t",i);
}
i++;
}
//循环打印十位为7的
printf("100以内十位为7 :\n");
while (i <= 100) {
if (i / 10 ==7) {
printf("%d\t",i);
}
i++;
}
*/
/*
//循环打印100以内,不是7的倍数并且不包含7的整数
while (i <= 100) {
if ( ( i % 7 != 0 ) && ( (i % 10 != 7) && (i / 10 != 7) ) ) {
printf("%d\t", i);
}
i++;
}
*/
//随机数的取值范围:
/*
int i = arc4random() % 3;
printf("i = %d\n",i);
*/
//循环打印1-100之间的随机数(打印18个数)
// int i = 1;
// while (i <= 18) {
// printf("%d\t", (arc4random() % 100) + 1 );
// i++;
// }
//随机数取值范围
//循环打印【30 - 50】的随机数(打印18个)
/*
int i = 1;
while (i <= 18) {
int k = arc4random() % ((50-30)+1) + 30;
printf("%d\t",k);
i++;
}
*/
/*
//打印34-78之间的随机数循环打印n次
int count = 0;
//存放随机数里面的最大值
int max = 0;
printf("输入打印的次数:\n");
int i = 0;
scanf("%d",&count);
while (i < count) {
int k = arc4random() % ( (78-34) + 1 ) + 34;
//如果随机数 k 里面的数有比 max 大的,将之取出并赋值于 max
if (k > max) {
max = k ;
}
printf("%d\t",k);
i++;
}
printf("随机数中的最大值 max = %d\n",max);
*/
//打印37-78之间的18个随机数并求出最小值
//求一个变量控制循环次数
/*
int i = 1;
//保存最小值的变量
int min = 0 ;
//声明一个变量,用来保存是第几次进入循环体
while (i <= 8) {
int count = 1;
int k = arc4random() % ( 78 - 34 + 1 ) + 34;
printf("%d\t",k);
//如果是第1次进入循环体,则把循环体中的第一个随机数赋值于min
if (count == 1) {
count ++;
min = k;
}
//比较大小,并将较小的值赋值于 min
if (k > min) {
min = k;
}
i++;
}
printf("\n随机数中的最小值:min = %d\n",min);
*/
//for循环
/*
//用for循环打印1-100之间的数
// for (int i = 1; i <= 100 ; i++) {
// printf("%d\t",i);
// }
//用for循环打印1-100之间的7的倍数
// for (int i = 1; i <= 100; i++) {
// if (i % 7 == 0 ) {
// printf("%d\t",i);
// }
// }
//个位为7
for (int i = 1; i <= 100; i++) {
if (i % 10 == 7 ) {
printf("%d\t",i);
}
}
//十位为7
for (int i = 1; i<=100; i++) {
if (i / 10 == 7 ) {
printf("%d\t",i);
}
}
//1-100之间个位和十位都不包含7且不是7的倍数
for (int i = 1; i <= 100; i++) {
if ((i % 10 != 7) && (i / 10 != 7) && (i % 7 != 0)) {
printf("%d\t" , i );
}
}
*/
//(23 - 77)打印13个随机数
// for (int i = 0 ; i < 13 ; i++ ) {
// printf("%d\t",arc4random()%(67-23+1)+23);
// }
//双层for循环外层控制行,内层控制列
//外层for循环,控制外行
/*
for (int i = 0; i < 3; i++ ) {
//内层for循环
for (int j = 0; j < i +1 ; j++ ) {
printf("%d\t",j + 1 );
}
printf("\n");
}
*/
/*
//乘法口诀表
for (int i = 0 ; i < 7; i++) {
for (int j = 0; j< i+1; j++) {
printf("%d ",j+1);
}
printf("\n");
}
for (int i = 0 ; i < 9; i++) {
for (int j = 0; j< i + 1; j++) {
printf("%d*%d=%d ",j + 1, i + 1, ((i+1) * (j+1)));
}
printf("\n");
}
*/
/*
打印如图图案:
*
* *
* * *
* * * *
* * *
* *
*
*/
/*
//用 0 - 9 打印所有可能的三位数
for (int i = 0 ; i < 10 ; i++) {
for (int j = 0 ; j < 10; j++) {
for (int k = 0; k < 10; k++) {
printf("%d%d%d\t", i , j, k);
}
}
}
//打印所有三位有效数
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
printf("%d%d%d\t", i,j,k);
}
}
}
*/
/*
while 与 for 的区别
while 先条件再循环
for 先确定循环次数,当循环次数达到限定条件之后结束循环
while 循环是一个临界点的问题
for 是一个循环多少次的问题
*/
//break 和 continue 在循环中的作用
//break 结束当前循环
//continue 结束本次循环
//continue 练习:
//循环打印 1-10之间的所有数,但是不打印5
/*
for (int i = 0; i < 10; i++) {
if (i == 5) {
//结束本次循环,但是循环体继续循环
continue;
}
printf("%d\t",i);
}
for (int i = 0; i < 10; i++) {
if (i == 5 ) {
//结束循环体,结束当前循环并且以下的循环不再执行
break;
}
printf("%d\t",i);
}
*/
// do …… while
/*
int i = 1 ;
do {
printf("%d\t",i);
i++;
} while (i <= 6);
*/
//求两个数的最大公约数
/*
printf("任意输入俩个整数:\n");
int a ,b ;
scanf("%d,%d",&a,&b);
//利用for循环
int gy = 0;
int max = (a > b ? a : b );
int min = (a < b ? a : b );
for (int i = 1 ; i <= min; i++) {
if ((max % i == 0) && (min % i == 0)) {
gy = i;
}
}
printf("最大公约数:%d",gy);
*/
//求最小公倍数
/*
int a = 12, b = 16;
for (int i = 16; i < ( a * b); i++) {
if ((i % a == 0) && (i % b == 0)) {
printf("%d ",i);
break;
}
}
*/
/*
int i,j,k;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++) printf(" ");
for(k=1;k<=2*i-1;k++) printf("*");
printf("\n");
}
for(i=1;i<=4;i++)
{for(j=1;j<i+1 ;j++) printf(" ");
for(k=1;k<=7-2*i;k++) printf("*");
printf("\n");
}
*/
// int m ,n ,r , p ,q;
// printf("输入两个数:\n");
// scanf("%d,%d",&m,&n);
// p = m * n;
// while (m != 0) {
// r = n % m;
// n = m ;
// m = r ;
// }
// q = p / n ;
//
// printf("%d,%d\n",n,q);
}
return 0;
}
C语言第四天:
int main(int argc,const char * argv[]) {
@autoreleasepool {
//数组:
// 1、构造类型
// 2、一般形式:类型数组名 【元素个数】 = {元素集};(元素之间用, 隔开)
// 3、数组中的内存分配:从高到底分配,从低到高存取 栈区
// 4、在知道数组个数的前提下,只给第一个元素赋值为0,其他元素默认为0
// 5、若在初始化时,没有数组长度,则默认数组的长度为初始化的元素个数
// 6、定义数组长度时,只能用常量定义
// 7,数组的元素访问:通过元素在该数组的下标位置,访问该元素
//数组下标的最大值是 =数组长度 - 1 ;否则越界,越界会导致系统潜在危险,甚至系统崩溃
// 8、数组不能整体赋值,只能通过下标一个一个赋值(数组名代表整个数组的首地址,地址是常量,不能被赋值)
// 9、求一个数组的长度 int length = sizeof(数组名)/sizeof(数组的类型);
//定义一个数组,用来存放5个年龄
/*
// int array[5] = {12,25,88,43,21};
// int a = 5;
//sizeof 运算符 运来计算一个变量 或一个类型在内存中所占用的空间
// int c = sizeof(array);
// int b = sizeof(a);
// printf("数组array所占用的内间:%d a所占的空间:%d",c,b);
// int array[] = {3,5,7};
// printf("sizeof = %d\n",sizeof(array));
// int a = 5 ;
// int array[a] = {1,5,8,6,7};
// int array[5] = {3,6,2,8,1};
// int c = array[4];
// printf("c = %d\n",c);
*/
//定义两个数组,将一个数组的元素赋值于另外一个数组
/*
int array1[3] = {4, 6, 8 };
int array2[3] = {3, 7, 1 };
for (int i = 0; i < 3; i++) {
array1[i] = array2[i];
printf("%d\t",array1[i]);
}
*/
/*
int array[10] = {12,14,13,17,24,90,55,22,34,59};
for (int i = 0; i < sizeof(array)/sizeof(int) ; i++) {
printf("array[%d] = \t",i);
printf("%d\t",array[i]);
}
//随机数的范围30 - 78 ;
int array[30]={0};
printf("随机的30个数:\n");
for (int i = 0; i < 30; i++) {
int k = arc4random() % (78 - 30 + 1) + 30;
array[i] = k;
printf("%d ",k);
}
printf("\n");
for (int i =0; i < 30; i++) {
printf("array[%d] = ",i);
printf("%d\t",array[i]);
}
*/
//一个数组 30个元素 随机赋值(30 - 78)
//另一个数组 30个元素将第一个数租的元素按赋值于第二个数组
//打印两个数组 检查 数组是否一样
/*
int array1[30] = {0};
int array2[30] = {0};
printf("array1[30]:\n");
for (int i = 0; i < 30; i++) {
int k = arc4random()%(78-30+1)+30;
array1[i] = k;
}
for (int i = 0; i < 30 ; i++) {
printf("%d\t",array1[i]);
}
printf("\n");
printf("array2[30]:\n");
for (int i = 0; i < 30; i++) {
int k = arc4random()%(78-30+1)+30;
array2[i] = k;
}
for (int i = 0; i < 30; i++) {
printf("%d\t",array2[i]);
}
printf("\n");
printf("array2[30]:\n");
for (int i = 0; i < 30; i++) {
array2[i] = array1[i];
printf("array2[%d] = ",i);
printf("%d\t",array2[i]);
}
*/
/*
// 数组 30个元素 30 - 78随机赋值
// 循环遍历 打印这30个元素的和
int array[30] = {0};
int sum = 0;
for (int i = 0; i < sizeof(array)/sizeof(int); i ++) {
int k = arc4random()%(78-30+1)+30;
array[i] = k;
}
for (int i = 0; i < 30; i++) {
sum += array[i];
printf("%d\t",array[i]);
}
printf("\n");
printf("sum = %d\n",sum);
// array1 10个随机值并打印array1
// array2 10个随机值并打印array2
// array3 10个随机值 每个元素是对应的array1与array2的元素和
int array1[10] = {0};
int array2[10] = {0};
int array3[10] = {0};
printf("array1:\n");
for (int i =0; i < 10; i++) {
int k = arc4random()%(78 - 30 + 1) + 30;
array1[i] = k;
printf("%d\t",array1[i]);
}
printf("\narray2:\n");
for (int i = 0; i < 10; i++) {
int k = arc4random() % 49 + 30;
array2[i] = k;
printf("%d\t",array2[i]);
}
printf("\narray3:\n");
for (int i = 0; i < 10 ; i++ ) {
array3[i] = array1[i] + array2[i];
printf("%d\t",array3[i]);
}
*/
//排序:
//冒泡排序:
//两层for循环,,
//外层控制比较的次数 n-1
//内层控制每一趟的次数 n-1-i
//选择排序:n-1
/*
int array[5] = {6,3,8,7,11 };
for (int i = 0; i < 5 - 1; i++) {
for (int j = 0; j < 5 - 1 - i; j++) {
if (array[j] > array[j+1]) {
int temp = array[j] ;
array[j] = array[j+1] ;
array[j+1] = temp;
}
}
}
for (int i = 0; i<5; i++) {
printf("%d\t",array[i]);
}
*/
/*
int array[5] = {8,3,77,22,89};
for (int i = 0; i < 5 - 1; i++) {
//认为下标为0的元素为最小
int mininder = i;
//使mininder始终指向较小
for (int j = i + 1; j < 5 ; j++) {
if( array[mininder] > array[j]){
mininder = j;
}
}
//如果存放的最小位置,与之前认为的这个位置不一样,就要交换两个位置的存放的内容
if (mininder != i) {
int temp = array[mininder];
array[mininder] = array[i];
array[i] = temp;
}
}
//本次for将排好序的数组打印出来
for (int i = 0; i < 5; i++) {
printf("%d\t",array[i]);
}
*/
//随机赋值 从小到大排序 打印输出
/*
printf("冒泡排序:\n");
int array[30] = {0};
printf("随机赋值后的array:\n");
for (int i = 0; i < 30; i++) {
int k = arc4random() % 49 + 30;
array[i] = k;
printf("%d\t",array[i]);
}
//冒泡排序
for (int i = 0; i < 30-1; i++) {
for (int j = 0 ; j < 30 - i; j++) {
if (array[j] > array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
printf("\n拍完序之后的array:\n");
for (int i = 0; i<30; i++) {
printf("%d\t",array[i]);
}
*/
/*
printf("选择排序:\n");
int array[30] = {0};
printf("没排序之前的array:\n");
for (int i = 0; i < 30; i++) {
int k = arc4random() % 49 + 30;
array[i] = k;
printf("%d\t",array[i]);
}
//选择排序
for (int i = 0; i < 30-1; i++) {
int minindex = i;
for (int j = i + 1; j < 30 - i; j++) {
if (array[minindex] > array[j]) {
minindex = j;
}
}
if (minindex != i) {
int temp = array[minindex];
array[minindex] = array[i];
array[i] = temp;
}
}
printf("\n排完序后的array:\n");
for (int i = 0; i < 30; i++) {
printf("%d\t",array[i]);
}
*/
//字符数组: %s从地址开始打印,到‘\0’结束。
// char array[10] = {'i','P','h','o','n','e'};
// for (int i = 0; i< sizeof(array)/sizeof(char); i++) {
// printf("%c",array[i]);
// }
// char array2[10] = "iPhone";
// printf("%s\n",array2);
// printf("%s\n",array);
// char a1[] = {'i','P','h','o','n','e'};
// char a2[] = "iPhone";
// int a1Size = sizeof(a1);
// int a2Size = sizeof(a2);
// printf("a1SIze = %d , a2Size = %d \n", a1Size , a2Size);
//计算字符串中的空格数
/*
char str[] = "iPhone 6 Plus";
char str1[] = "iPhone 7 minPlus";
int i = 0;
int blankCount = 0;
while (str[i] != '\0') {
if (str[i] ==' ') {
blankCount++;
}
i++;
}
printf("blankCount = %d , i = %d\n",blankCount,i);
//计算字符串中的P的个数
int i = 0;
// int count = 0;
// while (str[i] != '\0') {
// if (str[i] == 'P') {
// count++;
// }
// i++;
// }
// printf("字符串中的P : %d",count);
//计算字符串str1的长度
int lengh = 0;
//只要没有配到‘\0’,lengh一直相加
while (str1[i] != '\0') {
lengh++;
i++;
}
printf("lengh = %d\n",lengh);
*/
//把字符串str1拷贝到str2 str1的\0为准
/*
char str1[] = "iPhone 6 Plus";
char str2[] = "iPhone 7 minPlus";
int i = 0;
while (str1[i] != '\0') {
str2[i] = str1[i];
i++;
}
str2[i] = '\0';
printf("%s\n",str2);
*/
//字符串的比较 判断条件:1、不同之处 2、 都为'\0'
/*
char str1[] = "iPhone 6 Plus";
char str2[] = "iPhone 7 minPlus";
int i = 0;
while (!(str1[i] != str2[i])|| ((str1[i] == '\0') && (str2[i] == '\0'))) {
i++;
}
printf("%d\n",str1[i] - str2[i]);
*/
/*
char str1[100] = "iPhone 6 Plus";
char str2[100] = "iPhone 7 minPlus";
//字符串求长度
unsigned long length1 = strlen(str1);
unsigned long length2 = strlen(str2);
printf("%lu ,%lu\n",length1,length2);
//字符串比较 strcmp(1,2) 将‘1’ - ‘2’。
int cmplength = strcmp(str2, str1);
int a = strcmp(str1, str2);
printf("%d\n",cmplength);
printf("%d\n",a);
//字符串拷贝 strcpy(1,2) 将‘2’拷贝到‘1’中 并且‘1’一定要有足够的空间
strcpy(str1, str2);
printf("%s\n",str1);
//字符串拼接 strcat(1,2) 将‘2’ 拼接到 ‘1’中 并且‘1’要有足够的空间
strcat(str1, str2);
printf("%s\n",str1);
*/
/*
输入一行字符,分别计算其中的字母,空格,数字和其他的个数
*/
//声明4各变量分别存储字母空格 数字 其他
/*
char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if ((c>='a' && c<='z') || ( c>='A' && c<='Z'))
letters++;
else if (c==' ')
space++;
else if (c>='0' && c<='9')
digit++;
else
other++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);
int i;
char str[100] = "iopdfds dsa dlfk* $$d ^^ jndlas !!!";
int leller=0,space=0,digit=0,other=0;
while (str[i] != '\0') {
if((str[i] >= 'a' && str[i] <= 'z' )||( str[i] >= 'A' && str[i] <= 'Z')){
leller++;
}else if( str[i] == ' '){
space++;
}else if( str[i] >= '0' && str[i] <= '9'){
digit++;
}else{
other++;
}
i++;
}
printf("letter = %d\nspace = %d\ndigit = %d\nother = %d\n",leller,space,digit,other);
*/
}
return 0;
}
C语言第五天:
int main(int argc,const char * argv[]) {
@autoreleasepool {
/*
//二维数组
int a[][4] = { { 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9, 10, 11, 12} };
//打印二维数组
//外层for循环控制行
//内层for循环控制列
// int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d\t",a[i][j]);
}
printf("\n");
}
//关于二维数组 行可以省略 但是列不能省略
*/
//
/*
int a[3][4] = {0};
//随机赋值 10-50
printf("**************\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
int k = arc4random() % (50-10) + 10;
int l = arc4random() ;
BOOL isDoubleSingle = NO;
if (l % 2 == 0) {
isDoubleSingle = YES;
}else{
isDoubleSingle = NO;
}
if (isDoubleSingle) {
a[i][j] = k;
}else{
a[i][j] = k *(-1);
}
}
printf("\n");
}
//打印二维数组
printf("**************\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d\t",a[i][j]);
}
printf("\n");
}
//打印二维数组中的最大值
//准备一个变量存放最大值
int max = 0;
int min = 0;
int sum = 0;
//最大值 最小值
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
//先把第一个元素拿到,在进行比较大小
if (i == 0 && j == 0) {
min = a[i][j];
max = a[i][j];
}else{
//比较并拿到最小值
if (min > a[i][j]) {
min = a[i][j];
}
if (max < a[i][j]) {
max = a[i][j];
}
}
sum += a[i][j];
}
}
printf("max = %d\n",max);
printf("min = %d\n",min);
printf("sum = %d\n",sum);
*/
/*
//二维数组排序 对每一行进行排序然后输出
int a[3][4] = {0};
// 随机赋值 10-50
printf("原始数组\n");
printf("********************\n");
for (int i= 0; i<3; i++) {
for (int j = 0; j<4; j++) {
int k = arc4random() % 41 + 10;
a[i][j] = k;
printf("%d\t",a[i][j]);
}
printf("\n");
}
printf("********************\n");
for (int i = 0; i < 3; i++) {
//每一次进来,都能得到一行 数组
//开始对每一个小数组进行排序 j控制趟数 k控制比较次数
for (int j = 0; j < 4 - 1; j++) {
for (int k = 0; k < 4-1-j; k++) {
if (a[i][k] > a[i][k+1]) {
int temp = a[i][k];
a[i][k] = a[i][k+1];
a[i][k+1] = temp;
}
}
}
}
printf("排序之后的二维数组:\n");
for (int i =0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d\t",a[i][j]);
}
printf("\n");
}
*/
/*
//行和列交换的二维数组
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int b[4][3] = {0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
b[j][i] = a[i][j];
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
printf("%d\t",b[i][j]);
}
printf("\n");
}
*/
//字符串数组
/*
char a[6][100] = {"jfiosdaf","facbvewef","lkasjfod","mfdkdsfpdf","dkdkfd","fdsfkdkf"};
for (int i = 0; i < 6; i++) {
printf("%s\n",a[i]);
}
printf("*********************");
printf("\n开始排序\n");
for (int i = 0; i < 6 - 1; i++) {
for (int j = 0; j < 6 - 1 - i; j++) {
if (strcmp(a[j], a[j+1]) > 0) {
char temp[100] = {"\0"};
strcpy(temp, a[j]);
strcpy(a[j], a[j+1]);
strcpy(a[j+1], temp);
}
}
}
for (int i = 0; i < 6; i++) {
printf("%s\n",a[i]);
}
*/
/*
//字符串数组中最长的打印出来
char a[5][100] = {"shfjdlf","dooppdo","fansiofni","fdoiasefp","polknqwytfd"};
printf("定义一个变量用于存储最长的字符串,并打印!:\n");
char maxlen[100] = {"\0"};
for (int i = 0; i < 5; i++) {
if (strlen(maxlen) < strlen(a[i])) {
strcpy(maxlen, a[i]);
}
}
printf("%s\n",maxlen);
printf("找到最长的字符串的位置,标记出来,并打印:\n");
unsigned long lenth = 0;
int index = 0;
for (int i = 0; i < 5; i++) {
if (strlen(a[i]) > lenth) {
lenth = strlen(a[i]);
index = i;
}
}
printf("%s\n",a[index]);
*/
/*
//按照字符串的长度排序
char a[6][100] = {"jkdlasfn","fidosafnd","zdfldf","dfodpsoanfe","dfnsouaieuge","adndfk"};
for (int i = 0; i < 6 - 1; i++) {
for (int j = 0; j < 6 - 1 - i; j++) {
if (strlen(a[j]) > strlen(a[j+1])) {
char temp[100] = {"\0"};
strcpy(temp, a[j]);
strcpy(a[j], a[j+1]);
strcpy(a[j+1], temp);
}
}
}
for (int i = 0; i < 6; i++) {
printf("%s\n",a[i]);
}
*/
//三维数组
/*
//对一个三位数字随机赋值,并打印输出
int a[2][3][4] = {0};
for (int i = 0; i < 2; i++) {
printf("******************\n");
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 4; k++) {
int n = arc4random() %41 + 10;
a[i][j][k] = n;
printf("%d\t",a[i][j][k]);
}
printf("\n");
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 4; k++) {
printf("%d\t",a[i][j][k]);
}
printf("\n");
}
printf("***********************\n");
}
*/
}
return 0;
}
C语言第六天
//
// main.m
// C-Lesson6
//
// Created by lanouhn on 15-6-30.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
//相当于把Function文件整个.h和.m全部拷贝到本文件
#import "Function.h"
//函数
//声明一个函数
//返回值 函数名 参数列表(参数中用逗号隔开)
// 有参函数
// 无参函数
//int xiaoSanMaiYan(int a);
//int xiaoSanMaiYan2(int a,int b);
//打印 Hello World
//函数声明
//函数只能嵌套调用,不能嵌套定义
int main(int argc,const char * argv[]) {
@autoreleasepool {
/*
printfHelloWorld();
printf("%d\n",studentCount());
int max = maxValue(7, 9);
printf("max = %d\n",max);
int x = 8, y = 9;
printf("max = %d\n",maxValue(x, y) );
*/
/*
int a = 8 , b = 4;
printf("maxValue = %d\n",maxValueFromTwo(a, b));
printf("minValue = %d\n",minValueFromTwo(a, b));
printf("女生人数 %d\n",girlNumber());
printf("全班人数 %d\n",studentNumber());
printf("男生人数 %d\n",boyNumber());
*/
/*
printfOneToN(5);
int a = 5;
printf("%d\n",squareN(a));
printf("%d\n",sumFrom1ToNSquare(a));
int max = 0;
max = maxValueNumber(3, 5, 9);
printf("%d\n",max);
int min = 0;
min = minValueNumber(3, 5, 7);
printf("%d\n",min);
int mid = midValueNumber(5, 6, 9);
printf("%d\n",mid);
int max1 = max4Number(3, 6, 9, 7);
printf("%d\n",max1);
int sum = dayOfYear(1990, 12, 16);
printf("%d\n",sum);
printf("位数:%d\n",numberOfWeiShu(112));
printf("四则运算: %.2f\n",resultOfSiZe(4,'+',9));
*/
}
return 0;
}
//
// Function.h
// C-Lesson6
//
// Created by lanouhn on 15-6-30.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Function :NSObject
//函数的声明
//两个数的最大值
int maxValueFromTwo(int a ,int b);
int studentCount();
void printfHelloWorld();
int maxValue(int a ,int b );
int minValueFromTwo(int a,int b);
//函数调用
//全班人数
int studentNumber();
//男生人数
int boyNumber();
//女生人数
int girlNumber();
//打印1 - n
void printfOneToN(int count);
//求n的平方
int squareN(int a);
//求1 - n 的平方和
int sumFrom1ToNSquare(int n);
//求三个数的最大值
int maxValueNumber(int a ,int b ,int c);
//三个数的最小值
int minValueNumber(int a ,int b ,int c );
//三个数的中间值
int midValueNumber(int a ,int b ,int c);
int sumNumber(int a ,int b ,int c);
//四个数的最大值
int max4Number(int a ,int b ,int c ,int d);
//day是这一年的第几天
int dayOfYear(int year,int month ,int day);
//求一个数字的位数
int numberOfWeiShu(int a);
//四则运算
float resultOfSiZe(float a ,char b , float c);
@end
//
// Function.m
// C-Lesson6
//
// Created by lanouhn on 15-6-30.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import "Function.h"
//函数的实现
@implementation Function
int maxValueFromTwo(int a ,int b)
{
if (a > b) {
return a;
}else{
return b;
}
}
//实现两个数求大小
int maxValue(int a ,int b )
{
//测试参数实参和形参
a++;
return (a > b ? a : b);
}
int studentCount()
{
return 42;
}
void printfHelloWorld()
{
printf("******************\n");
printf(" Hello World!\n");
printf("******************\n");
}
int minValueFromTwo(int a ,int b)
{
if (a < b) {
return a;
}else{
return b;
}
}
//全班人数
int studentNumber()
{
returnboyNumber() + girlNumber();
}
//男生人数
int boyNumber()
{
return 40;
}
//女生人数
int girlNumber()
{
return 4;
}
void printfOneToN(int count)
{
for (int i =1; i <= count; i++) {
printf("%d\t",i);
}
printf("\n");
}
int squareN(int a)
{
return (a * a);
}
int sumFrom1ToNSquare(int n)
{
int sum = 0;
for (int i =0; i <= n; i++) {
sum +=squareN(i);
}
return sum;
}
int maxValueNumber(int a ,int b ,int c)
{
int max = 0;
max = (a > b ? a : b) > c ? (a > b ? a : b) : c ;
return max;
}
int minValueNumber(int a ,int b ,int c )
{
int min = 0;
min = (a < b ? a : b) < c ? (a < b ? a : b) : c ;
return min;
}
int sumNumber(int a ,int b ,int c)
{
int sum = a + b + c ;
return sum ;
}
int midValueNumber(int a ,int b ,int c)
{
int mid = 0;
int max = maxValueNumber(a, b, c);
int min = minValueNumber(a, b, c);
mid =sumNumber(a, b, c) - max - min ;
return mid;
}
int max4Number(int a ,int b ,int c ,int d)
{
int p = maxValueNumber(a, b, c);
int q = maxValueFromTwo(p, d);
return q;
}
int dayOfYear(int year,int month ,int day)
{
/*
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s = 0;
printf("请输入日期:");
scanf("%d%d%d",&year,&month,&day);
if (year%400==0||(year%4==0&&year%100!=0)) {
a[2]=29;
}
for (i=0; i<month; i++) {
s=s+a[i];
}
if (day>a[month]||month>13) {
printf("没有这一天");
}else{
printf("%d天",s+day);
}
return s;
*/
BOOL isRunNian = YES;
//判断是否是闰年
if (year % 400 ==0 || (year % 100 !=0 && year % 4 ==0)) {
isRunNian =YES;
}else{
isRunNian =NO;
}
int monthDays[12] = {31 ,28,31,30,31,30,31,31,30,31,30,31};
//存放所有的天数
int allDays = 0;
for (int i =0 ; i < month - 1; i++) {
allDays = allDays + monthDays[i];
}
allDays = allDays + day;
//判断是否是闰年,并且是否超过二月
if(isRunNian && (month > 2)){
allDays++;
}
return allDays;
}
int numberOfWeiShu(int a)
{
int count = 0;
while ( a / 10 !=0) {
a = a /10;
count ++;
}
return count + 1;
}
float resultOfSiZe(float a ,char b , float c)
{
float result = 0.0;
switch (b) {
case '-':
result = a - c ;
break;
case '+':
result = a + c ;
break;
case '*':
result = a * c;
break;
case '/':
{
if ( c != 0) {
result = a / c ;
}else {
printf("除数不能为0!\n");
}
}
break;
default:
printf("四则运算中没有这个符号,请重新输入:\n");
break;
}
return result;
}
@end
//
// main.m
// C-Lesson6.1
//
// Created by lanouhn on 15-6-30.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
int addTwo(int a )
{
return a + 2;
}
void function1(int a[],int count)
{
for (int i =0; i < count; i++) {
a[i] =1;
}
}
//升序排序方法
void sortArray(int a[],int count)
{
for (int i =0; i < count -1; i++) {
for (int j =0; j < count - 1 - i; j++) {
if (a[j] > a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (int i =0; i < count; i++) {
printf("%d\t",a[i]);
}
}
//求一个字符串中的空格数
int blankOfString(char a[])
{
int i = 0;
int count = 0;
while (a[i] != '\0') {
if (a[i] == ' ') {
count ++;
}
i++;
}
return count;
}
//递归调用
//求n!的
int nnnnn(int n)
{
if (n > 0) {
return nnnnn(n -1) * n;
}else{
return 1;
}
}
int main(int argc,const char * argv[]) {
@autoreleasepool {
/*
int x = 6;
int b = addTwo(x);
printf("x = %d\nb = %d\n",x ,b);
function1(b,5);
for (int i = 0; i<5; i++) {
printf("%d\t",b[i]);
}
int b[5] = {4,5,6,7,8};
sortArray(b, 5 );
char str[100] = "sfjid fdsfodns dofn d fdsfidsfo ndfdsof nd ondf dnf";
int count = blankOfString(str);
printf("空格数:%d\n",count);
int result = nnnnn(5);
printf("%d\n",result);
*/
/*
int a ,b ,c ;
printf("请输入三个数:\n");
scanf("%d %d %d",&a,&b,&c);
int min = a < b ? (a < c ? a : c ):( b < c ? b : c );
printf("%d\n",min);
int mid = a < b ? (b < c ? b : c) : (a < c ? a : c);
printf("%d\n",mid);
*/
}
return 0;
}
C语言第七天
//
// Function.h
// C-Lesson7
//
// Created by lanouhn on 15-7-1.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
//构造一个新的类型,用基本数据类型当成员变量也可以用构造类型当成员变量
struct student{
char name[30];
char sex ;
int age;
};
typedef struct teacher{
char name[30];
char sex ;
int age;
int classes;
}Teacher;
typedef struct computer {
char jianPan[30];
char xianShiQi[30];
char shuBiao[30];
}Computer;
struct lanouStudent{
char name[30];
float cResult;
float ocResult;
float UIResult;
};
//点结构体
struct myPoint{
float x ;
float y ;
};
//矩形结构体
struct myRect{
struct myPoint p;
float width;
float height;
};
//打印一个学生的信息
void printfOneStudentInfo(struct student stu);
//循环打印一个学生数组的信息
void printfStudents(struct student stus[],int count);
//按照学生的年龄排序学生数组
void sortedStudentsByAge(struct student stus[] ,int count);
//求一个学生的平均成绩
float averageScore(struct lanouStudent stu);
//循环打印平均分
void printfAverageScore(struct lanouStudent stus[] ,int count);
//按C语言排序
void sortedStudentsByC(structlanouStudent stus[] , int count);
//按OC排序
void sortedStudentByOc(structlanouStudent stus[], int count);
//打印一个蓝鸥学生的信息
void printfOneLanouStudentInfo(structlanouStudent stu);
//打印一个数组
void printfLanouStudentes(structlanouStudent stus[] , int count);
//根据学生的姓名的长度进行排序
void sortedLanouStudentsByName(structlanouStudent stus[] , int count);
//根据学生姓名的大小进行排序
void sortedByName(structlanouStudent stus[] , int count );
// Function.m
// C-Lesson7
//
// Created by lanouhn on 15-7-1.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import "Function.h"
/*
void printfOneStudentInfo(struct student stu)
{
printf("name = %s\n",stu.name);
printf("sex = %c\n",stu.sex );
printf("age = %d\n",stu.age);
printf("****************************\n");
}
void printfStudents(struct student stus[],int count)
{
for (int i = 0 ; i < count ; i ++) {
printfOneStudentInfo(stus[i]);
}
}
void sortedStudentsByAge(struct student stus[] ,int count)
{
for ( int i = 0 ; i < count - 1 ; i ++) {
for (int j = 0 ; j < count - 1 - i; j++) {
//按照年龄排序,比较并交换学生位置
if (stus[j].age > stus[j+1].age) {
struct student temp = stus[j];
stus[j] = stus[j+1];
stus[j+1] = temp;
}
}
}
}
*/
float averageScore(structlanouStudent stu)
{
float result = 0.0;
result = (stu.cResult + stu.ocResult + stu.UIResult) /3.0;
return result;
}
void printfAverageScore(structlanouStudent stus[] , int count)
{
for (int i =0; i < count; i++) {
float result = averageScore(stus[i]);
printf("学生 %d的平均分 %.2f\n",i+1,result);
}
}
void sortedStudentsByC(structlanouStudent stus[] , int count)
{
for (int i =0; i < count - 1 ; i ++) {
for (int j =0 ; j < count - 1 - i; j ++) {
if (stus[j].cResult > stus[j+1].cResult ) {
struct lanouStudent temp = stus[j];
stus[j] = stus[j+1] ;
stus[j+1] = temp;
}
}
}
}
//void sortedStudentByOc(struct lanouStudent stus[], int count)
//{
// for (int i = 0; i < count - 1; i ++) {
// for (int j = 0 ; j < count - 1 - i; j ++) {
// if (stus[j].ocResult > stus[j+1].ocResult ) {
// struct lanouStudent temp = stus[j];
// stus[j] = stus[j+1];
// stus[j+1] = temp;
// }
// }
// }
//}
void printfOneLanouStudentInfo(structlanouStudent stu)
{
printf("name = %s\n",stu.name);
printf("CResult = %.2f\n",stu.cResult);
printf("OcResult = %.2f\n",stu.ocResult);
printf("UIResult = %.2f\n",stu.UIResult );
printf("*************************************\n");
}
void printfLanouStudentes(structlanouStudent stus[] , int count)
{
for (int i =0; i < count; i ++) {
printfOneLanouStudentInfo(stus[i]);
}
}
//根据学生的姓名长度进行排序
void sortedLanouStudentsByName(structlanouStudent stus[] , int count)
{
for (int i =0; i < count - 1; i++) {
for ( int j =0; j < count - 1 -i ; j++) {
if (strlen(stus[j].name) >strlen(stus[j+1].name)) {
struct lanouStudent temp = stus[j];
stus[j] = stus[j+1];
stus[j+1] = temp;
}
}
}
}
//根据学生姓名的大小进行排序
void sortedByName(structlanouStudent stus[] , int count )
{
for (int i =0; i < count - 1; i++) {
for ( int j =0; j < count - 1 -i ; j++) {
if (strcmp((stus[j].name), (stus[j+1].name)) >0) {
struct lanouStudent temp = stus[j];
stus[j] = stus[j+1];
stus[j+1] = temp;
}
}
}
}
//
// main.m
// C-Lesson7
//
// Created by lanouhn on 15-7-1.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Function.h"
//结构体
/*
结构体内存分配空间原则:
1、按照最大的数据类型分配空间
2、以内存对其的方式分配空间
*/
typedef struct person{
char name[30];
int age ;
char sex ;
}Person;
int main(int argc,const char * argv[]) {
@autoreleasepool {
/*
//通过自定义的结构体类型,定义一个变量stu并赋初值
struct student stu = {"尹江涛",'m',120,133.5,175.2};
//通过结构体变量,点出该变量内部的成员变量
printf("%d\n",stu.age);
printf("%s\n",stu.name);
struct teacher tea = {"翔哥",'m',36,30};
*/
/* struct teacher jianRen = {"刘翔宇",'m',36,30};
struct student stu1 = {"尹江涛",'m',24};
struct student stu2 = {"禹尧",'w',22};
struct student stu3 = {"赵立阳",'m',23};
//存放结构体的数组
for (int i = 0; i < 3; i++) {
printf("%s\t",stus[i].name);
printf("%c\t",stus[i].sex);
printf("%d\t",stus[i].age);
printf("\n");
printfOneStudentInfo(stus[i]);
}
struct student stus[] = {stu1,stu2,stu3};
sortedStudentsByAge(stus, 3);
printfStudents(stus, 3);
*/
/*
struct lanouStudent stu1 = {"尹江涛",78.5,89.2,85.8};
//求这个学生的平均分
float result = averageScore(stu1);
printf("result = %.2f\n",result);
struct lanouStudent stu1 = {"yuyao",78.5,89.2,85.8};
struct lanouStudent stu2 = {"huangzheng",88.4,86.5,84.6};
struct lanouStudent stu3 = {"zhanghuai",78.9,89.87,90.56};
//三个学生放进一个学生数组中
struct lanouStudent stus[] = {stu1,stu2,stu3};
//循环打印三个学生的平均值
// printfAverageScore(stus, 3);
//按照学生C语言的成绩排序 升序
// sortedStudentsByC(stus, 3);
// sortedStudentByOc(stus, 3);
//sortedLanouStudentsByName(stus, 3);
sortedByName(stus,3);
printfLanouStudentes(stus, 3);
*/
/*
struct myPoint point1 = { 6, 4.5 };
struct myPoint point2 = { 6, 4.5 };
if ((point1.x == point2.x) && (point1.y == point2.y)) {
printf("两个点重合\n");
}else if(point1.x == point2.x){
printf("两个点在同一条竖直线上\n");
}else if(point1.y == point2.y){
printf("两个点在同一条横线上\n");
}else{
printf("两个点之间没有关系\n");
}
*/
/*
struct myRect rect1 = { {4,5.5}, 12, 9 };
printf(" width = %.2f\n",rect1.width);
printf(" x = %.2f\n",rect1.p.x);
printf(" y = %.2f\n",rect1.p.y);
//typedef 类型名 重定义
int a = 5;
typedef int xiaohua;
xiaohua b = 9;
printf("%lu\n",sizeof(b));
printf("%lu\n",sizeof(a));
struct teacher teach1 = {"qifei",35,'w'};
Teacher teach2 = {"zuoxiuli",32,'w'};
Computer computer = {"双飞燕","三星","镭射"};
Person per1 = {"yuyao",'m',23};
printf("%lu\n",sizeof(per1));
printf("%lu\n",sizeof(Person));
*/
}
return 0;
}
C语言第八天
//
// main.m
// C-lesson8.pre
//
// Created by lanouhn on 15-7-2.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Function.h"
int main(int argc,const char * argv[]) {
@autoreleasepool {
//指针
//指针变量内存空间占8个字节 sizeof指针变量出来的空间永远是8个字节
/*
//定义一个变量a
int a = 5;
int b = 8;
//定义一个指针变量p指向内存中整型变量a的地址
int *p = &a;
//指针p ,*p是取地址里面的内容
//定义时出现*意思是把一个普通变量修饰成指针变量
//在其他地方对指针变量用 *意识是 把指针变量指向的地址内容取出来
*p = 7;
//指针重指向 指针指向b的地址
p = &b;
// * 地址 : 把地址里面的内容拿到
*p = 100;
printf("a = %d\n",a);
printf("b = %d\n",b);
// 直接取址 间接取址
*/
/*
// 内存由高到低分配 a的地址高于b的地址
int a = 5;
int b = 8;
int *p = &a;
int *q = &b;
printf("a的地址 %p\n",&a);
printf("p 取地址 %p\n",p);
printf("b的地址 %p\n",&b);
printf("q 取地址 %p\n",q);
printf("%lu\n",sizeof(p));
// char *j = &a;
// printf(" %lu\n",sizeof(j));
//指针的运算 地址只能加减 指针类型决定每次移动的字节数
int a = 5;
int b = 8;
int *p = &a;
int *q = &b;
char * j = &a;
printf(" p = %p\n",p);
printf(" q = %p\n",q);
printf(" j = %p\n",j);
//定义时候指针的类型决定:
//1、指针每一+1 或 - 1的跳动,跳动多少个字节
*(p - 1) = 100;
printf(" b = %d\n",b);
j = &b;
printf("%d\n",*(j + 4));
*/
//指针数组
/*
short a [5] = { 3, 7, 8, 5, 6 };
char *p = a;
int *q = a ;
printf("%d\n",*p);
printf("%D\n",*q);
// int *p = a;
// printf("%d\n",a[2]);
// printf("%d\n",2[a]);
//
// printf("%d\n",*p);
// printf("%d\n",*(P + 1));
//循环打印数组里面的元素 指针的方式打印
int a[5] = {4,2,7,9,3};
int * p = a;
for (int i = 0 ; i < 5; i++) {
printf("%d\t",*(p+i));
}
int a = 5 ,b = 8;
printf("a = %d , b = %d\n",a , b);
printf("**************************\n");
changeTwoValueByCommon(a, b);
printf("a = %d , b = %d\n",a , b);
printf("**************************\n");
changeTwoValueByAddress(&a, &b);
printf("a = %d , b = %d\n",a , b);
int array[5] = {6,3,4,7,8};
//printfArray(array, 5);
//valueationArray(array, 5);
sortedArray(array, 5);
//指针字符串 %s从给定的地址开始打印,一直到‘\0’结束
char str[100] = "fdshjlfdfnjklk";
char *p = str;
printf("%s\n",p);
//存的是从常量区拷贝过来的内容
char a[] = "iPhone";
//存的是常量区字符串的地址
//在常量去进行操作就会崩
char *p = a ;
*(p + 1 ) = 'a';
printf("%s\n",a);
//空地址区 内存中最低的地址
int a = 6;
int *p = &a;
printf("%d\n",*p);
printf("%p\n",p);
//代表一个空地址
p = NULL;
p = Nil;
printf("%p\n",p);
*/
//数组指针
int a1 = 4, a2 =5, a3 = 6, a4 =7, a5 = 8;
int *p1 = &a1;
int *p2 = &a2;
int *p3 = &a3;
int *p4 = &a4;
int *p5 = &a5;
// int a[5] = { a1, a2, a3, a4, a5 };
// char b[5] = {'q','k','w','u','g'};
int *pp[5] = { p1, p2, p3, p4, p5 };
char c[3][100] = { "iPhone", "android","winPhone" };
// *地址 **内容
printf("%d\n",*pp[3]);
// printf("%d\n",**(pp+3));
//
//定义一个指针变量
// char *str = c;
printf("%s\n",c[0]);
// printf("%c\n",**(c + 1));
printf("%c\n",*(*(c +0 + 1)));
// printf("%c\n",*(str+1));
}
return 0;
}
//
// Function.m
// C-lesson8.pre
//
// Created by lanouhn on 15-7-2.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import "Function.h"
//声明一个方法 交换两个变量的值
void changeTwoValueByCommon(int a,int b)
{
int temp = a ;
a = b;
b = temp;
printf("a = %d , b = %d\n",a , b);
}
//地址方法 交换两个变量的值
void changeTwoValueByAddress(int * p ,int * q)
{
int temp = *p;
*p = *q;
*q = temp;
printf(" *p = %d\n",*p);
printf(" *q = %d\n",*q);
}
//通过地址的方式 循环打印一个数组
void printfArray(int * p ,int count)
{
for (int i =0; i < count; i++) {
printf("%d\t",*(p+i));
}
}
//对一个数组赋随机值并打印
void valueationArray(int *p ,int count)
{
for (int i =0; i < count ; i ++) {
int k = arc4random() %30 + 10;
*(p + i) = k;
}
printfArray( p , count);
}
//对一个数组进行升序排序并打印
void sortedArray(int *p ,int count )
{
for (int i =0; i< count - 1; i++) {
for (int j =0; j < count - 1 - i; j++) {
if ( *(p + j) > *(p+j+1)) {
int temp = *( p + j);
* (p + j) = *(p + j+1);
*(p +j+1) = temp;
}
}
}
printfArray(p, count);
}
C语言第九天
//
// main.m
// C-Lesson9.ptr
//
// Created by lanouhn on 15-7-3.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Function.h"
//宏定义
//两种写法
// 1、宏名字 全部大写
// 2、宏名字k+首字母大写
#define PI 3.1415926
#define ADD(A,B) (A + B)
#define STUDENTNUMBER 2015063020
// 预编译 条件编译
#define kLiuxiangyu 11111
int a =6;
//第一种条件编译写法
#ifdef kLiuXiangYu
#define PPF 123
#else
#define PPT 456
#endif
//第二种条件编译写法
#ifndef kLiuXiangYu
#define JJJ 123
#else
#define JJJ 456
#endif
//第三种条件编译写法
#if kLiuXiangYu
#define KKK 1213
#else
#define KKK 4546
#endif
int main(int argc,const char * argv[]) {
@autoreleasepool {
/*
Student stu1 = {"李显政",36,'m'};
Student *p = Nil;
p = &stu1;
printf("name = %s\n",stu1.name);
// ->指向操作符,通过一个地址,指向里面的小空间 ->与地址有关 指向地址取内容
printf("name = %s\n",p->name);
printf("name = %s\n",(*p).name);
MyPoint p1 = {3.6,2.5};
MyPoint p2 = {4.8,1.2};
float ybian = p1.x - p2.x;
float xbian = p1.y - p2.y;
float d = sqrt(xbian * xbian - ybian * ybian);
printf("两点之间的距离:%.2f\n",d);
*/
/*
//小写改为大写 小写 - 大写 = 32
Student stu1 = {"abcdef",36,'m'};
Student * p = nil;
p = &stu1;
int i = 0;
while ( p->name[i]) {
p->name[i] = p->name[i] - 32;
i++;
}
printf("%s\n",p->name);
while (*(p->name+i) != '\0' ) {
*(p->name+i) = *(p->name+i) - 32;
i++;
}
printf("%s\n",p->name);
//
lanouStudent stu1 = {"禹尧",'m',80.5};
lanouStudent stu2 = {"徐文博",'f',86.5};
lanouStudent stu3 = {"尹江涛",'m',89.5};
lanouStudent stus[3] = {stu1,stu2,stu3};
// addScore(stus, 3);
// sortedLanouStudent(stus, 3);
goodStudent(stus, 3);
//结构体对象取地址变量 用点语法
//结构体对象所在的空间的地址取成员对象 用指向操作符
*/
// float r = 3.0;
// printf("圆的周长:%.2f\n",2 * PI * r);
// printf("圆的面积:%.2f\n",r * r * PI);
//
// int a = ADD( 6, 8 ) * ADD( 4, 6 );
// printf("%d\n",a);
printf("%d\n",PPT);
printf("%d\n",JJJ);
printf("%d\n",KKK);
}
return 0;
}
//
// Function.h
// C-Lesson9.ptr
//
// Created by lanouhn on 15-7-3.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef struct student{
char name[30];
int age;
char sex;
}Student;
//点 结构体
typedef struct myPoint{
float x ;
float y ;
}MyPoint;
typedefstruct lanouStudent{
char name[30];
float score;
char sex;
}lanouStudent;
//按照的成绩学生升序排序
void sortedLanouStudent(lanouStudent *p ,int count);
//打印一组学生
void printfLanouStudent(lanouStudent *p ,int count);
//学生的成绩加60分,如果超过满分那就100,并打印输出
void addScore(lanouStudent *p,int count);
//学生成绩大于等90优等生 ,在学生的姓名后面拼接(A)并打印
void goodStudent(lanouStudent *p ,int count);
//
// Function.m
// C-Lesson9.ptr
//
// Created by lanouhn on 15-7-3.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import "Function.h"
//按照的成绩学生升序排序
void sortedLanouStudent(lanouStudent *p ,int count)
{
for (int i=0; i < count - 1; i++) {
for (int j =0; j < count -1 - i; j++) {
if (p[j].score > p[j+1].score) {
lanouStudent temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
printfLanouStudent(p, count);
}
//打印一组学生
void printfLanouStudent(lanouStudent *p ,int count)
{
for (int i =0; i < count; i++) {
printf("name = %s score = %.2f\n",p[i].name,p[i].score);
}
}
//学生的成绩加60分,如果超过满分那就100,并打印输出
void addScore(lanouStudent *p, int count)
{
for (int i =0; i < count ; i++) {
if ((p + i)->sex =='m') {
(p + i)->score = (p + i)->score +60;
}
if ((p + i)->score >100.00) {
(p + i)->score =100.00;
}
}
printfLanouStudent(p, count);
}
//学生成绩大于等90优等生 ,在学生的姓名后面拼接(A)并打印
void goodStudent(lanouStudent *p ,int count)
{
for (int i =0; i < count ; i++) {
if ((p + i)->score >90) {
strcat((p+i)->name,"(A)");
}
}
printfLanouStudent(p, count);
}
C语言第十天
//
// main.m
// C-Lesson10
//
// Created by lanouhn on 15-7-6.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef struct student{
char name[30];
int age;
char sex;
}Student;
int main(int argc,const char * argv[]) {
@autoreleasepool {
/*
//栈区
//系统分配空间,系统释放
int a = 5;
int *p = &a;
//堆区
//特点 : 用户自己分配自己释放
//malloc自己分配函数 以字节为单位
//malloc 动态内存分配函数,每次分配n个字节空间
//空间释放函数 free()
// int b = malloc(4);
// int *q = &b;
//栈区位置比堆区高
int *q = malloc(4);
printf("%p\n",p);
printf("%p\n",q);
//void* 泛型指针类型
//如果不释放,则系统内存泄露(内存浪费但是系统不会崩溃)
//如果内存空间释放次数过多,则造成过度释放(系统崩溃)
free(q);
//空间释放完毕之后要清空
q = nil;
//静态区
//特点:静态取得空间只被初始化一次而且空间里面的内容,只有到程序结束后,才会被释放
//静态区变量声明static
static int c = 6;
printf("c = %p\n",&c);
//const 静态初始化
// const int b = 9;
*/
/*
//堆区 由低到高分配
int *p = malloc(4);
int *q = malloc(4);
*p = 6;
*q = 7;
printf("p = %p\n",p);
printf("q = %p\n",q);
printf("p = %d\n",*p);
printf("q = %d\n",*q);
// 释放 指空
free(p);
p = nil;
free(q);
q = nil;
//分配一个空间 存放数组 元素个数 5 类型 int
p = malloc(20);
for (int i = 0; i < 5; i++) {
*(p+i) = i + 1;
}
for (int i = 0; i < 5; i++) {
printf("%d\t",*(p+i));
}
//分配一百个字节的空间存放字符串 每个字符都是一个字节 所以不能整形指针变量
char *p = malloc(100);
printf("请输入一个字符串\n");
scanf("%s",p);
//求输入的字符串中的数字个数
int i = 0;
int count;
while ( *(p+i) != '\0') {
if ( (*(p+i) > 0) && (*(p+i) <= 9)) {
count++;
}
i++;
}
printf("i = %d\n",i);
printf("count = %d\n",count);
*/
/*
//动态分配一个内存,存放三行四列的二维数组
int (*p)[5] = malloc(48);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
int k = arc4random()%10 + 1;
*(p+i)[j] = k;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d\t",*(p+i)[j]);
}
printf("\n");
}
//对a求n次方
// int a = 9;
// float b = powf(a, 2);
// printf("%.2f\n",b);
//malloc分配的空间,不一定干净,需要我们自己来清洗一下
int *p = malloc(80);
for (int i = 0; i < 20; i++) {
*(p+i) = 0;
printf("%d\n",*(p + i));
}
*/
//calloc 内存清洗函数 不仅分配空间还帮忙清洗一下空间
/*
int *p = calloc(20, sizeof(int));
for (int i =0; i < 20; i++) {
printf("%d\n",*( p + i ));
}
//分配一百个字节的空间
int *q = calloc(100, sizeof(int ));
for (int i = 0; i < 100; i++) {
printf("%d\n",*(q + i));
}
*/
//realloc 内存重分配函数
/*
//reallocd(A , B);
//A代表需要重新分配空间的地址
//B为重新分配的空间大小
//如果原有空间后面有 b - sizeof(a)这么大,则直接在原有空间分配
//若没有,则重新向内存请求一个足够大的空间并返回新空间的地址
int *p = malloc(8);
*p = 4;
*(p+1 ) = 5;
printf("%d\n",*p);
printf("%d\n",*(p+1));
int *q = realloc(p, 12);
*(q+2) = 9;
printf("%d\n",*(q+2));
printf("p = %p\n",p);
*(q + 3) = 10;
realloc(q, 16);
printf("q = %p\n",q);
*/
//memcpy 内存拷贝函数
// memcpy(A,B,N); 从空间B中拷贝 N * 类型 个字节到B空间
/*
int *p = malloc(12);
int *q = malloc(12);
for (int i = 0; i < 3; i++) {
printf("%d\t",*(p + 1));
}
//拷贝P空间的12个字节到q中去
memcpy(q, p, 3);
for (int i= 0; i< 3;i++) {
printf("%d\t",*(q+1));
}
*/
//memcmp 内存比较函数 按照字节比较
/*
char *a = malloc(4);
char *b = malloc(4);
*(a + 0) = 'e';
*(a + 1) = 'f';
*(a + 2) = 'g';
*(a + 3) = 'h';
*(b + 0) = 'e';
*(b + 1) = 'f';
*(b + 2) = 'g';
*(b + 3) = 'h';
//循环打印a和b空间中的内容
for (int i = 0; i < 4; i++) {
printf("%c\t",*(a + i));
}
printf("\n");
for (int i = 0; i < 4; i++) {
printf("%c\t",*(b+i));
}
int result = memcmp(a, b, 4);
printf("\nresult = %d\n",result);
*/
//memset 内存设置函数
/*
int *a = calloc(3, sizeof(int ));
for (int i = 0; i < 3; i++) {
printf("%d\t",*(a+i));
}
printf("\n");
//所要设置的空间是a 所要设置的字节个数是12 每一个字节里面设置的内容是1
memset(a, 1, 12);
for (int i = 0; i < 3; i++) {
printf("%d\t",*(a + i));
}
*/
/*
// Student stu1 = {"yuyao",23,'m'};
Student *p = malloc(sizeof(Student));
// p->name = "yuyao";
strcpy(p->name, "fghjkl");
p->age = 23;
p->sex = 'm';
// p->name[1] = 'x';
*( p->name + 1 ) = 'x';
printf(" name = %s age = %d sex = %c\n",p->name,p->age,p->sex);
//动态在堆区开辟内存,用来存放字符串
char name[100] = {'\0'};
printf("请输入一个字符串\n");
//根据字符串的长度在堆区开辟大小正好的空间存放name中的字符串
char *p = malloc(StrLength(name));
scanf("%s",name);
// p = name;p重指向了
for (int i = 0; name[i]; i++) {
*( p + i) = name[i];
}
// int i = 0;
// while (*(name + i) != '\0') {
// *(p + i) = *(name + i );
// }
// *(p+i) = '\0';
//
printf("name = %s\n",name);
printf("p = %s\n",p);
*/
//把一个字符串中的所有数字存到堆区一块大小正好的空间里
/*
printf("请输入一个字符串:\n");
char str[100] = {'\0'};
scanf("%s",str);
//拿到字符串中数字的个数
int i = 0;
int count = 0;
char number[100] = {'\0'};
while (*(str + i) != '\0') {
if ( ( *(str + i) >= '0' ) && ( *(str + i ) <='9') ) {
//把碰到的数字一个一个存放到number中
number[count] = *(str + i);
count ++;
}
i++;
}
//字符拷贝完后,存进去一个'\0';
number[count] = '\0';
printf("number = %s\n",number);
char *p = malloc(count + 1);
stpcpy(p, number);
printf(" p = %s\n",p);
*/
//字符串数组分别存入
/*
char string[6][100] = {"rtyuio","iPhone","Android","winPhone","Macminn","Windows"};
char *ps[6] = {'\0'};
//循环遍历 求出每一个字符串的长度并在堆区开辟相应的空间
for (int i = 0; i < 6; i++) {
// ps[i] = malloc(StrLength(string[i]));
// strcpy(ps[i], string[i]);
// printf(" ps[%d] = %s\n",i,ps[i]);
//求出字符串的长度
unsigned long length = strlen( *(string + i) );
//开辟空间
char *p = malloc(length + 1);
//把字符串拷贝进去
strcpy(p, *(string + i) );
*( ps + i) = p;
}
for (int i = 0; i < 6 ; i++) {
printf("ps[%d] = %s\n ",i,*(ps + i));
}
*/
}
return 0;
}
C语言第十一天:
//
// main.m
// C-Lesson11
//
// Created by 尹江涛 on 15-7-7.
// Copyright (c) 2015年 尹江涛. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef int PFUN (int ,int);
//求2个数的最大值
//函数名 类似于数组名 同样代表函数在代码区内存空间的首地址
int maxValue(int a,int b){
return (a>b?a:b);
}
//用 int(int ,int)* 类型 定义一个指针变量 p
int (*p) (int ,int );
int minValue(int a,int b){
return (a < b ? a : b);
}
//求最大值或者最小值
int maxOrMinFromTwo(int a, int b,PFUN *p )
{
return p(a,b);
}
int sumFunction(int a,int b){
return a + b;
}
int minusFunction(int a,int b)
{
return a - b;
}
typedef struct student{
char name[30];
int age;
float score;
float height;
float weight;
char sex;
float birthday;
}Student;
/*
//按年龄
void sortedStudentByAge(Student *p ,int count)
{
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j<count - i - j; j++) {
if ( (p+j)->age > (p+j+1)->age ) {
Student temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
//成绩
void sortedStudentByScore(Student *p,int count)
{
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j<count - i - j; j++) {
if ( (p+j)->score > (p+j+1)->score) {
Student temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
//身高
void sortedStudentByHeight(Student *p ,int count)
{
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j<count - i - j; j++) {
if ( (p+j)->height > (p+j+1)->height ) {
Student temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
//体重
void sortedStudentByWeight(Student *p ,int count)
{
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j<count - i - j; j++) {
if ( (p+j)->weight > (p+j+1)->weight ) {
Student temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
//生日
void sortedStudentByBirthday(Student *p ,int count)
{
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j<count - i - j; j++) {
if ( (p+j)->birthday > (p+j+1)->birthday ) {
Student temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
//按姓名
void sortedStudentByName(Student *p ,int count)
{
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j<count - i - j; j++) {
if ( strcmp((p+j)->name, (p+j+1)->name) > 0 ) {
Student temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
*/
/*
void printfStudent(Student *p,int count){
for (int i = 0; i<count; i++) {
printf("name %s age %d score %.2f height %.2f weight %.2f sex %c brithday %.2f\n",(p+i)->name,(p+i)->age,(p+i)->score,(p+i)->height,(p+i)->weight,(p+i)->sex,(p+i)->birthday);
}
}
typedef void (*PStudentFun)(Student *p ,int count);
BOOL score(Student stu1,Student stu2){
return stu1.score > stu2.score;
}
BOOL age(Student stu1,Student stu2){
return stu1.age > stu2.age;
}
BOOL birthday(Student stu1,Student stu2){
return stu1.birthday > stu2.birthday;
}
BOOL height(Student stu1,Student stu2){
return stu1.height > stu2.height;
}
BOOL name(Student stu1,Student stu2){
return strcmp(stu1.name, stu2.name);
}
BOOL weight(Student stu1,Student stu2){
return stu1.weight > stu2.weight;
}
typedef BOOL boolFun (Student , Student);
void sorted(Student *p , int count ,boolFun *q)
{
for (int i = 0; i < count - 1; i++) {
for (int j = 0 ; j < count - 1 - i; j++) {
if (q(p[j],p[j+1])) {
Student temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
//控制台输入排序条件,然后排序
typedef struct studentFunction{
boolFun *p;
char strs[100];
}StudentFunction;
boolFun *choseFunction(char *name)
{
if (strcmp(name, "age") == 0) {
return age;
}
return NULL;
}
*/
int main(int argc,const char * argv[]) {
@autoreleasepool {
//指针函数 函数回调
int a = 9,b =7;
int result = maxValue(a, b);
printf("maxValue = %d\n",result);
//每种类型都有对应的指针变量接收其地址
//调用函数maxValue
p = maxValue;
int result1 = p(a, b);
printf("result1 = %d\n",result1);
p = minValue;
int result2 = p(a,b);
printf("result2 = %d\n",result2);
int result3 = maxOrMinFromTwo(6,8, maxValue);
printf("result3 = %d\n",result3);
int result4 = maxOrMinFromTwo(5, 8, sumFunction );
printf("result4 = %d\n",result4);
//动态排序
/*
Student stu1 = {"qifei",28,65.6,165,83,'w',12.6};
Student stu2 = {"zhangyao",22,86.8,166,76,'w',9.8};
Student stu3 = {"liyan",24,63.2,172,133,'m',8.25};
Student stu4 = {"lichunjiang",26,76.8,175,145,'m',6.18};
Student stu5 = {"lizhang",24,83.2,180,156,'m',10.25};
Student stu6 = {"yangxiaoli",23,78.6,165,76,'w',12.28};
Student stus[6] = {stu1 ,stu2, stu3, stu4, stu5,stu6};
//按年龄排序并打印输出
// sortedStudentByName(stus,6);
// printfStudent(stus, 6);
// sorted(stus,6,birthday);
// printfStudent(stus, 6);
printf("请输入你的排序条件:\n");
char xuanze[100] = {'\0'};
scanf("%s",xuanze);
StudentFunction SFs[7] = {{name ,"name"},{age,"age"},{score,"score"},{height ,"height"},{weight,"weight"},{birthday,"birthday"}};
for (int i = 0; i < 7; i++) {
if (strcmp(SFs[i].strs, xuanze) == 0) {
sorted(stus, 6, SFs[i].p);
break;
}
}
printfStudent(stus, 6);
*/
}
return 0;
}