在前面,我们已经学习完了分支循环语句,接下来,我们就需要做练习来巩固我们所学的知识了,我们就来通过以下的题目来巩固吧!
1、打印100--200之间的素数
我们要知道,素数就是质数,质数就是除去1和它自身之外,再没有其他因数的正整数。
所以代码如下:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j < i; j++)
{
if (i % j == 0)
break;
}
if (i == j)
printf("%d ", i);
}
return 0;
}
运行结果如下:
2、打印1000--2000年的闰年
如果年份能被4整除的但不能被100整除,或者能被400整除的是闰年。
根据以上信息,我们就知道了闰年该如何判断了,代码如下:
#include<stdio.h>
int main(void)
{
int year = 0;
for (year = 1000; year <= 2000; year++)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
printf("%d ", year);
}
return 0;
}
运行结果如下:
3、用 * 打印正方形
在做过的所有题目中,打印图案对于我来说一直是很难的,接下来,我们就慢慢的分析一下打印正方形这个题目。
首先,我们来打印一条横线,代码如下:
#include<stdio.h>
int main()
{
int i = 0;
int n = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
printf("* ");
}
return 0;
}
输入4,运行结果如下:
我们知道了打印横线,接下了就拓展一下,打印正方形,代码如下:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
for (i = 1; i <= n; i++) //行数
{
for (j = 1; j <= n; j++) //列数
{
printf("* ");
}
printf("\n");
}
return 0;
}
输入4,运行结果如下:
我们再来打印一个三角形
我们知道,三角形就是正方形的一半,所以上面的代码就需要一点点的变动就可以打印出来了,代码如下:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
for (i = 1; i <= n; i++) //行数
{
for (j = 1; j <= i; j++) //列数
{
printf("* ");
}
printf("\n");
}
return 0;
}
输入4,运行结果如下:
这两个代码的区别只有一个字母的差别,要注意不要看错。
4、打印乘法口诀表
代码如下
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
for (i = 1; i <= n; i++) //行数
{
for (j = 1; j <= i; j++) //列数
{
printf("%d*%d=%2d ",j,i,i*j);
}
printf("\n");
}
return 0;
}
输入9,运行结果如下:
我们不难发现,上面打印正方形和三角形,以及打印乘法口诀表,它们的代码主体都不变,只要其中稍微变化一点就可以实现不同的任务,这是我们需要思考的一个问题,我们能不能举一反三完成更多的任务呢?
5、求奇数序列前n项和 1+1/3+1/5+……
代码如下:
#include<stdio.h>
int main()
{
int i = 0;
int n = 0;
scanf("%d", &n);
double sum = 0.0;
int d = 1; //分母
double number;
for (i = 1; i <= n; i++)
{
number = 1.0 / d;
sum += number;
d += 2;
}
printf("sum = %.6f", sum);
return 0;
}
输入23,运行结果如下:
6、求交错序列前n项和 1-2/3+3/5-4/7+……
代码如下:
#include<stdio.h>
int main()
{
int i=0;
int fz=1; //分子
int fm=1; //分母
int flag=1;
double sum=0.0;
int n=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=flag*fz*1.0/fm;
fz+=1;
fm+=2;
flag=-flag;
}
printf("%.3lf",sum);
return 0;
}
7、计算n的阶乘
代码如下:
#include<stdio.h>
int main()
{
int i=1;
int n=0;
int ret=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ret=ret*i;
}
printf("%d",ret);
return 0;
}
既然我们都会求阶乘了,那么我们就来求一下阶乘之和吧!
代码如下:
#include<stdio.h>
int main()
{
int i = 1;
int n = 0;
int ret = 1;
int sum = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret = ret * i;
sum += ret;
}
printf("%d", sum);
return 0;
}
以上的这些题目对于初学者来说是有难度的,主要的问题不在逻辑,而是如何将实际问题转换为计算机语言,或者就是一看一脸懵,完全不知道如何下手,但不论怎么样,把这些问题换做数学题我们都会,该如何用代码来实现,这是我们需要不断学习的。