> 文章列表 > C语言习题——流程控制语句

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

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

文章目录

  • 前言
  • 基础
    • 1、求 100 之内自然数中最大的能被 17 整除的数。
    • 2、输入年份,判断是否闰年。
    • 3、计算并输出 200—400 之间不能被 3 整除的整数的和。
    • 4、求 1-1/2+1/3-1/4+……+1/99-1/100 的值。
    • 5、已知 a,b,c 都是 1 位整数,求当三位数 abc+cba 的值为 1333 时 a,b,c 的值。
    • 6、输出所有 200-400 以内能被 3 整除且个位数字为 7 的整数。
    • 7、break continue 使用 break 和 continue 来分别显示一个 4 之后函数就不再打印 i。(i 的变化范围是 0~10)
    • 8、写一段程序,输入 x,输出 y 值。 ①x<1,y=x;② 1≤x<10,y= 2x-1 ;③ x≥1,y=3x-11;
  • 巩固
    • 1、编程计算 1! +2! +3! + …… +10!的值。
    • 2、编程计算 1*2*3+3*4*5+……+99*100*101 的值。
    • 3、打印所有水仙花数。所谓水仙花是指一个三位数,其各位数字的立方和等于该数。 例如:153=1*1*1+5*5*5+3*3*3=1+125+27
    • 4、输出 100 到 200 以内的所有素数(只能被本身或则 1 整除的数)。
    • 5、用 1 元人民币兑换 5 分(20), 2 分(50), 1 分(100)的硬币共 50 枚, 每种 硬币至少 1 枚,问共有多少种兑换方案, 输出每一种方案三种硬币的数量。
    • 6)※已知银行定期存款利率为 r=2.25%,输入存款本金 x, 存款年数 n,输出本利之和 r=x(1+r) (1+r)(1+r),共 n 个(1+r).
    • 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。
    • 8、有一个分数序列: 2/1,3/2,5/3,8/5,13/8,21/13,... 求出这个数列的前 20 项之和。
    • 10、输入一个字符,如果是大写字母则,将其以小写形式输出,如果是小写字母,则将其以大 写形式输出。如果不是英文字母,则原样输出
  • 提升
    • 1、输入正整数,将正整数分解质因数。质因数要满足两个条件:1)是这个数的因数;2)是质 数(素数) 如: 6=2*3 12=2*2*3。
    • 2、小猴摘了很多桃子,第一天吃了一半又多吃一个,第二天又吃掉一半再多吃一个,如此下 去,到第真十天恰好还剩一个桃子。问第一天小猴摘了多少桃子?
    • 3、两个乒乓球队进行比赛,各出 3 人。甲对为 A、B、C 3 人,乙队为 X、Y、Z 3 人。已 抽签决定比赛名单。有人向队员打听比赛的名单,A 说他不和 X 比,C 说他不和 X、Z 比,编 程找出 3 对赛手的名单

前言

本篇仅作为个人参考笔记,为有需要的小伙伴提供思路和代码,为编程小白提供简单编程题。另:本文仅总结编程题个人思路,需要精简或者更优之后肯能会有(大概率不会,选择题判断题可上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*3if(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);}}}
}