经典例题-流程控制语句

经典例题-流程控制语句

知识点icon-default.png?t=N7T8https://blog.csdn.net/m0_71813740/article/details/140599796?spm=1001.2014.3001.5501

初学者推荐查询网站

注: for循环中的i++不受循环体的影响,如果在循环体中用continue,i++依旧执行。
变量的完整初始化,类型 标识符 初始化。如果不加初始化,很容易产生随机数。

  1. 以下程序的运行结果是
int main()
{
    int m=5;
    if(m++>5)
    printf(“%d\n”,m);
    else
    printf(“%d\n”,m--);
}

A) 4 B) 5 C) 6 D) 7
tip:这道题主要考察的是i++,在不是单独运行也就是“i++;”的情况下,要先执行,后++,包括printf(),是先输出,后++。 -- C


2.语句 while(!E);中的表达式!E 等价于_______.
a)E==0 b)E!=1 c)E!=0 d)E==1
tip:先判断E,如果E为真,则!E为假,反之,如果E为假,则!E为真。这道题只能假设E为假,!E为真的情况。另一种情况的答案选项不唯一。B选项E=0,1,2,3.。。,C选项E位真,D选项E为真 --A


3.输入年份,判断是否闰年。

int main()
{
	int year;
	printf("请输入一个年份\n");
	scanf("%d",&year);
	if((year%4==0&&year%100!=0)||year%400==0)
	printf("该年份为闰年\n");
	else
	printf("该年份为平年\n");
}

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

int main()
{
	int a,b,c,sum;
	for(a=0;a<=9;a++)
	{
		for(b=0;b<=9;b++){
			for(c=0;c<=9;c++){
				sum =(a*100+b*10+c)+(c*100+b*10+a);
				if(sum==1333){
					printf("当三位数 abc+cba 的值为 1333 时 a,b,c 的值分别为%d,%d,%d\n",a,b,c);
				}
			}
		}
	}
	return 0;
}

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

/*
	作者: zcy
	日期:
	功能描述:编程计算 1! +2! +3! + …… +10!的值
		思路:
			1-10的阶乘和
			int num = 1;
			
			循环次数已知  -- for
				初始值: i = 1
				条件:   i <=10
				计数器: i++
				循环操作:
					1.i的阶乘	
						1! = 1*1     = 1
						2! = 1*2     = 1!*2
						3! = 1*2*3   = 2!*3
						4! = 1*2*3*4 = 3!*4
						num = num * i;
					2.累加
						sum += num;
			输出 sum的值
*/
int main()
{
	int num = 1,sum = 0;
	for(int i=1;i<=10;i++)
	{
		num*=i;
        sum+=num;
	}
	printf("1! +2! +3! + …… +10!的值为%ld\n",sum);
	return 0;
}

6.编程计算1* 2 * 3+3 * 4 * 5+……+99 * 100 * 101 的值。

/*
	作者: zcy
	日期:
	功能描述:编程计算 1*2*3+3*4*5+……+99*100*101 的值
		思路:
			1-100之间  -- 区间  -- 次数已知  -- for
				初始值: i = 1
				条件:   i <100
				计数器: i+=2
				循环操作:
					sum += i*(i+1)*(i+2);  // 规律
			输出sum值
			
*/
int main()
{
	int sum=0;
	for(int i=1;i<=99;i+=2)
	{
		sum += i*(i+1)*(i+2);
	}
	printf(" 1*2*3+3*4*5+……+99*100*101 的值为%d\n",sum);
	return 0;
}

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

/*
	作者: zcy
	日期:
	功能描述:打印所有水仙花数。所谓水仙花是指一个三位数,其各位数字的立方和等于该数。 例如:153=1*1*1+5*5*5+3*3*3=1+125+27
	思路:
		水仙花是指一个三位数  -- 100 - 999 -- 次数已知 -- for
			初始值: i = 100
			条件:   i < 1000
			计数器: i++
			循环操作:
				判断是否是水仙花数   -- 基本if选择结构
				 获得各位上数字  -- 211
				 百: int b = i/100
				 十: int s = i/10%10  -- i%100/10
				 个: int g = i%10
				 条件: b*b*b+s*s*s+g*g*g == i
				 执行: 
				 	真: 打印i
				 	假: 无
				
*/
int main()
{
	int i;
	for(i=100;i<1000;i++)
	{
		if(((i/100)*(i/100)*(i/100)+(i/10%10)*(i/10%10)*(i/10%10)+(i%10)*(i%10)*(i%10))==i)
		{
			printf("%d是水仙花数\n",i);
		}
	}
	
	return 0;
}

如果要用到数学函数,例如pow函数,那么编译的时候要加-lm, 从.h文件中找。./a.out -lm


8.输出 100 到 200 以内的所有素数(只能被本身或 1 整除的数)

