C语言集合练习之流程控制
C语言集合练习1
由于这一些题目简单,,主要考察流程控制,没啥好解释的,直接放出题目加源代码,如果有需要解释的,放在代码注释里面了^ _ ^
目录(一共24题)
- 简单程序_printf函数输出字符串
- 四则运算_加减乘除余
- 计算球体重量
- 温度转换
- 数字字符
- 实数运算
- 计算球的体积
- 三角形判别_基本计算练习
- 判断奇偶性
- 判断整除
- 利率计算
- 最大公约和最小公倍数的计算
- 表达式计算--基本练习
- 计算整数各位数字之和
- 完数
- 完全平方数
- 计算日期
- 求奇数的和
- 阶乘之和--双层循环练习
- 数字个数统计--循环条件设置练习
- 阶乘计算--阶乘的公式运算练习
- 矩阵相乘--双层循环练习
- 百元买鸡
- 口袋抽取球
简单程序_printf函数输出字符串
标题
简单程序
描述
输出特定的文字
输入说明
无
输出说明
用C程序输出以下两行文字
C programming language is useful!
I like it very much.
输入样例
无
输出样例
C programming language is useful!
I like it very much.
提示
使用printf输出即可
#include "stdio.h"
int main()
{printf("C programming language is useful!\nI like it very much.");return 0;}
四则运算_加减乘除余
标题
四则运算
描述
输入两个整数,计算并输出其和、差、积、商、余的信息,输出计算结果
输入说明
输入使用scanf()函数,格式输入,数之间以一个空格分割。
输出说明
输出使用printf()函数,格式结果依次为:和、差、积、商、余。
输入样例
5 2
输出样例
7 3 10 2 1
提示
格式输入,数字之间空一格,如:5 2
格式输出,结果依次为和、差、积、商、余,如:7 3 10 2 1
#include "stdio.h"
int main()
{int a,b;//定义变量scanf("%d%d",&a,&b);//输入变量 printf("%d %d %d %d %d",a+b,a-b,a*b,a/b,a%b);return 0;
}
计算球体重量
题目:计算球体重量
问题描述:
已知铁的比重是7.86(克/立方厘米),金的比重是19.3(克/立方厘米)。写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926
输入说明:
输入两个整数,分别表示铁球与金球的直径(单位为毫米)
输出说明:
输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔
输入样例:
100 100
输出样例:
4115.486 10105.456
提示
用scanf输入,用printf输出,保留3位小数的格式控制字符为%.3f
#include
#include
int main()
{double quality_fe,quality_gold,PI=3.1415926;//定义变量int diameter_fe,diameter_gold;scanf("%d%d",&diameter_fe,&diameter_gold);//输入变量 quality_fe=4.0/3*PI*pow(diameter_fe/20,3)*7.86; //计算质量 quality_gold=4.0/3*PI*pow(diameter_gold/20,3)*19.3;printf("%.3f %.3f",quality_fe,quality_gold);//输出结果 return 0;}
温度转换
题目:温度转换
问题描述:
已知华氏温度到摄氏温度的转换公式为:摄氏温度= (华氏温度- 32)×5/9,写程序将给定的华氏温度转换为摄氏温度输出
输入说明:
只有一个整数,表示输入的华氏温度
输出说明:
输出一个表示摄氏温度的实数,小数点后保留2位有效数字,多余部分四舍五入
输入样例:
50
输出样例:
10.00
提示:
用scanf输入,用printf输出,保留2位小数的格式控制字符为%.2f
#include
int main()
{int Fahrenheit;//定义变量 double Celsius;scanf("%d",&Fahrenheit);//输入变量 Celsius=(Fahrenheit-32)*5.0/9;//变量运算 printf("%.2f",Celsius);//打印 return 0;}
数字字符
数字字符
问题描述:
通过键盘输入1个整数a(0<=a<=4),1个数字字符b(’0’<=b<=’5’),求a+b。
输入说明:
整形数据、数字字符通过键盘输入,输入的整形数据介于0和4之间,输入的数字字符介于‘0’和‘5’之间,二个输入数之间用“,”分隔。
输出说明:
分别以整数形式及字符形式输出a+b,输出的二个数之间用“,”分隔。
输入样例:
3 ,5
输出样例:
56,8
#include
int main()
{int a;//设置变量 char b;scanf("%d,%c",&a,&b);//输入变量 if((a<=4&&a>=0)&&(b<='5'&&b>='0'))//变量运算 {printf("%d,%c",a+b,a+b); }return 0;}
实数运算
- 实数运算
问题描述:
通过键盘输入长方体的长、宽、高,求长方体的体积V(单精度)。
输入说明:
十进制形式输入长、宽、高,输入数据间用空格分隔。
输出说明:
单精度形式输出长方体体积V,保留小数点后3位,左对齐。
输入样例:
15 8.12 6.66
输出样例:
811.188
#include
int main()
{float wide,Long,high,V;//定义变量 scanf("%f%f%f",&Long,&wide,&high);//输入变量 V=Long*wide*high;//计算体积 printf("%.3f\n",V);//打印 return 0;}
计算球的体积
题目描述:输入球的半径,计算并输出球的体积,假定pi=3.14,结果保留两位小数。
输入格式:共一行,输入球体半径,两位小数。
输出格式:共一行,输出球体体积,结果保留两位小数。
示例:
输入:5.50
输出:696.56
#include
#include
int main()
{double radius,pi=3.14,V;//定义变量 scanf("%lf",&radius);//输入变量V=4.0/3*pi*pow(radius,3);//计算式printf("%.2f",V);return 0;
}
三角形判别_基本计算练习
标题
三角形判别
描述
已知三角形任意两边之和大于第三边,给出三个正整数a,b,c,,请判断能否构成一个三角形,并输出相应结果。
类别
1
输入说明
输入数据为同一行上的3个整数a,b,c(0 < a,b,c < 1000),整数之间用空格分隔。
输出说明
如果输入的三个整数能够构成一个三角形,输出该三角形周长,否则输出No
输入样例
3 3 2
1 1 5
输出样例
8
No
提示
能够构成一个三角形,输出该三角形周长,否则输出No
#include
int main()
{int a,b,c;//定义变量scanf("%d%d%d",&a,&b,&c);//输入数据if(((a<=1000)&&(a>=0))&&((b<=1000)&&(b>=0))&&((c<=1000)&&(c>=0))){ if((a+b>c)&&(a+c>b)&&(b+c>a))//条件判断printf("%d",a+b+c);elseprintf("No");}return 0;
}
判断奇偶性
题目描述:编写程序:输入一个正整数,判断该数的奇偶性,输出判断的结果(偶数/奇数)。
输入格式:输入一个正整数。
输出格式:输出“偶数”或“奇数”。
示例:
输入:5
输出:奇数
#include
int main()
{int a;//定义变量scanf("%d",&a);//输入数据if(a>0){if(a%2==1)printf("奇数");elseprintf("偶数"); }return 0;
}
判断整除
题目描述:编写程序,输入一个正整数,判断是否能被5和7同时整除,若可以,则输出yes;否则输出no。
输入格式:输入一个正整数。
输出格式:输出“yes”或“no”。
示例:
输入:35
输出:yes
#include
int main()
{int a;//定义变量scanf("%d",&a);//输入数据if(a>0){if((a%5==0)&&(a%7==0))printf("yes");elseprintf("no");}return 0;
}
利率计算
题目:利率计算
问题描述:
假如我国国民生产总值的年增长率为9%,计算10年后我国国民总值与现在相比增长多少百分比。计算公式为
p=(1+r)^n
r为增长率,n为年数,p为与现在相比的倍数。
输入说明:
输入两个浮点数,分别表示年增长率和年数,两个浮点数之间用空格分隔。
输出说明:
输出一个浮点数,表示与现在相比的倍数,小数点后保留2位小数。
输入样例:
0.09 10
输出样例:
2.37
#include
#include
int main()
{double r,n,p;scanf("%lf%lf",&r,&n);p=pow((1+r),n);printf("%.2f",p);return 0;
}
最大公约和最小公倍数的计算
题目:最大公约数和最小公倍数的计算
问题描述:
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入说明:
输入两个正整数m和n。
输出说明:
输出m和n的最大公约数和最小公倍数。
输入样例:
8 12
输出样例:
4 24
#include
int main()
{int a,b,c,d;scanf("%d%d",&a,&b);d=a*b;while(b)//此处采用辗转相除法,中国人民的伟大智慧,直接简化运算,比暴力的枚举方法好的不行{c=a%b;a=b;b=c;}printf("%d %d",a,d/a);return 0;
}
表达式计算–基本练习
标题
表达式计算
描述
主函数中输入一个由两个正整数和一个符号构成的表达式,计算包括+、-、*、/和%。编写函数cal()完成表达式识别,输出表达式及其计算结果,主函数完成表达式输入和调用。
类别
1
输入说明
输入一个由两个正整数和一个符号构成的表达式,符号限于+、-和* ,整数小于100。
输入形式:3 5 +、4 8 %等
输出说明
格式输出:输出表达式及其计算结果。
输入样例
2 3 +
输出样例
2+3=5
提示
注意打印信息不含空格。输入格式控制%d%d %c。
建议使用switch分支结构。
#include
double cal(int x,int y,char z);
int main()
{int a,b,d;char c;scanf("%d%d %c",&a,&b,&c);if((a>0&&a<100)&&(b>0&&b<100)&&(c=='+'||c=='-'||c=='*'||c=='/'||c=='%'))//按照XD的破系统评判标准,这个判断条件可以不要{d=cal(a,b,c);printf("%d%c%d=%d",a,c,b,d);}return 0;
}
double cal(int x,int y,char z)
{int e;switch(z){case'+':e=1.0*x+y;break;case'-':e=1.0*x-y;break;case'*':e=1.0*x*y;break;case'/':e=1.0*x/y;break;case'%':e=x%y;break;default:;}return (e);
}
计算整数各位数字之和
标题:
计算整数各位数字之和
问题描述:
假设n是一个由最多9位数字(d9, …, d1)组成的正整数。编写一个程序计算n的每一位数字之和
输入说明:
输入数据为一个正整数n
输出说明:
对整数n输出它的各位数字之和后换行
输入样例:
3704
输出样例:
14
#include
int main()
{int n,sum;scanf("%d",&n);sum=0;for(;n;n/=10)//第一个初始语句没用,第二个判断语句就是判断n的值是否为0,第三个相信不用解释了sum+=n%10;printf("%d\n",sum);return 0;}
完数
标题:
完数
问题描述:
请写一个程序,给出指定整数范围[a,b]内的所有完数,0 < a < b < 10000。
一个数如果恰好等于除它本身外的所有因子之和,这个数就称为"完数"。
例如6是完数,因为6=1+2+3
输入说明
输入为两个整数a和b,a和b之间用空格分隔
输出说明
输出[a,b]内的所有完数,每个数字占一行
输入样例
1 10
输出样例
6
#include
int main()
{int a,b,sum;scanf("%d%d",&a,&b);for(int i=a;i<=b;i++){sum=0;for(int x=1;x<i;x++){if(i%x==0)sum+=x;}if(i==sum)printf("%d\n",sum);}return 0;}
完全平方数
标题
完全平方数
问题描述
若一个整数n能表示成某个整数m的平方的形式,则称这个数为完全平方数。写一个程序判断输入的整数是不是完全平方数。
输入说明
输入数据为一个整数n,0<=n<10000000。
输出说明
如果n是完全平方数,则输出构成这个完全平方数的整数m,否则输出no。
输入样例
样例1:
144
样例2:
15
输出样例
样例1输出:
12
样例2输出:
no
#include
#include
int main()
{int n;double x;scanf("%d",&n);x=pow(n,0.5);if((int)x==x)printf("%d",(int)x);elseprintf("no");return 0;}
计算日期
Problem 8计算日期
描述:
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天,且满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍
输入说明:
输入包含两个整数y和d,y表示年份,年份在1900到2018之间(包含1900和2018)。 d表示这一年的第几天,d在1至365之间。
输出说明:
在一行输出两个整数,分别表示答案的月份和日期。
输入样例
样例1输入
2015 80
输出样例
样例1输出
3 21
#include
int main()
{int a[2][12]={{31,29,31,30,31,30,31,31,30,31,30,31},{31,28,31,30,31,30,31,31,30,31,30,31}};int y=0,d=0,j=0,i=0;scanf("%d%d",&y,&d);if((y%4==0&&y%100!=0)||y%400==0)i=0;elsei=1;for(j=0;d>0;j++)d=d-a[i][j];printf("%d %d",j,d+a[i][j-1]);//计算出日期return 0;
}
求奇数的和
题目描述:计算给定一组整数中奇数的和,直到遇到0时结束。
输入格式:共一行,输入一组整数,以空格分隔
输出格式:输出一个整数
示例:
输入:1 2 3 4 5 0 6 7
输出:9
#include
int main()
{int i=1,n=0;while(i){scanf("%d",&i);if(i%2) n+=i;}printf("%d",n);return 0;
}
阶乘之和–双层循环练习
标题
阶乘之和
描述
输入自然数N(N<10),采用双层for循环结构,计算N!和ΣN!,并输出结果。
输入说明
输入自然数N(<10),如7
输出说明
输出N、N!、ΣN!
输入样例
7
输出样例
7 5040 5913
提示
采用双层for循环结构,不大于10的自然数的阶乘之和
#include
int main()
{int N,sum,SUM=0;scanf("%d",&N);for(int i=1;i<N+1;i++){ sum=1;for(int j=1;j<=i;j++)sum*=j;SUM+=sum;}printf("%d %d %d",N,sum,SUM);return 0;
}
数字个数统计–循环条件设置练习
标题
数字个数统计
描述
统计能被7或11整除,但不能被7和11同时整除数的个数,求解500以内大于等于100的正整数个数,输出结果。所有变量为整形
输入说明
无
输出说明
输出个数统计结果
输入样例
无
输出样例
50
提示
采用for循环结构
#include
int main()
{int n=0;for(int i=100;i<=500;i++){if((i%7==0||i%11==0)&&(i%77!=0))n++;}printf("%d",n);return 0;}
阶乘计算–阶乘的公式运算练习
标题
阶乘运算
描述
编写P(m,n)=m!/n!/(m-n)!,(m>n)。求出P(8,6)和P(5,2)的值。
时间限制
1
内存限制
10000
类别
1
输入说明
输入两个整数(m>n),如8 6
输出说明
输出保留2位小数
输入样例
8 6
输出样例
28.00
提示
采用for循环结构,数据类型为单精度浮点型,输出保留两位小数,格式%.2f。
编写阶乘计算函数Mul(),主函数调用
#include
float Mul(int x);
int main()
{int m,n;float p;scanf("%d%d",&m,&n);if(m>n){ p=1.0*Mul(m)/Mul(n)/Mul(m-n);printf("%.2f",p);}return 0;} float Mul(int x){int z=1;for(int i=1;i<=x;i++)z*=i;return (z);}
矩阵相乘–双层循环练习
标题
矩阵相乘
描述
输入2×3矩阵A和3×2矩阵B各元素值,计算2×2矩阵C并输出其结果,矩阵相乘公式如下:

输入说明
输入整形数据,如矩阵元素A={{1,2,3},{4,5,6}},B={{1,2},{3,4},{5,6}}。
输出说明
格式输出:输出矩阵A、B和A*B的结果,矩阵形式,分行分列输出,矩阵之间空一行。
输入样例
1 2 3 4 5 6
1 2 3 4 5 6
输出样例
1 2 3
4 5 6
1 2
3 4
5 6
22 28
49 64
提示
采用三重循环结构实现计算过程,数据输出格式%5d。
//这道题目不难,主要是看懂公式很重要
#include
int main()
{int a[2][3],b[3][2],c[2][2],sum;//定义变量for(int i=0;i<2;i++)//输入变量{for(int j=0;j<3;j++)scanf("%d",&a[i][j]);}for(int i=0;i<3;i++){for(int j=0;j<2;j++)scanf("%d",&b[i][j]);}
printf("\n");for(int i=0;i<2;i++)//计算{for(int j=0;j<2;j++){sum=0;for(int m=0;m<3;m++){sum+=a[i][m]*b[m][j];}c[i][j]=sum;}}for(int i=0;i<2;i++){for(int j=0;j<3;j++)printf("%d ",a[i][j]);printf("\n");}printf("\n");for(int i=0;i<3;i++){for(int j=0;j<2;j++)printf("%d ",b[i][j]);printf("\n");}
printf("\n");for(int i=0;i<2;i++){for(int j=0;j<2;j++)printf("%d ",c[i][j]);printf("\n");}return 0;
}
百元买鸡
一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱、小鸡一钱3只,
问:一百只鸡中公鸡、母鸡、小鸡各多少。
输出格式:每一行分别输出公鸡、母鸡、小鸡个数,以空格分隔;
每行表示一种计算结果,列出所有可能结果;
计算结果按照公鸡的数目从小到大排序。
#include
int main()
{int m,w,s;for(m=1;5*m<100;m++){for(w=1;(5*m+3*w)<100;w++){for(s=1;(5*m+3*w+s*1.0/3)<=100;s++){if((m+w+s)==100&&(5*m+3*w+s*1.0/3)==100)printf("%d %d %d\n",m,w,s);}}}return 0;}
口袋抽取球
题目描述:
口袋里有12个球,3个红色,4个白色,5个黑色,从中任意取出8个球,列出所有可能的取法
输出格式:每一行分别输出红色球、白色球、黑色球个数,以空格分隔;
每行表示一种选择情况,列出所有可能结果。
输出结果按照红球个数从小到大排序,当红球个数相同时按照白球个数从小到大排序
示例:0 3 5
0 4 4
1 2 5
…
#include
int main()
{int r,w,b;for(r=0;r<4;r++){for(w=0;(w+r)<9;w++){b=8-r-w;if(b>=0&&b<=5&&w<=4)printf("%d %d %d\n",r,w,b);}}return 0;
}
总算把这一些写完了,我会在这两天里爆肝,把我在XD上做过的题目全部写出来,肯定是不会齐全的,要是有比较有意思的题目,可以私信发给我,我会把它收录在题集里
码字不易,要是对你想用金钱来砸我,可以尽情打赏我喝n杯奶茶,毕竟我也穷啊,哈哈哈
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
