作业1:计算出100-1000所有的素数

include<stdio.h>

int main()
{
int i; int f;
for( i=100;i<=1000;i++)
{
int k=0;
for( f=2;f<i;f++)

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

{

if(0==i%f)

{ k=1;
}
}
if(0==k)
{
printf("%d\n",i);
}
}
return 0;
}

作业2.打印99乘法表。

include<stdio.h>

int main()
{
int i; int j;
for( i=1;i<=9;i++)
{
for( j=1;j<=i;j++)
{

printf("%d%d=%d ",i,j,ij);
if((i*j)/10==0)
printf(" ");
}
printf("\n");
}

return 0;
}

作业3.输入两个整数,计算他们的最大公约数和最小公倍数。

include<stdio.h>

int main()
{
int x; int y;

int min=0; int max=0;
printf("请输入两个整数");
scanf("%d %d",&x,&y);
for(int i=1;i<=x;i++)
{
if(0==x%i&&0==y%i)
max=i;
}
printf("最大公约数为%d\n",max);
min=(x*y)/max;
printf("最小公倍数为%d",min);

return 0;
}

作业4.输入日期(yyyy-mm--dd),计算这是自公元元年1月1日到该日期一共过来多少天

include<stdio.h>

int main()
{
int month;
int year;
int day ;
int days=0;
int x[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
printf("请输入日期");
scanf("%d %d %d",&year,&month,&day);
for(int i=1;i<year;i++)
{ if((0==i%4&&0!=i%100||0==i%400))
{
days+=366;
}
else{
days+=365;
}
}
if((0==year%4&&0!=year%100||0==year%400))
{
for(int i=1;i<month;i++)
days+=x[i];
}

else {

for(int i=1;i<month;i++)
{ days+=x[i];
if(2==i)
days--;
}
}
days+=day;
printf("自公元元年1月1日到%d年%d月%d天一共 %d天",year,month,day,days);
return 0;

}

作业5.输入一个整数,判断是否是回文数。

include<stdio.h>

int main()
{
int h[10]={};
int x;
int y=0;
int s=0;
int i;
printf("请输入一个整数");
scanf("%d",&x);
s=x;
for(i=0;x!=0;i++)
{
h[i]=x%10;
x=x/10;
}
for(int j=0;j<i;j++)
{
y=y*10+h[j];
}
if(s==y)
{
printf("该数是回文数");
}
else{
printf("该数不是回文数");
}
return 0;
}

PAT乙级第一题

1001 害死人不偿命的(3n+1)猜想

:

int main()
{
int x=0; int k=0;
scanf("%d",&x);
while(1!=x)
{
if(x%2==0)
{
x=x/2;
k=k+1;
}
else
{

x=(3*x+1)/2;
k=k+1;
}

}
printf("%d",k);
return 0;

}

利用time(NULL)来得到1970年1月1日0时0分0秒到现在过了多少秒,利用相减法得到现在的时间。

include<stdio.h>

include <time.h>

int main()
{
int year=1970,month=1,day=1,hour=0,minute=0,second=0;
int k=0,j=1970,i=1;
int z[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
k=time(NULL);
second=k%60;
minute=(k%3600)/60;
while(k>=31536000)
{
k-=31536000+((0==j%4&&0!=j%100)||0==j%400)86400;
year++;
j++;
}
while(k>=2419200)
{
if((0==year%4&&0!=year%100)||0==year%400)
{
k-=z[i]
360024;
month++;
}
else
{
if(2==i)
{
z[i]=z[i]-1;
}
k-=z[i]
3600*24;
month++;
}
i++;
}
while(k>86400)
{
k-=86400;
day++;

}
hour=(k%86400)/3600;
if(hour+8>24)
{
hour-=24+8;
day=day+1;
}
else
{
hour=hour+8;
}
printf("%d-%d-%d-%d-%d-%d",year,month,day,hour,minute,second);
return 0;
}

利用自定义函数来给数排序

其中利用sizeof(整个数组)/sizeof(数值中的一个数)来得到数组长度。为解决数组在传送给自定义函数时长度的丢失需在之前给一个数来放置长度。

include<stdio.h>

void paixu(int arr,size_t len);
int main()
{
int n;
int arr[5]={1,6,2,4,8};
paixu(arr,sizeof(arr)/sizeof(arr[0]));
printf("%d",sizeof(arr)/sizeof(arr[0]));
}
void paixu(int
arr,size_t len)
{
int k=0;
for(int i=0;i<len;i++)
{
for(int j=0;j<i;j++)
{
if(arr[i]<arr[j])
{
k=arr[j];
arr[j]=arr[i];
arr[i]=k;
}
}
}
for(int i=0;i<len;i++)
{
printf("%d ",arr[i]);

}
}

红蓝双色球问题

作业2:生成一组彩票号码,以福彩双色球为例。
5红:1~33 1蓝:1~16

利用srand(time(NULL))来解决了rand()(通常随机数都默认为第一个位置获取,所以使用一直在变化的时间来作为获取的位置)每次都相同的状况。

利用

for(int i=0;i<5;i++)

{

arr[i]=rand()%33+1;

for(int j=0;j<i;j++)

{

if(arr[i]==arr[j])

i--;

}

}

解决了重复问题

include<stdio.h>

include<time.h>

include<stdlib.h>

int main()
{
srand(time(NULL));
int rad[6]={};
for(int i=0;i<6;i++)
{
rad[i]=rand()%33+1;
for(int j=0;j<i;j++)
{
if(rad[i]==rad[j])
i--;
}
}
printf("红球为:");
for(int i=0;i<6;i++)
{

printf("%d ",rad[i]);
}
printf("蓝球为:");
printf("%d ",rand()%15+1);
return 0;
}
uploading-image-836905.png

利用c语言做一个简易版扫雷8*8

该程序显示雷和不是累的区域周边有多少个雷

利用扩大减少了最外层的判断

首先建立一个10*10的二位数组后用随机数来填充地雷(其中利用了先吧数组都赋值为0,可以利用为零即可填充地雷,地雷的设置需要x,y来共同设置),由于是简易版并且周边至多有八个雷,所以利用9来代替雷。

而后利用if语句即可判断

include<stdio.h>

include<stdlib.h>

include<time.h>

int main()
{
srand(time(NULL));
int a[10][10]={};
int x,y;
int i=0;
while(i<20)
{

x=rand()%8+1;
y=rand()%8+1;
if(a[x][y]==0)
{
a[x][y]=9;
i++;
}
}
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
if(a[i][j]!=9)
{
a[i][j]+=(a[i-1][j-1]==9);
a[i][j]+=(a[i][j-1]==9);
a[i][j]+=(a[i-1][j]==9);
a[i][j]+=(a[i+1][j-1]==9);
a[i][j]+=(a[i+1][j+1]==9);
a[i][j]+=(a[i-1][j+1]==9);
a[i][j]+=(a[i][j+1]==9);
a[i][j]+=(a[i+1][j]==9);
}
}
}
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}

}