/*
	作者: zcy
	日期:
	功能描述:输出 100 到 200 以内的所有素数(只能被本身或则 1 整除的数)
		思路:   -- 标记法 -- 造条件
			100 - 200以内  -- 循环次数已知  -- for
				初始值: i = 100
				条件:   i <=200
				计数器: i++
				循环操作:
					1.判断是否是素数--除了1和本身之外还有其他能够被整除的数
					flag =1; //默认是素数
					//验证是否是素数
					2-本身 -- 求余  -- for
						初始值: j = 2
						条件:  j < i
						计数器: j++
						循环操作:
							判断i对j是否能整除
							条件: i % j == 0
								真: flag = 0;break;
								假: 无
					2.打印i  
						 方法一:找打印i的条件 --  j == i
						 方法二: 标记法 -- 造条件  -- flag =1
					
					
*/
#include <stdio.h>  

int main() {  
    for (int i=100;i<=200;i++) {
         int flag=1;//默认是素数
       for(int j=2;j<i;j++){  
        if (i%j==0) {  
        flag=0;
        break;
        }
     }
        if(flag){
        	printf("%d\n",i);
        }  
    }  
    return 0;  
}  

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

#include <stdio.h>   

int main() {  
    int count = 0;
    printf("兑换方案:\n");
    for(int a=1;a<20;a++)
    {
    	for(int b=1;b<50;b++){
    		int c=50-a-b;
    		 if (c >= 1 && (5 * a + 2 * b + 1 * c) == 100) {  
                printf("5分硬币: %d, 2分硬币: %d, 1分硬币: %d\n", a, b, c);  
                count++; 
            }  
    	}
    }
     printf("总共方案数: %d\n", count);  
    return 0;  
}  

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

#include <stdio.h>   

int main() {  
	double x, n;
	double r=0.0225;
    printf("请输入存款本金和存款年数\n");
    scanf("%lf%lf",&x,&n);
    for(int i=1;i<=n;i++)
    {
    	x=x*(1+r);
    }
    
    printf("本利之和: %lf\n", x);  
    return 0;  
}

11.输出 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 sum,i,j;
	printf("10000以内的所有完全数w为:\n");
	for(i=1;i<10000;i++)
	{
	    sum=0;
		for(j=1;j<i;j++)
		{
			if(i%j==0){
				sum+=j;
			}
		}
		if(sum==i){
			printf("%d\n",i);
		}
	} 
    return 0;  
}  

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

/*
	作者: zcy
	日期:
	功能描述:有一个分数序列: 2/1,3/2,5/3,8/5,13/8,21/13,... 求出这个数列的前 20 项之和
		思路:
			找规律 -- 从第二项开始
			分子= 上一项的分子+分母
			分母= 上一项的分子
			共20项  -- 循环20次 -- for
			初始化第一项内容: 分子= 2,分母=1
				初始值: i = 2
				条件: i <=20
				计数器: i++
				循环操作:
					1.分子= 上一项的分子+分母
					2.分母= 上一项的分子
					3.累加 -- sum
			打印输出sum的值
			
*/
int main()
{
	//初始化第一项内容
	float fz = 2,fm = 1;
	float sum = 0;
	for(int i = 1;i<=20;i++)
	{
		sum += fz/fm;
		float temp = fz;
		fz = fz + fm;
		fm = temp;
		
	}
	printf("sum = %.2f\n",sum);
	return 0;
}


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

/*
	作者: zcy
	日期:
	功能描述:求 Sn=a+aa+aaa+……+aa..aa(n 个 a)之值,其中 a 是一个数字,n 表示 a 的位数。例如: 2+22+222+2222+22222(此时 n=5),n 由键盘输入
		思路:
			累加 n 次 -- for
				记录任意位数的数据 -- temp
				int temp = 0;
				初始值: i = 1
				条件:   i <=n
				计数器:  i++
				循环操作:
					1. 求i位数据  -- i-1
							2 =  0*10+2 
							22 = 2*10+2	
							222= 22*10+2	
							2222=222*10+2
							
						temp=temp*10+a
					2. 累加 -- sum+= temp;
			打印sum的值
			
*/
#include <stdio.h>  

int main() {  
    int a, n;  
    long long sum = 0; 
    long long term = 0;   

    printf("请输入数字 a: ");  
    scanf("%d", &a);  
    printf("请输入位数 n: ");  
    scanf("%d", &n);  
  
    for (int i = 1; i <= n; i++) {  
        term = term * 10 + a; 
        sum += term;        
    }  

    printf("Sn 的值为: %lld\n", sum);
    return 0;  
}

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

#include <stdio.h>  

int main() {  
    char c,data;
    printf("输入一个字符\n");
    scanf("%c",&c);
    if(c>=65&&c<=90){
    	data = c +32;
    }else if(c>=97&&c<=122){
    	data = c - 32;
    }else {
    	data=c;
    }

    printf("Sn 的值为: %c\n", data);
    return 0;  
}
  • 24
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值