本帖最后由 Guido 于 2020-10-17 16:55 编辑
1.打印2到100以内的所有素数。
#include<stdio.h>
//打印2到100以内的所有素数
//首先判断是不是偶数,是偶数,则不是素数
//然后循环到n/2+1即可,计算到一半就可以判断其到底是不是素数,假如判断11,只需要依次循环n是否能整除2 3 4 5 6 即可
//每次循环判断可以加2,能减少循环次数,因为你前面已经判断过其是奇数还是偶数了,因此加2即可
int main()
{
int n;//2循环到100
int i;//依次拿n%i
int sum=0;//存储素数有多少个
for (n=2;n<100;n++)
{
if (n % 2 == 0)
;//说明是偶数,是偶数就不是素数
else //从奇数中继续筛选谁为素数,这时候就需要循环了
{
//int m = n / 2 + 1;//m做为中间的数
i = 3;//i之间从3开始,因为刚才已经判断过了2不是素数
while (i<=n)
{
if (n%i == 0)
break;
i+=2;
}
if (n == i)
{
printf("%d ", n);
sum++;
}
}
}
printf("\n共有%d个素数", sum);
return 0;
}
2.输出9*9口诀,共9行9列,i控制行,j控制列。#include<stdio.h>
//输出9*9口诀,共9行9列,i控制行,j控制列。
int main()
{
int i = 0;
for (i; i < 9; i++)//先来个控制9行的循环
{
int j = 0;
int k = 1;
while (j<i+1 )//在来个每行的控制
{
printf("%dx%d=%d\t",k, i + 1, (k)*(i + 1));
k++;
j++;
}
printf("\n");
}
return 0;
}
3.判断101-200之间有多少个素数,并输出所有素数及素数的个数。
#include<stdio.h>
//打印101到200以内的所有素数
//首先判断是不是偶数,是偶数,则不是素数
//然后循环到n/2+1即可,计算到一半就可以判断其到底是不是素数,假如判断11,只需要依次循环n是否能整除2 3 4 5 6 即可
//每次循环判断可以加2,能减少循环次数,因为你前面已经判断过其是奇数还是偶数了,因此加2即可
int main()
{
int n;
int i;//依次拿n%i
int sum=0;//存储素数有多少个
for (n=101;n<200;n++)
{
if (n % 2 == 0)
;//说明是偶数,是偶数就不是素数
else //从奇数中继续筛选谁为素数,这时候就需要循环了
{
//int m = n / 2 + 1;//m做为中间的数
i = 3;//i之间从3开始,因为刚才已经判断过了2不是素数
while (i<=n)
{
if (n%i == 0)
break;
i+=2;
}
if (n == i)
{
printf("%d ", n);
sum++;
}
}
}
printf("\n共有%d个素数", sum);
return 0;
}
4.打印100以上总共85个素数。#include<stdio.h>
#include <math.h>
//打印101到200以内的所有素数
//首先判断是不是偶数,是偶数,则不是素数
//然后循环到n/2+1即可,计算到一半就可以判断其到底是不是素数,假如判断11,只需要依次循环n是否能整除2 3 4 5 6 即可
//每次循环判断可以加2,能减少循环次数,因为你前面已经判断过其是奇数还是偶数了,因此加2即可
int main()
{
int n;//2循环到100
int i;//依次拿n%i
int sum = 0;//存储素数有多少个
for (n = 101; sum<85; n++)
{
if (n % 2 == 0)
;//说明是偶数,是偶数就不是素数
else //从奇数中继续筛选谁为素数,这时候就需要循环了
{
int m = sqrt(n) + 1;//m做为中间的数 若换为sqrt效率更高
i = 3;//i之间从3开始,因为刚才已经判断过了2不是素数
while (i < m)//
{
if (n%i == 0)
break;
i += 2;
}
if (i >= m)
{
printf("%d ", n);
sum++;
}
}
}
printf("\n共有%d个素数", sum);
return 0;
}
5.打印7行7列菱形一角。#include<stdio.h>
//*
//**
//***
//****
//*****
//******
//*******
//一看是两层,说明要嵌套循环了,外层用for,内层用while结构会清晰一些。
int main()
{
int i=0;
for (i; i < 7; i++)
{
int j = 0;
while (j < i+1)
{
printf("*");
j++;
}
printf("\n");
}
return 0;
}
6.打印7列13行的菱形两角。#include<stdio.h>
//*
//**
//***
//****
//*****
//******
//*******
//******
//*****
//****
//***
//**
//*
//之间利用上一题,在写一个for,依次打印即可
int main()
{
int i = 0;
for (i; i < 7; i++)
{
int j = 0;
while (j < i + 1)
{
printf("*");
j++;
}
printf("\n");
}
i = 0;
for (i; i < 7; i++)
{
int j = 0;
while (j < 7-i)
{
printf("*");
j++;
}
printf("\n");
}
return 0;
}
7.打印13行13列完整菱形。
#include<stdio.h>
// * 6个空格
// *** 5个空格
// ***** 4个空格
// *******
// *********
// ***********
//*************
// *********** 1个空格 6+5个*
// ********* 2个空格 5+4
// ******* 3 4+3
// ***** 4 3+2
// *** 5 2+1
// * 6 1+0
int main()
{
int i = 0;
for (i; i < 7; i++)
{
int j = 0;
while (j < 6-i)
{
printf(" ");
j++;
}
while (j <7)
{
printf("*");
j++;
}
j = 0;
while (j < i)
{
printf("*");
++j;
}
printf("\n");
}
for (i = 0; i < 6; i++)
{
int j = 0;
while (j < i+1)
{
printf(" ");
j++;
}
while (j<7)
{
printf("*");
j++;
}
j = 0;
while (j<5-i)
{
printf("*");
j++;
}
printf("\n");
}
return 0;
}
8.总结
一定得多练习,突然发现了调试的乐趣。在不断调试的过程中,一步一步逼近结果,这个过程真的很让人兴奋!
|