IOS开发之路-C 学习笔记7.16
2013-07-17 09:13
477 查看
C语言中使用0作为假,非0即为真
&& 与 同真为真 同假为假 其中有一个为假 即为假
|| 或 同真为真 同假为假 有真即真
! 非 非真即假 反之亦然
运算符优先级 综合性
() 从左到右
算数,单目运算符-,++,-- ,! 从右到左
算术,单目运算符*,/,% 从左到右
算数,双目运算符 + - */ % 从左到右
关系运算符 < <= > >= 从左到右
关系运算符 == != 从左到右
逻辑运算符 && || 从左到右
赋值运算符 += -= *= /= = 从右到左
逻辑运算符都在什么情况下会发生短路?
在逻辑与运算中如果前半部分为0的情况下,将不在去计算右边的情况.这就会发生短路.
例: int a=0 ; b = 6;
int c = (a++ && b++)
输出的结果为:a ==1 b ==6;
对一个行列都为N的数组进行行列交换
如果有一个正整数从左、右来读都是一样的,则称为回文式数(简称回数);
比如101,32123,
999都是回数。数学中有名的“回数猜想”之迷,至今未解决。
回数猜想: 任取一个数,再把它倒过来,并把这两个数相加,然后把这个和数再倒过来,与原和数相加,重复此过程,一定能获得一个回数。 例:
68倒过来是86
68+86= 154
154+541= 605
605+506=1111 (回数)
编程,输入任意整数,按上述方法产生一个回数,为简便起见,最多计算7步,看是否能得到一个回数。
要求:
主函数中接收键盘数据,必须用scanf(“%ld”,&变量名)接收整型变量,
显示该数与其倒数的和,输出每一步计算步骤。
子函数1,计算该数的倒数。
子函数2,验证和是否为回数,
是则主函数打印“经过n次计算,得到回数”,超过7次未能得到回数,显示,“经过n次计算,未得到回数”
这个程序写了好久,可是最后还是有问题...
&& 与 同真为真 同假为假 其中有一个为假 即为假
|| 或 同真为真 同假为假 有真即真
! 非 非真即假 反之亦然
运算符优先级 综合性
() 从左到右
算数,单目运算符-,++,-- ,! 从右到左
算术,单目运算符*,/,% 从左到右
算数,双目运算符 + - */ % 从左到右
关系运算符 < <= > >= 从左到右
关系运算符 == != 从左到右
逻辑运算符 && || 从左到右
赋值运算符 += -= *= /= = 从右到左
逻辑运算符都在什么情况下会发生短路?
在逻辑与运算中如果前半部分为0的情况下,将不在去计算右边的情况.这就会发生短路.
例: int a=0 ; b = 6;
int c = (a++ && b++)
输出的结果为:a ==1 b ==6;
对一个行列都为N的数组进行行列交换
void array_change() { int n = 0; printf("请输入要生成几行的2维数组:"); scanf("%d",&n); int b ; if(n>=3) { int nArray ; printf("生成的【%d】行【%d】列数组行列交换前:\n",n,n); printf("列行"); for (int i =0 ; i<n; i++) { printf("%5d",i+1); } printf("\n"); for (int i = 0 ; i<n; i++) { printf("%-7d",i+1); for (int j = 0; j<n; j++) { scanf("%5d",&nArray[i][j]); //printf("%d ",nArray[i][j]); } //printf("\n"); } printf("转换后:\n"); for (int i = 0 ; i<n; i++) { for (int j = 0; j<n; j++) { // int temp = 0; // temp = nArray[i][j]; // nArray[i][j] = nArray[j][i]; // nArray[j][i] = temp; b[i][j] = nArray[j][i]; printf("%5d",b[i][j]); } printf("\n"); } } else { printf("输入的行数必须大于3\n"); array_change(); } }
如果有一个正整数从左、右来读都是一样的,则称为回文式数(简称回数);
比如101,32123,
999都是回数。数学中有名的“回数猜想”之迷,至今未解决。
回数猜想: 任取一个数,再把它倒过来,并把这两个数相加,然后把这个和数再倒过来,与原和数相加,重复此过程,一定能获得一个回数。 例:
68倒过来是86
68+86= 154
154+541= 605
605+506=1111 (回数)
编程,输入任意整数,按上述方法产生一个回数,为简便起见,最多计算7步,看是否能得到一个回数。
要求:
主函数中接收键盘数据,必须用scanf(“%ld”,&变量名)接收整型变量,
显示该数与其倒数的和,输出每一步计算步骤。
子函数1,计算该数的倒数。
子函数2,验证和是否为回数,
是则主函数打印“经过n次计算,得到回数”,超过7次未能得到回数,显示,“经过n次计算,未得到回数”
这个程序写了好久,可是最后还是有问题...
int recCount(int num) { int count = 1; while (num>=10) { num = num/10; count++; } return count; } int recNum(int num) { int n = 0; int count = recCount(num); while (num>=10) { int ram = num%10; num = num/10; int temp = 0; temp = pow(10, (count-1)); count--; n = n+ram*temp; } n = n+num; return n; } int recSum(int num1,int num2) { return num1 + num2 ; } int Judeg(int num) { int num_len = recCount(num); int nm = num; char _num[100] ; char right_num[50]; char left_num[50]; int i = 0; int flog = 1; int ram =0; while (num>=10) { ram = num%10; num = num /10 ; _num[i] = ram; i++; } _num[num_len-1] = num; if(num_len%2==0) { int i = 0; for ( ; i<num_len/2; i++) { left_num[i] = _num[i]; //printf("left_num[%d]:%d\n",i,left_num[i]); } i=0; for (int j=num_len-1; j>=num_len/2; j--) { right_num[i] = _num[j]; //printf("right_num[%d]:%d\n",i,right_num[i]); i++; } } else { int i = 0; for (; i<(num_len-1)/2; i++) { left_num[i] = _num[i]; //printf("left_num[%d]:%d\n",i,left_num[i]); } i= 0 ; for (int j=num_len-1; j>=(num_len+1)/2; j--) { right_num[i] = _num[j]; //printf("right_num[%d]:%d\n",i,right_num[i]); i++; } } flog = strcmp(left_num,right_num); //printf("%d\n",flog); if (flog==0) { printf("\n%d是回文串\n",nm); } else{ printf("%d不是回文串\n",nm); } int k = 0 ; while(_num[k++]!= '\0') { _num[k-1] = '\0'; } k=0; while (left_num[k++]!='\0') { left_num[k-1] = '\0'; } k = 0 ; while (right_num[k++]!='\0') { right_num[k-1] = '\0'; } printf("--%s",right_num); return flog; } int main(int argc, const char * argv[]) { int number = 0; int count = 0; printf("请输入一个正整数:"); scanf("%d",&number); int recnum = recNum(number); //number 的倒数 int numsum = recSum(number, recnum); // number 和倒数的和 int flog = 1; printf("%d 的倒数为: %d\n",number,recnum); printf("两数之间的和为:%d + %d = %d\n",number,recnum,numsum); while (flog != 0) { flog = Judeg(numsum); number = numsum; recnum = recNum(number); numsum = recSum(recnum,numsum); // 判断是否是回数 printf("%d 的倒数为: %d\n",number,recnum); printf("两数之间的和为:%d + %d = %d\n",number,recnum,numsum); count++; printf("%d\n",flog); } if(flog == 0) { count++; printf("%d是回数!\n",numsum); printf("经过%d次计算,得到回数.",count); } return 0; }
输入某年某月某日,判断这一天是这一年的第几天。
提示:需要考虑闰年的情况,闰年的算法:能被400整除的是闰年,能被4整除并且不能被100整除的是闰年。
int getRun(int year) { int y = 0; if((year%4==0 && year%100!=0) || year%400==0 ) { y = 1; } else { y = 0; } return y; } void getDate() { int getRun(); int year = 0; int month = 0; int day = 0; int sum_Day = 0; int month_day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("please inpue Year Month Day:"); scanf("%d%d%d",&year,&month,&day); int y = getRun(year); if(y==1) { printf("%d是闰年!\n",year); month_day[1] =29; for (int i = 0 ; i<month; i++) { sum_Day += month_day[i]; } } else { printf("%d是平年!\n",year); for (int i = 0 ; i<month; i++) { sum_Day += month_day[i]; } } printf("%d月%d日是%d的第%d天.\n",month,day,year,sum_Day); }
编写一个C程序,输入一个金额(整数金额),然后打印该金额中可以包括多少张100元,50元,20元,10元,5元,1元。
void money()
{
int money = 0;
printf("input to money:");
scanf("%d",&money);
int m_100 = money/100;
money -= (100*m_100);
int m_50 = money / 50;
money -= (50*m_50);
int m_20 = money / 20;
money -= (20 * m_20);
int m_10 = (money) /10 ;
money -= (10 * m_10);
int m_5 = (money ) /5 ;
money -= (5 * m_5);
int m_1 = (money) /1 ;
printf("100 :%d \n 50 :%d \n 20:%d \n10:%d \n5:%d \n1:%d \n",m_100,m_50,m_20,m_10,m_5,m_1);
}
输入一段字符串,再输入一个删除字符串位数的数。然后从输入的字符串中删除指定位数的字符串.
void put_s() { char str[41]; char *p = str; int local_index = 0; int len = 0; printf("请输入一段字符串:"); gets(p); printf("请输入要删除字符串的位数:"); scanf("%d",&local_index); char str_index[local_index]; len = (int)strlen(p); printf("源字符串为:%s\n",p); printf("指定位置之后的字符串为:"); for (int i = 0 ; i<local_index; i++) { printf("%c",*(p+i)); str_index[i] = *(p+i); } printf("\n删除指定位置字符串的后字符串为:"); for (int i =local_index ; i<len; i++) { printf("%c",*(p+i)); } }
相关文章推荐
- IOS开发之路-C 学习笔记7.24
- IOS开发之路-C 学习笔记7.12
- IOS开发之路-C 学习笔记7.26
- IOS开发之路-C 学习笔记7.22
- IOS开发之路-C 学习笔记7.17
- IOS开发之路-C 学习笔记7.13
- IOS开发之路-C 学习笔记7.25
- IOS开发之路-C 学习笔记7.19
- IOS开发之路-C 学习笔记7.14
- IOS开发之路-C 学习笔记7.10
- IOS开发之路-C 学习笔记7.18
- IOS开发之路-C 学习笔记7.23
- IOS开发之路-C 学习笔记7.15
- IOS开发---菜鸟学习之路--(十五)-如何实现拍照功能
- IOS学习笔记(十二)之IOS开发之表视图(UITableView)的相关类,属性与表视图实现学习(二)
- 【iOS学习笔记】在iOS开发中使用FMDB
- 2011斯坦福大学iOS应用开发教程学习笔记(第三课)Objective-C
- 斯坦福大学公开课 iOS应用开发教程学习笔记(第五课)Protocols,手势识别
- iOS开发学习笔记 2-4 C语言部分 指针
- IOS开发基础教程学习笔记2 DatePicker获取时间