C语言期末集训3(大一,超基础,小猫猫大课堂配套练习)——循环结构

 更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发,

最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要。 

大一上程序设计期末复习,超基础,小猫猫大课堂配套练习。

目录

前言

while循环语句

折叠编辑本段do-while语句

折叠编辑本段for语句

折叠编辑本段三种语句比较

求1+2+3+...+100之和

方法1:dwhile()

方法2: do...while()

要求输出100~200的不能被3整除的数

输出以下4*5的矩阵

输出100-200所有不能被3整除的数,并统计这些数的个数

输出所有的玫瑰花数

输入m和n两个正整数求最大公约数和最小公倍数

输人一行字符,分别统计出其中英文字母、空格、 数字和其他字符的个数。

5.求Sn=a十aa+ aaa+...+a...a之值,其中a是一个数字,n表示a的位数,n由键盘输入例如:2+22十222十2222十22222(此时n=5)

同类型题,升级版1

同类型题,升级版2

老朋友,星号菱形

用双重循环,输出矩形(星号),每个图形输出5行

总结


前言

水字数,不然csdn要建议,小朋友需要可以看看,帮助理解

C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。

while循环语句

一般形式如下:

while(表达式)

语句;

其中执行过程如下:正在上传…重新上传取消while语句

(1)计算while后面括号里表达式的值,若其结果非0,则转入(2),否则转(3)

(2)执行循环体,转(1)

(3)退出循环,执行循环体下面的语句。

由于是先执行判断后执行循环体,所以循环体可能一次都不执行。

循环体可以为空语句";"。

折叠编辑本段do-while语句

一般形式如下:

do

语句;

while(表达式);

(1)执行循环体,转(2)正在上传…重新上传取消do...while语句https://so1.360tres.com/t01fca9c92e175e20d4.jpg

(2)计算while后面括号里表达式的值,若其结果非0,则转入(1),否则转(3)

(3)退出循环,执行循环体下面的语句。

注意:do……while语句最后的分号(;)不可少,否则提示出错。循环体至少执行一次。

折叠编辑本段for语句

for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已知循环次数的情况。

一般形式如下:

for ( [表达式 1]; [表达式 2 ]; [表达式3] )

语句

其中:

表达式1:一般为赋值表达式,给控制变量赋初值;正在上传…重新上传取消for语句https://so1.360tres.com/t01389352673bc08e9a.jpg

表达式2:关系表达式或逻辑表达式,循环控制条件;

表达式3:一般为赋值表达式,给控制变量增量或减量;

语句:循环体,当有多条语句时,必须使用复合语句。

其执行过程如下:首先计算表达式1,然后计算表达式 2。若表达式2为真,则执行循环体;否则,退出 for循环,执行for循环后的语句。如果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新计算表达式2,依此循环,直至表达式 2的值为假,退出循环。

for语句的三个表达式都是可以省略的,但分号";"绝对不能省略。for语句有以下几种格式:

