C语言习题——流程控制语句

文章目录

前言

本篇仅作为个人参考笔记,为有需要的小伙伴提供思路和代码,为编程小白提供简单编程题。另:本文仅总结编程题个人思路,需要精简或者更优之后肯能会有(大概率不会,选择题判断题可上bd刷一下。

基础

1、求 100 之内自然数中最大的能被 17 整除的数。

#include <stdio.h>
int main()
{
	int i=100;
	for(i=100;i>0;i--)
	{
		if(i%17 ==0)
		break;	
	}
	printf("0-100内整除17的最大自然数是:%d\n",i);
}

2、输入年份,判断是否闰年。

#include <stdio.h>
int main()
{
	int year=0;
	printf("请输入一个年份:\n");
	scanf("%d",&year);
	if((year%4==0&&year%100!=0)||(year%400==0))
	{
		printf("这个年份是闰年!\n");
	}else{
		printf("这个年份不是闰年\n");
	}
}

3、计算并输出 200—400 之间不能被 3 整除的整数的和。

#include <stdio.h>
int main()
{
	int i=0,sum=0;
	for(i=200;i<400;i++)
	{
		if(i%3==0)
		continue;
		sum=sum+i;
	}
	printf("200-400中不能整除3的数的和为:%d\n",sum);
}

4、求 1-1/2+1/3-1/4+……+1/99-1/100 的值。

#include <stdio.h>
int main()
{
	int i=0;
	float n=0;
	float sum=0;
	for(i=1;i<=100;i++)
	{
		if(i%2==0)
		{
			n=-1.0/i;
		}else{
			n=1.0/i;
		}
		sum=n+sum;
	}
	printf("1-1/2+1/3...+1/n=%.2f",sum);
}

5、已知 a,b,c 都是 1 位整数,求当三位数 abc+cba 的值为 1333 时 a,b,c 的值。

#include <stdio.h>
int main()
{
	int num1=0,num2=0;
	int a,b,c;
	for(a=0;a<10;a++)
	{
		for(b=0;b<10;b++)
		{
			for(c=0;c<10;c++)
			{
				num1=a*100+b*10+c;
				num2=c*100+b*10+a;
					if(num1+num2==1333)
					{
						printf("abc+cba=1333时,a=%d,b=%d,c=%d\n",a,b,c);
				  }
			}
		}
	}
	



	
}

6、输出所有 200-400 以内能被 3 整除且个位数字为 7 的整数。

#include <stdio.h>
int main()
{
	int i;
	int a=0;
	for(i=200;i<400;i++)
	{
		a=i%100%10;
			if(i%3==0)
			{
				if(a==7)
				printf("200-400之间的数能整除3且个位数是7的数是:%d\n",i);
			}
		}
	}

7、break continue 使用 break 和 continue 来分别显示一个 4 之后函数就不再打印 i。(i 的变化范围是 0~10)

#include <stdio.h>
int main()
{
	int i=0;
	for(i=0;i<10;i++)
	{
		printf("%d\n",i);
		if(i==4)break;
	}
	
}

#include <stdio.h>
int main()
{
	int i=0;
	for(i=0;i<10;i++)
	{

		if(i>4)
		continue;
		printf("%d\n",i);
	}
}

8、写一段程序,输入 x,输出 y 值。 ①x<1,y=x;② 1≤x<10,y= 2x-1 ;③ x≥1,y=3x-11;

#include<stdio.h>
int main()
{
	int x,y;
	int y1,y2,y3;
	printf("请输入一个数:");
	scanf("%d",&x);
	y1=x;
	y2=2*x-1;
	y3=3*x-11;
	if(x<0)
	{
		printf("y=:%d\n",y1);
	}else if(x>=1&&x<=10)
	{
		printf("y=:%d\n",y2);
	}else if(x>10)
	{
		printf("y=%d\n",y3);
	
	}
	
}

巩固

1、编程计算 1! +2! +3! + …… +10!的值。

#include<stdio.h>
int main()
{
	int i;
	int sum=0;	
	int a=1;
	for(i=1;i<=10;i++)
	{	
	a=a*i;
	sum=a+sum;
	}
	printf("1!+2!+……+10!=%d\n",sum);
}

2、编程计算 123+345+……+99100101 的值。

#include<stdio.h>
int main()
{
	int i;
	int num=0,sum=0;
	for(i=0;i<100;i++)
	{
		if(i%2!=0)
		{
			num=i*(i+1)*(i+2);
			sum=num+sum;
		}
	}
	printf("该式子结果为:%d\n",sum);
}

3、打印所有水仙花数。所谓水仙花是指一个三位数,其各位数字的立方和等于该数。 例如:153=111+555+333=1+125+27

#include <stdio.h>
int main()
{
	int a,b,c;
	int num;
	int i=101;
	for(i>100;i<1000;i++)
	{
	a=i/100;
	b=i%100/10;
	c=i%100%10;
	num=a*100+b*10+c;
		if(num==a*a*a+b*b*b+c*c*c)
		{
			printf("水仙花数:%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n",num,a,a,a,b,b,b,c,c,c);
		}
	}
}

4、输出 100 到 200 以内的所有素数(只能被本身或则 1 整除的数)。

#include<stdio.h>
int main()
{
	int i,j;
	for(i=100;i<200;i++)
	{
		for(j=2;j<i;j++)
		{
			if(i%j ==0)//不是素数
			{
			break;
			}
		}
		if(j>=i)
		{
			printf("%d\n",i);
		}
	}
}

5、用 1 元人民币兑换 5 分(20), 2 分(50), 1 分(100)的硬币共 50 枚, 每种 硬币至少 1 枚,问共有多少种兑换方案, 输出每一种方案三种硬币的数量。

#include<stdio.h>
int main()
{
	int i,j,k;
	int cont=0;
	for(j=1;j<20;j++)
	{
		for(k=1;k<50;k++)
		{
			for(i=1;i<100;i++)
			{
				if((2*k+5*j+i==100)&&(k+j+i==50))
				{
				cont++;
				printf("一分%d个,二分%d个,五分%d个\n",i,k,j);
				}
			}
		}
	}
	printf("一共%d种方案",cont);
}

6)※已知银行定期存款利率为 r=2.25%,输入存款本金 x, 存款年数 n,输出本利之和 r=x(1+r) (1+r)(1+r),共 n 个(1+r).

