C语言mooc小程序(2)
2017-12-23 00:09
232 查看
这星期,由书本 网络学习所得,了解const用法.(数据类型,知识点繁杂直接计入笔记,不放在博客上)
1)首先 可以定义const常量,具有不可变性.
2)可以节省空间,避免不必要的内存分配(个人用IDE检测符合)
3)保护了被修饰的东西 比如
或者有如下定义
数组定义:
而且,遍历数组时,用sizeof(a)/sizeof(a[0])可确保循环正确.
数组大小可以用字母定义(C99新标准)
集成初始化 可以用[x]进行定义 比如[0]=2 代表数组第一个元素为2.
此外个人对素数的判断做出优化 可以去掉偶数,由3遍历到sqrt(n) 可以减少一半的复杂度. 代码如下
还有根据此代码改编而成的素数表(代码相似,不放出,基础关键点)
1)开辟prime函数,并初始化元素为1,表示元素为素数
2)从2开始,如果x是素数,则(i*x)舍去
3)接着用i++ x
另外有多项式加法
这题有几个注意点
首先输入的结束条件 应设置为 输入两次0次幂
其次将输入情况分幂为正负1或普通数,系数为正负1或普通数.
如此就很好写了.
1)首先 可以定义const常量,具有不可变性.
2)可以节省空间,避免不必要的内存分配(个人用IDE检测符合)
3)保护了被修饰的东西 比如
const double PI =3.14159PI 无法改变,类似define的作用.
或者有如下定义
double rates[5]={88.99,100.12,59.45,183.11,340.5}; const double *pd=rates;//pd指向数组的首元素 *pd=29.89;//pd无法被修改 pd[2]=222.22;//pd无法被修改 rates[0]=99.99;//rates未被定义,可被修改
数组定义:
而且,遍历数组时,用sizeof(a)/sizeof(a[0])可确保循环正确.
数组大小可以用字母定义(C99新标准)
集成初始化 可以用[x]进行定义 比如[0]=2 代表数组第一个元素为2.
此外个人对素数的判断做出优化 可以去掉偶数,由3遍历到sqrt(n) 可以减少一半的复杂度. 代码如下
{ int n,i; while(~scanf("%d",&n)) { int flag=0; if(n%2==0&&n!=2) { flag=1;} for(i=3;i<sqrt(n);i+=2) { if(n%i==0) flag=1; } if(flag==0) printf("YES\n"); else printf("NO\n"); } return 0; }
还有根据此代码改编而成的素数表(代码相似,不放出,基础关键点)
1)开辟prime函数,并初始化元素为1,表示元素为素数
2)从2开始,如果x是素数,则(i*x)舍去
3)接着用i++ x
int main(void) { // 1表示x 0表示o const int size = 3; int board[size][size]; int i, j; int numOfX; int numOfO; int numx, numo; //定义2组变量以表示行列情况 int result = -1; // -1:没人赢, 1:X赢, 0:O赢 //输入矩阵 for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { scanf("%d", &board[i][j]); } } // 检查行列胜负情况 如有胜负 直接切断 ,行的胜负情况用转置矩阵表示 for (i = 0; i < size && result == -1; i++) { numOfO = numOfX = numo = numx = 0; for (j = 0; j < size; j++) { if (board[i][j] == 1) numOfX++; else numOfO++; if (board[j][i] == 1) numx++; else numo++; } if (numOfO == size || numo == size) result = 0; else if (numOfX == size || numx == size) result = 1; } // 检查正对角线 numOfO = numOfX = 0; for (i = 0; i < size; i++) { if (board[i][i] == 1) numOfX++; else numOfO++; if (numOfO == size) result = 0; else if (numOfX == size) result = 1; } // 检查反对角线 numOfO = numOfX = 0; for (i = 0; i < size; i++) { if (board[i][size - i - 1] == 1) numOfX++; else numOfO++; if (numOfO == size) result = 0; else if (numOfX == size) result = 1; } if (result == -1) printf("No win!\n"); else if (result == 1) printf("X win!\n"); else printf("O win!\n"); return 0; }
另外有多项式加法
这题有几个注意点
首先输入的结束条件 应设置为 输入两次0次幂
其次将输入情况分幂为正负1或普通数,系数为正负1或普通数.
如此就很好写了.
int main(int argc, const char * argv[]) { int a,b; int number[101]={0}; for(int i=0;i<2;i++) { do { scanf("%d %d",&a,&b); number[a]+=b; }while(a==0&&b==0); } int c=1; for(int i=101-1;i>=2;i--) { if(c) { a178 if(number[i]==1||number[i]==-1) { printf("x%d",i); c=0; } else if(number[i]!=0) { printf("%dx%d",number[i],i); c=0; } } else { if(number[i]==1) { printf("+x%d",i); }else if(number[i]==-1) { printf("x%d",i); } else if(number[i]>0) { printf("+%dx%d",number[i],i); }else if(number[i]<0) { printf("%dx%d",number[i],i); } } } if(c) { if(number[1]==1||number[1]==-1) { printf("x"); c=0; }else if(number[1]!=0) { printf("%dx",number[1]); c=0; } if(number[0]!=0) { printf("%d",number[0]); c=0; } } else { if(number[1]==1) { printf("+x"); }else if(number[1]==-1) { printf("x"); } else if(number[1]>0) { printf("+%dx",number[1]); } else if(number[1]<0) { printf("%dx",number[1]); } if(number[0]>0) { printf("+%d",number[0]); }else if(number[0]<0) { printf("%d",number[0]); } } if(c){ printf("0"); } printf("\n"); return 0; }
相关文章推荐
- MOOC——C语言12:程序结构:全局变量、预编译器和宏、大程序结构
- C语言mooc小程序(4)
- C语言写的一个简单文件加密程序
- 用C语言编写Windows服务程序的五个步骤
- 用c语言写cgi程序(4)---处理请求post get。文本框,下拉列表框。
- c语言简单程序
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
- C语言打包解包文件程序(简易版)
- C语言测试程序运行时间
- C语言2(程序结构)
- C语言-预处理程序
- C语言对应的汇编程序
- C语言如何 计算程序运行时间
- Linux下用C语言实现Ping程序功能
- 用C语言写出带有面向对象特点的程序
- 用C语言编写一系列简单的程序
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
- C语言小程序
- C语言实现扫雷程序
- 嵌入式 c语言exit和return在程序中表现的区别