学习苏嵌的第四天,写一篇博客,记录一下自己的收获,虽然现在只是个程序小白,但是我相信经过我的努力,一定能取得很大的进步。
今天学习了循环语句并会用数组处理数据,在学的过程中遇到并解决了一些问题,下面就来分享一下。
循环语句中应用最多而且最广泛的为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;
}
今天一天虽然很累,但收获很多,也很充实。