#include<stdio.h>
int main()
{

	float x,n;
	printf("请输入你存多少钱和存多少年并用逗号隔开:");
	scanf("%f%f",&x,&n);
	for(int i=1;i<=n;i++){
		x*=(1+0.0225);
	}
	printf("x=%.1f\n",x);
}

7、※输出 10000 以内的所有完全数, 各个小于它的约数(真约数, 列出某数的约数, 掉该数 本身, 剩下的就是它的真约数)的和等于它本身的自然数叫做完全数。 例如:第一个完全数是 6,它有约数 1、 2、 3、 6,除去它本身 6 外,其余 3 个数相 加, 1+2+3=6。第二个完全数是 28,它有约数 1、 2、 4、 7、 14、 28,除去它本身 28 外, 其余 5 个数相加, 1+2+4+7+14=28。

#include<stdio.h>
int main()
{
	int num,i,sum=0;
	for(num=1;num<=10000;num++){
		sum = 0;
		for(i=1;i<num;i++)
		{
			if(num%i == 0)
			sum += i;
		}
		if(sum == num)
			printf("%d\n",num);
	}
}

8、有一个分数序列: 2/1,3/2,5/3,8/5,13/8,21/13,… 求出这个数列的前 20 项之和。

#include<stdio.h>
int main(){
	int i=0;
	float num;
	float a=2,b=1,temp;
	for(i=1;i<=20;i++)
	{

		num+=(a/b);
		temp=a;
		a=a+b;
		b=temp;
	}
	printf("该式子之和为:%.2f\n",num);
}

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

```c
#include<stdio.h>
nt main()
{
	int a,n,sum=0,tmp=0;
	scanf("%d%d",&a,&n);
	for(int i=1;i<=n;i++)
	{
		tmp = tmp*10+a;
		printf("%d\n",tmp);
		sum += tmp;
	}
	printf("sum=%d\n",sum);
}

10、输入一个字符,如果是大写字母则,将其以小写形式输出,如果是小写字母,则将其以大 写形式输出。如果不是英文字母,则原样输出

int main()
{
	char c;
	scanf("%c",&c);
	if(c>='a'&&c<='z')
		printf("结果为:%c\n",c-32);
	else if(c>='A'&&c<='Z')
		printf("结果为:%c\n",c+32);
	else if(c>='0'&&c<='9')
		printf("结果为:%c\n",c);
}

提升

1、输入正整数,将正整数分解质因数。质因数要满足两个条件:1)是这个数的因数;2)是质 数(素数) 如: 6=23 12=22*3。

#include <stdio.h>
int main()
{
	int num,i;
	scanf("%d",&num);
	printf("%d=",num);
	for(i=2;i<=num;i++)
	{
		while(num%i==0){
			printf("%d",i); // 2*2*3
			if(num!=i)
			printf("*");
			num /= i; //num=6 3 1
		}
	}
	printf("\n");
}

2、小猴摘了很多桃子,第一天吃了一半又多吃一个,第二天又吃掉一半再多吃一个,如此下 去,到第真十天恰好还剩一个桃子。问第一天小猴摘了多少桃子?

int main()
{
	int sum = 1;
	for(int i=0;i<10;i++)
	{
		sum = 2*(sum+1);
	}
	printf("sum = %d\n",sum);
}

3、两个乒乓球队进行比赛,各出 3 人。甲对为 A、B、C 3 人,乙队为 X、Y、Z 3 人。已 抽签决定比赛名单。有人向队员打听比赛的名单,A 说他不和 X 比,C 说他不和 X、Z 比,编 程找出 3 对赛手的名单

int main()
{
	char A,B,C;
	for(A='X';A<='Z';A++){
		for(B='X';B<='Z';B++){
			for(C='X';C<='Z';C++)
			{
				if(A!='X'&&C!='X'&&C!='Z'&&A!=B&&B!=C&&A!=C)
				printf("A--%c B--%c C--%c\n",A,B,C);
			}
		}
	}
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值