C语言循环入门练习题(共3道)

1.

思路:

  1. 先求素数。
  2. 求素数中最大的三个。

步骤1:

素数的性质是只有自身和1是它的公因数,也即,若一个正整数存在小于自身的非1因数,就不是是素数。

步骤2:

找到所有的100-999之间的所有素数之后,很容易想到最大的三个就是最接近999的三个素数。那我们将最接近999的三个素数依次输出即可,也即输出的次数为3次,同时也说明了数字应从999递减而非从100递增。

步骤3:

根据以上判断,程序中应该会产生2个循环语句,1个条件语句。

循环语句:

  1. 100-999。
  2. 某个数字除以小于自身的所有正整数。

条件语句:

输出个数为3个。

然后我们就可以得到下面的程序:

#include <stdio.h>
int main()
{
    int a,b,t=0;
    for(a = 999; a >= 100; a--)
    {
        for(b = 2; b <= a - 1 ; b++)
          { if( a % b==0)
            break;
          }
        
        if(b>a-1)
        {t = t + 1;
          printf("%d ",a);
          if(t==3)
          break; 
          }
    }
return 0;
}

2.

思路:

先控制行,再控制空格;再控制列和各位置的符号。设行数为x,列数为y,输出的数字为z。

(1):

轴对称图形看两边,先看左边:每一行空格数为(4-x),每一行数字的个数就是x。

再看右边:当y<=x时,按照顺序输出。当y>x时,z=2x-y。

可以得到程序如下:

#include <stdio.h>
int main(){
	int x,m,n;
	for(x = 1; x<=4; x++)//控制行
	{
		for(m = 0; m<=(4-x); m++)//控制空格数
			printf(" ");
		for(n = 1; n<=2*x-1; n++)//控制列数
			if(n<=x)//中轴线之前顺序输出
			printf("%d",n);
			else//中轴线之后(2x-n)
		printf("%d",2*x-n);
	printf("\n");
		
	}
return 0;
}

(2):

较上一个更简单一点,不用if控制语句了,每一行输出的字符是64(A的ASCII码)+x,直接在printf里写即可。

可得程序如下:

#include <stdio.h>
int main(){
	int i,j,k;
	for(i = 1; i<=4; i++)//行数
	{ 
		for(j = 0; j<=(4-i); j++)//空格数
			printf(" ");
		for(k = 1; k<=2*i-1; k++)//列数
		printf("%C",64+i);//每行的输出
	printf("\n");
	}
return 0;
}

(3)

一般穿插输出的都要跟取余有点关系,所以除了常规的三个循环语句之外要有一个if语句判断输出的数据。

#include <stdio.h>
int main(){
	int a,b,c;
	for(a = 1; a<=4; a++)//控制行
	{
		for(b=0; b<=(4-a);b++)//控制空格
			printf(" ");
		for(c = 1; c<=2*a-1;c++)//控制列
			if(c % 2 ==0)//判断每一个位置输出的是“*”还是“+”
			printf("+");
			else
			printf("*");
		printf("\n");
	}
	return 0;
}

3.

本处给的写法不采用指针,只采用循环。

本题不难,就是记录一下某些情况别忘了用绝对值。

#include <stdio.h>
#include <math.h>
int main(){
double sum = 0,k = 1.0;
int i;

    for(i = 2; fabs(k)>1e-5;i++)//用绝对值,不然进行到第二项就结束了,因为-0.2 < 1e-5
      { sum = sum+k;
        k = 1.0/(i*i+1.0);
        if(i%2 == 0)
        k=-k;
      }
    printf("%f",sum);
   return 0;
}

结语:本次选择了三道作为初学者的我认为非常有意思的三道题,希望能对各位看官有所帮助呀。后两篇是关于高等代数的,欢迎来看~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值