day 01
作业1:计算出100~1000所有的素数。
#include <stdio.h>
int main()
{
int i,num,flag=0;
for(num = 100 ; num <= 1000 ; num++)
{
flag=0;
for(i = 2 ; i < num/2 ; i++ )
{
if(num % i == 0 )
{
flag=1;
break;
}
}
if(flag == 0)
{
printf("%d ",num);
}
}
}
作业2:打印99乘法表。
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
int result;
result=i*j;
printf("%d*%d=%d\t",j,i,result);
}
printf("\n");
}
}
作业3:输入两个整数,计算它们的最大公约数和最小公倍数。
#include <stdio.h>
int main()
{
int num1,num2;
printf("请输入两个整数:\n");
scanf("%d%d",&num1,&num2);
if(num1 < num2)
{
int temp;
temp = num1;
num1 = num2;
num2 = temp;//保证num1>num2
}
for(int i = num2 ; num2 > 0 ;i--)
{
if(num1 % i == 0 && num2 % i == 0)
{
printf("%d和%d的最大公约数是%d\n",num1,num2,i);
break;
}
}
for(int j = num1 ; j > 0; j++)
{
if(j % num1 == 0 && j % num2 == 0)
{
printf("%d和%d的最小公倍数是%d\n",num1,num2,j);
break;
}
}
return 0;
}
作业4:输入一个日期(yyyy-mm-dd),计算这是自公元元年1月1日到该日期一共过了多少天。
#include <stdio.h>
int main()
{
short y = 0 , m = 0 , d = 0;
printf("请输入一个日期(yyyy-mm-dd):");
scanf("%hd-%hd-%hd",&y,&m,&d);
int days = 0;
// 计算整年
for(int i=1; i<y; i++)
{
if(0==i%4 && 0!=i%100 || 0==i%400)
{
days += 366;
}
else
{
days += 365;
}
}
// 计算整月
for(int i=1; i<m; i++)
{
if(2 == i)
{
if(0==y%4 && 0!=y%100 || 0==y%400)
{
days += 29;
}
else
{
days += 28;
}
}
else if(4==i || 6==i || 9==i || 11==i)
{
days += 30;
}
else
{
days += 31;
}
}
printf("%d\n",days+d);
}
作业5:输入一个整数,判断是否是回文数。
day 02
作业1:已知time(NULL)获取到自1970年1月1日00:00:00到现在一共过了多少秒(格林时间+8小时=北京时间),计算出yyyy-mm-dd-hh-mm-ss
#include<stdio.h>
#include<time.h>
int main()
{
int sec = time(NULL);
int y = 1970,m = 0,d = (sec/3600+8)/24, hh = (sec/3600+8)%24, mm = (sec/60)%60, ss = sec%60;
while(d > 365)
{
d -= 365+(0 == y%4 && 0 != y%100 || 0 == y%400);
y++;
}
char month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
month [1] += 0 == y%4 && 0 != y%100 || 0 == y%400;
while(month[m] <= d)
{
d -= month[m-1];
m++;
}
printf("%d年%d月%d日-%d:%d:%d\n",y,m,d+1,hh,mm,ss);
}
作业2:生成一张彩票号码,以福彩双色球为例
5红:1-33 1蓝:1-16
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
int main()
{
srand(time(NULL));//表示设置一个随机种子
/*srand( (time(NULL) )中time(NULL)函数是得到一个从1970年1月1日到现在的时间秒数,这样每一次运行程序的时间的不同就可以保证得到不同的随机数了。
*/
int red[5] = {} , cnt = 0;
printf("红球:");
while(cnt < 5)
{
bool flag = true;
int val = rand() % 33 + 1;
for(int i=0; i<cnt; i++)
{
if(val == red[i])
{
flag = false;
}
}
if(flag == true)
{
red[cnt++] = val;
printf("%d ",val);
}
}
printf(" 蓝球:%d\n",rand()%16 + 1);
}
作业3:在一个8*8的数组中随机生成20个地雷,在不是雷的位置显示出周边有多少个地雷
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int map[10][10] = {} , cnt = 0;
while(cnt < 20)
{
int x = rand() % 8 + 1;
int y = rand() % 8 + 1;
if( 9 != map[x][y] )
{
map[x][y] = 9;
cnt++;
}
}
for(int i=1; i < 9; i++)
{
for(int j = 1; j < 9; j++)
{
if( 9 != map[i][j])
{
for(int x = -1;x <= 1;x++)
{
for(int y = -1;y <= 1;y++)
{
if(9 == map[i+x][i+y])
{
map[i][j]++;
}
}
}
}
printf("%d ",map[i][j]);
}
printf("\n");
}
}
作业4:定义一个长度为n的数组,随机赋值,然后对数组进行排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int arr[10] = {};
for (int i=0; i<10; i++)
{
arr[i] = rand()%100;
printf("%d ",arr[i]);
}
printf("\n")
for(int i=0; i<9;i++)
{
for(int j=i+1 ; j<10 ;j++)
{
if(arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
printf("%d ",arr[i]);
}
}
作业5:输入一个数组的阶层(n*n),按照螺旋形状填充它的值,并显示。
#include <stdio.h>
int main()
{
int n=0 , val=1;
printf("enter n:");
scanf("%d",&n);
int arr[n][n];
//n 是奇数的中心,n 是偶数时会被覆盖
arr[n/2][n/2] = n*n;
for(int i = 0; i< n/2; i++)
{
for(int j = i ; j<n-i-1; j++)
arr[i][j] = val++;
for(int j = i ; j<n-i-1; j++)
arr[j][n-i-1] = val++;
for(int j = n-i-1 ; j>i; j--)
arr[n-i-1][j] = val++;
for(int j = n-i-1 ; j>i; j--)
arr[j][i] = val++;
}
for(int i=0; i<n; i++)
{
for(int j=0;j<n;j++)
{
printf(" %2d",arr[i][j]);
}
printf("\n");
}
}
作业6:输入一个数组的阶数(n*n),按照蛇形填充它的值,并显示
#include <stdio.h>
int main()
{
int n = 0 , val = 1;
printf("enter n: ");
scanf("%d",&n);
int arr[n][n];
//上三角
for(int i = 0 ; i < n ;i++)
{
if(0 == i%2)
{
for(int j = 0 ;j<=i; j++)
{
arr[i-j][j] = val++;
}
}
else
{
for(int j = 0 ;j<=i; j++)
{
arr[j][i-j] = val++;
}
}
}
//下三角
for(int i=n ;i<n*2-1;i++)
{
if(0 == i%2)
{
for(int j=1; j<n*2-i; j++)
{
arr[n-j][i-n+j] = val++;
}
}
else
{
for(int j=1; j<n*2-i; j++)
{
arr[i-n+j][n-j] = val++;
}
}
}
for(int i=0; i<n; i++)
{
for(int j=0;j<n;j++)
{
printf(" %2d",arr[i][j]);
}
printf("\n");
}
}