作业5:输入一个数组的阶数(n*n),按螺旋形状填充它的值,并显示。
(计算层数n/2可得)

由于是螺旋型我们,通常是从最外层到里层,所以利用n/2可得层数后利用对应的关系即可得到

include<stdio.h>

int main()
{
int n=0;
int c=1;
int x=0,y=0;
int z=0;
printf("请输入一个整数n: ");
scanf("%d",&n);
int arr[n][n];
//n是奇数时的中心,n是偶数时会被覆盖
arr[n/2][n/2]=n*n;
for(int z=0;z<n/2;z++)
{
for(int i=z;i<n-z-1;i++)
{
arr[z][i]=c;
c++;
printf("%d \n",arr[z][i]);
}

for(int i=z;i<n-z-1;i++)
{
arr[i][n-z-1]=c;
c++;
}
for(int i=n-z-1;i>=z;i--)
{
arr[n-z-1][i]=c;
c++;
}
for(int i=n-z-2;i>z;i--)
{

arr[i][z]=c;
c++;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",arr[i][j]);
if(arr[i][j]/10==0)
{
printf(" ");
}
}
printf("\n");
}

}

蛇形数组

include<stdio.h>

int main()
{
int n,c=1,k=0;
printf("请输入一个数:");
scanf("%d",&n);
int arr[n][n];
int brr[2*n][n];
for(int i=0;i<=n-1;i++)
{
if(1==i%2&&0!=i)
{
for(int j=i;j>=0;j--)
{
brr[i][j]=c++;
}
}
else
{
for(int j=0;j<=i;j++)
{
brr[i][j]=c++;
}
}
}
for(int i=n;i<=2n-2;i++)
{
if(1==i%2)
{
for(int j=2
n-i-2;j>=0;j--)
{
brr[i][j]=c++;

}
}
else
{
for(int j=0;j<=2n-i-2;j++)
{
brr[i][j]=c++;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
arr[i-j][j]=brr[i][j];
}
}
for(int i=n;i<2
n-1;i++)
{
for(int j=i-n+1;j<n;j++)
{
arr[i-j][j]=brr[i][j-i+n-1];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",arr[i][j]);
if(arr[i][j]/10==0)
{
printf(" ");
}
}

printf("\n");
}
/第二种(老师的方法)
for(int i=0;i<n;i++)
{
if(0==i%2)
{
for(int j=0;j<=i;j++)
{
arr[i-j][j]=c++;
}
}
else
{
for(int j=0;j<=i;j++)
{
arr[j][i-j]=c++;
}
}
printf("\n");
}
for(int i=n;i<2
n-1;i++)
{
if(0==i%2)
{
for(int j=1;j<2n-i;j++)
{
arrn[n-j][i-n+j]=c++;
}
else
{
for(int j=1;j<2
n-i;j++)
{
arr[i-n+j][n-j]=c++;
}
}
}
*/
return 0;
}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