帅比凯的成长记录
2016-10-25 23:12
183 查看
学习苏嵌的第四天,写一篇博客,记录一下自己的收获,虽然现在只是个程序小白,但是我相信经过我的努力,一定能取得很大的进步。
今天学习了循环语句并会用数组处理数据,在学的过程中遇到并解决了一些问题,下面就来分享一下。
循环语句中应用最多而且最广泛的为for循环,其灵活性很强而且很简便。
int main()
{
int i,j,n,sum;
i=1;
while(i<=8)
{
printf("%d\n",i);
i=i+1;
}
sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+i;
}
printf("%d\n",sum);
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
由此可见while语句三行才能解决的问题,for语句一行就能解决。
今天我更进一步的了解了对素数的判断,任意素数n不必被2~(n-1)范围内整除,只需被2~n/2间的整数除即可,甚至只被2~√2之间的数整除即可。
#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i,m=0;
for(n=101;n<=200;n=n+2)
{
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0) break;
if(i>=k+1)
{
printf("%d",n);
m=m+1;
}
if(m%10==0) printf("\n");
}
printf("\n");
return 0;
}
这样不仅简便而且缩短了判断时间。
二维数组常成为矩阵,但元素是一行一行连续存放的。二维数组a[i][j]可以把a[i]看做一维数组的名字,这样在数组初始化和指针表示时显得很方便。
#include <stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("arry a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("arry b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
趣味编程的过程中更是有更多收益。
若定义列宽为为62,x行0~180°时y点的坐标为m,在同一行与之对应的180°~360°时y点的坐标为62+m.
#include <stdio.h>
#include<math.h>
int main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1)
{
m=acos(y)*10;
for(x=1;x<m;x++) printf(" ");
printf("*");
for(;x<62-m;x++) printf(" ");
printf("*\n");
}
return 0;
}
在完成sin(X) cos(x)复合曲线打印时,将x行中0~10行和10~20行的图像分别打印,因为sin(x),在x轴上下均为左右对称。
此图中cos(x)的打印方法与上题相同,只是分为两次打印,而sin(x)在0~10行中,任意行0~90°y点的坐标为n,同行中90°
~180°对应坐标为31-n,在10~20行中,180°~270°和270°~360°对应的坐标分别为31-n和n=26.
#include <stdio.h>
#include <math.h>
int main()
{
double y;
int x,m,n,yy;
for(yy=0;yy<10;yy++)
{
y=0.1*yy;
m=acos(1-y)*10;
n=asin(1-y)*10;
for(x=1;x<62;x++)
{
if(x==m&&x==n) printf("+");
else if(x==m||x==62-m) printf("*");
else if(x==n||x==31-n) printf("+");
else printf(" ");
}
printf("\n");
}
for(yy=10;yy<20;yy++)
{
y=0.1*yy;
m=acos(1-y)*10;
n=asin(1-y)*10;
for(x=1;x<62;x++)
{
if(x==62-m&&x==n) printf("+");
else if(x==m||x==62-m) printf("*");
else if(x==31-n||x==62+n) printf("+");
else printf(" ");
}
printf("\n");
}
return 0;
}
今天一天虽然很累,但收获很多,也很充实。
今天学习了循环语句并会用数组处理数据,在学的过程中遇到并解决了一些问题,下面就来分享一下。
循环语句中应用最多而且最广泛的为for循环,其灵活性很强而且很简便。
int main()
{
int i,j,n,sum;
i=1;
while(i<=8)
{
printf("%d\n",i);
i=i+1;
}
sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+i;
}
printf("%d\n",sum);
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
由此可见while语句三行才能解决的问题,for语句一行就能解决。
今天我更进一步的了解了对素数的判断,任意素数n不必被2~(n-1)范围内整除,只需被2~n/2间的整数除即可,甚至只被2~√2之间的数整除即可。
#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i,m=0;
for(n=101;n<=200;n=n+2)
{
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0) break;
if(i>=k+1)
{
printf("%d",n);
m=m+1;
}
if(m%10==0) printf("\n");
}
printf("\n");
return 0;
}
这样不仅简便而且缩短了判断时间。
二维数组常成为矩阵,但元素是一行一行连续存放的。二维数组a[i][j]可以把a[i]看做一维数组的名字,这样在数组初始化和指针表示时显得很方便。
#include <stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("arry a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("arry b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
趣味编程的过程中更是有更多收益。
若定义列宽为为62,x行0~180°时y点的坐标为m,在同一行与之对应的180°~360°时y点的坐标为62+m.
#include <stdio.h>
#include<math.h>
int main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1)
{
m=acos(y)*10;
for(x=1;x<m;x++) printf(" ");
printf("*");
for(;x<62-m;x++) printf(" ");
printf("*\n");
}
return 0;
}
在完成sin(X) cos(x)复合曲线打印时,将x行中0~10行和10~20行的图像分别打印,因为sin(x),在x轴上下均为左右对称。
此图中cos(x)的打印方法与上题相同,只是分为两次打印,而sin(x)在0~10行中,任意行0~90°y点的坐标为n,同行中90°
~180°对应坐标为31-n,在10~20行中,180°~270°和270°~360°对应的坐标分别为31-n和n=26.
#include <stdio.h>
#include <math.h>
int main()
{
double y;
int x,m,n,yy;
for(yy=0;yy<10;yy++)
{
y=0.1*yy;
m=acos(1-y)*10;
n=asin(1-y)*10;
for(x=1;x<62;x++)
{
if(x==m&&x==n) printf("+");
else if(x==m||x==62-m) printf("*");
else if(x==n||x==31-n) printf("+");
else printf(" ");
}
printf("\n");
}
for(yy=10;yy<20;yy++)
{
y=0.1*yy;
m=acos(1-y)*10;
n=asin(1-y)*10;
for(x=1;x<62;x++)
{
if(x==62-m&&x==n) printf("+");
else if(x==m||x==62-m) printf("*");
else if(x==31-n||x==62+n) printf("+");
else printf(" ");
}
printf("\n");
}
return 0;
}
今天一天虽然很累,但收获很多,也很充实。
相关文章推荐
- Android studio NDK成长记录(二)ndk-build
- 表达对前辈的尊敬、记录成长、传递知识
- 貌似没弄过这东西,以后又有感想在这里发发看,记录下自己的成长历史
- 第一个博客记录成长
- STM32菜鸟成长记录---系统滴答定时器(systick)应用
- 菜鸟成长记录——2014-2015年总
- 点滴成长记录
- 从今天2013年5月8日开始写博客 记录下自己的学习成长 以便将来回顾吧
- 菜鸟的成长记录--linux 通配符和特殊字符集合的使用
- 菜鸟成长记录——2015-2016半年总
- 用CSDN博客记录自己的成长
- 技术人生,从此记录成长的点滴
- java程序猿的成长记录之(三)分享一种防猜的加密算法
- 从现在开始,用博客记录我的成长
- 大和锦成长记录
- Android studio NDK成长记录(五)将C中的Log打到Logcat
- STM32菜鸟成长记录---系统滴答定时器(systick)应用
- 2004年的我(记录着一个平凡人的成长)
- APICloud成长记录 二 页面框架搭建调整
- 今天算是开博的第一天,希望能记录我菜鸟的成长之路吧