(1)for(; 😉 语句;

(2)for(;表达式2;表达式3 ) 语句;

(3)for(表达式1;表达式2;) 语句;

(4)for(i=1,j = n; i < j; i ++,j - - ) 语句;

折叠编辑本段三种语句比较

同一个问题,往往既可以用 while语句解决,也可以用 do-while或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句。选用的一般原则是:

(1) 如果循环次数在执行循环体之前就已确定,一般用 for语句。如果循环次数是由循环体的执行情况确定的,一般用 while语句或者do- while语句。

(2) 当循环体至少执行一次时,用 do-while语句,反之,如果循环体可能一次也不执行,则选用while语句。

C++/C循环语句中,for语句使用频率最高,while语句其次,do语句很少用。

三种循环语句for、while、do-while可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间绝不允许交叉。


求1+2+3+...+100之和

方法1:dwhile()

#include<stdio.h>
int main()
{
	int i=1,sum=0;
	while(i<=100)
	{
		sum=sum+i;
		i++;
	 } 
	 printf("sum=%d",sum);
	return 0;
 } 

方法2: do...while()

#include<stdio.h>
int main()
{
	int i=1,sum=0;
	do
	{
		sum=sum+i;
		i++; 
	}while(i<=100);//记得填i的范围哦!
	printf("%d",sum);
	return 0;
 } 

要求输出100~200的不能被3整除的数

#include<stdio.h>
int main()
{
	int n;
	for(n=100;n<=200;n++)
	{
		if(n%3==0)
		continue;//有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环,可以使用continue。 
		printf("%d ",n);
	}
	printf("n");
	return 0;
 } 

输出以下4*5的矩阵

#include<stdio.h>
int main()
{
	int i,j,n=0;
	for(i=1;i<=4;i++)
	   for(j=1;j<=5;j++,n++)
	   {
	   	if(n%5==0)
	   	
	   		printf("n");
	   		printf("%dt",i*j);//  t讲过,忘了看前几次的习题博客。 
		   }
		
		printf("n"); 
	return 0;
 } 

输出100-200所有不能被3整除的数,并统计这些数的个数

#include<stdio.h>
int main()
{
	int n,count=0;
	for(n=100;n<=200;n++)
	{
		if(n%3==0)
		continue;
		count++;
	} 
	 printf("count=%d",count);
	return 0;
}

输出所有的玫瑰花数

#include<stdio.h>
int main()
{
	int a,b,c,d,n;
	for(n=1000;n<=9999;n++)
	{
		a=n/1000;
		b=n%1000/100;
		c=n%1000%100/10;
		d=n%1000%100%10;
		if(n==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
		printf("%d  ",n);
	}
	
	return 0;
}

输入m和n两个正整数求最大公约数和最小公倍数

#include <stdio.h>
int main()
{
	int m=0,n=0,mn=0,i=0,a=0;
	scanf("%d,%d",&m,&n);
	if(m>n)
	mn=n;
	else
	mn=m;
	
	for(i=mn;i>0;i--)
	{
		if(m%i==0&&n%i==0)//最大公因数应该小于等于n和m的较小数,不断进行试错,可得 
		break;
	}
	for(a=mn;a<m*n;a++)
	{
		if(a%m==0&&a%n==0)//最小公倍数应该大于等于n和m的较小数,不断进行试错,可得 
		break;
	}
	printf("最大公因数=%d,最小公倍数=%d",i,a);
	return 0;
}

输人一行字符,分别统计出其中英文字母、空格、 数字和其他字符的个数。

#include <stdio.h>
int main()
{
	
	char a[20];
	int number =0;
	int space  =0;
	int letters=0;
	int other=0;
	while((a[i]=getchar())&&a[6]]!='n')//getchar作用是读取字符,getchar()的功能最主要是c语言中读取字符的一个函数,能够提取单个字符
	{
		if(a[i]>='0'&&a[i]<='9')
		number++;
		else if(a[i]==' ')
		space ++;
		else if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
		letters ++;
		else
		other++;
	}
	printf("英语字母个数为:%dn",letters);
	printf("数字个数为:%dn",number);
	printf("空格个数为:%dn",space);
	printf("其他个数为:%dn",other);
	return 0;
}

求Sn=a十aa+ aaa+...+a...a之值,其中a是一个数字,n表示a的位数,n由键盘输入例如:2+22十222十2222十22222(此时n=5)

#include<stdio.h>
int main()
{
    double a=2.0,b=1.0;
    double n,sum=0.0,t;
    int i;
    for(i=1;i<=20;i++)
    {
		n=a/b;
		t=a;
		a=a+b;
		b=t;
		sum=sum+n;
	}
	printf("%.10lf",sum);
	return 0;
}

同类型题,升级版1

#include<stdio.h>
int main()
{
	int n1=100,n2=50,n3=10;
	double k,s1=0,s2=0,s3=0;
	for(k=1;k<=n1;k++)
	{
		s1=s1+k;
	}
	for(k=1;k<=n2;k++)
	{
		s2=s2+k*k;
	}
	for(k=1;k<=10;k++)
	{
		s3=s3+1/k;
	}
	printf("%lf",s1+s2+s3);
	return 0;
}

同类型题,升级版2

有一个分数序列

#include<stdio.h>
int main()
{
    double a=2.0,b=1.0;
    double n,sum=0.0,t;
    int i;
    for(i=1;i<=20;i++)
    {
		n=a/b;
		t=a;
		a=a+b;
		b=t;
		sum=sum+n;
	}
	printf("%.10lf",sum);
	return 0;
}

老朋友,星号菱形

 

#include<stdio.h>//菱形写了三遍了,自己还是写不出来,啊————,真是头疼!
int main()
{
	int n,i,j,k;
	scanf("%d",&n);
	for(i=1;i<=n+1;i++)
	{
		for(j=1;j<=n+1-i;j++)
		printf(" ");
		for(k=1;k<=2*i-1;k++)
		printf("*"); 
		printf("n");
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=i;j++)
			printf(" ");
		for(k=1;k<=(2*n+1)-2*i;k++)
			printf("*");
			printf("n"); 
	}
	return 0;
}

用双重循环,输出矩形(星号),每个图形输出5行

#include<stdio.h>
#include<math.h>
int main()
{
	int i,j;
	for(i=1;i<=5;i++)
	{
		for(j=1;j<=5;j++)
		{
			printf("*");
		}
		printf("n");
	}
	return 0;
} 

总结

循环结构,小喵练习得差不多有这些数,有些重复了的,小喵挑拣了些,最近状态不对,小喵会对自己的博客进行再度完善的,希望下一次的小喵会更美好。

更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发,

最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要。 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>