學習蘇嵌的第四天,寫一篇博客,記錄一下自己的收穫,雖然現在只是個程序小白,但是我相信經過我的努力,一定能取得很大的進步。
今天學習了循環語句並會用數組處理數據,在學的過程中遇到並解決了一些問題,下面就來分享一下。
循環語句中應用最多而且最廣泛的爲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;
}
今天一天雖然很累,但收穫很多,也很充實。