2022秋季C语言专题实验02-循环程序
7-1 统计 十位 比 个位 大的数
给定两个正整数,m和n,m< n,请计算在 m和n之间(包括m和n)所有符合以下条件的数的和
条件:十位数比个位数大
- 输入格式:
输入两个正整数m和n,数据保证m<n,10<= m < n <=1000。 - 输出格式:
输出m和n之间满足条件的所有数的和,输出数值后需要输出回车换行。 - 输入样例:
在这里给出一组输入。例如:
150 160 - 输出样例:
在这里给出相应的输出。例如150+151+152+153+154+160:
920
#include<stdio.h>
int main()
{
int i,m,n,sum=0;
scanf("%d %d",&m,&n);
if(m>=10&&m<n&&n<=1000)
{
for(i=m;i<=n;i++)
{
if(i/10%10>i%10)
sum=sum+i;
}
printf("%d\n",sum);
}
else
printf("输入有误请重新输入!");
return 0;
}
7-2 for循环练习:打印特定范围的平方根表,按指定格式输出。
读入1个10以内的正整数X(程序内变量名不一定是X,自定),输出1到X间所有数的平方根表。
-
输入格式:
10以内的正整数X。 -
输出格式:
在一行中输出1到X的平方根,取2位小数。注意输出的最后一个值后面无逗号或空格。 -
输入样例:
5 -
输出样例:
在这里给出相应的输出。例如:
sqrt(1)=1.00,sqrt(2)=1.41,sqrt(3)=1.73,sqrt(4)=2.00,sqrt(5)=2.24
#include<stdio.h>
int main()
{
int i,m;
scanf("%d",&m);
if(m<=10&&m>0)
{
for(i=1;i<m;i++)
{
printf("sqrt(%d)=%.2f,",i,sqrt(i));
}
printf("sqrt(%d)=%.2f\n",m,sqrt(m));
}
else
printf("输入有误请重新输入!");
return 0;
}
7-3 求数列2/1,3/2,5/3……之和
功能:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13… 的前n项之和。
说明:每一分数的分母是前两项的分母之和,每一分数的 分子是前两项的分子之和
例如:求前20项之和的值为32.660。
-
输入格式:
输入一个整数n,表示求前n项之和,1<=n<=100。 -
输出格式:
输出前n项数列的和,小数位数保留3位。 -
输入样例:
20 -
输出样例:
32.660
#include<stdio.h>
int main()
{
int i,n;
double s=0,a=1,b=2,t;
scanf("%d",&n);
if(n>=1&&n<=100)
{
for(i=0;i<n;i++)
{
s+=b/a;
t=a;
a=b;
b=t+b;
}
printf("%.3f\n",s);
}
else
printf("输入有误,请重新输入!");
return 0;
}
7-4 乐乐的得分(2010南海小学甲组)
“六一”儿童节到了,乐乐参加了学校组织的诗歌朗颂比赛,这个比赛有n个评委,各参赛者朗颂完后,每个评委会马上打出一个分数,而参赛者的得分是指这n个分数里去掉一个最高分和一个最低分后的(n-2)个数的平均分。现在乐乐想知道自己的得分是多少。
-
输入格式:
第一行是一个整数n(3≤n≤20000)。
第二行是n个100以内的正整数,每个整数之间用一个空格隔开。 -
输出格式:
输出文件只有一个数,表示乐乐的分数,得数保留小数点后一位数字。 -
输入样例:
10
95 90 88 92 94 98 98 93 93 91 -
输出样例:
93.2
#include<stdio.h>
int main()
{
int i,n,a[20000]={0};
int sum=0,max,min;
float ave=0;
scanf("%d",&n);
if(n>=3&&n<=20000)
{
for(i=0;i<n;i++)
{
scanf("%d ",&a[i]);
}
max=min=a[0];
for(i=0;i<n;i++)
{
sum=sum+a[i];
if(max<a[i])
max=a[i];
if(min>a[i])
min=a[i];
}
ave=(float)(sum-max-min)/(n-2);
printf("%.1f",ave);
}
else
printf("输入有误请重新输入!");
return 0;
}
7-5 打印菱形图案
本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。
-
输入格式:
输入在一行中给出一个正的奇数n。 -
输出格式:
输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。 -
输入样例:
7 -
-输出样例:
#include<stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
if(n%2!=0)
{
for(i=1;i<=n;i++)//i为行,j为列
{
if(i<=(n+1)/2)//递增
{
for(j=1;j<=2*((n+1)/2-i);j++)//每行的前面有多少个空格
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)//每行有多少个*号
{
printf("* ");
}
}
if(i>(n+1)/2)//递减
{
for(j=1;j<=2*(i-(n+1)/2);j++)
{
printf(" ");
}
for(j=1;j<=n-2*(i-(n+1)/2);j++)
{
printf("* ");
}
}
printf("\n");
}
}
else
printf("请输入正的奇数");
return 0;
}
7-6 每支钢笔5元, 每支签字笔3元,每3支铅笔1元。如果要用 M 元钱买 N 支笔,要求每种笔至少买一个,编程求各种笔各能买多少支?
每支钢笔5元, 每支签字笔3元,每3支铅笔1元。如果要用 M 元钱买 N 支笔,要求每种笔至少买一个,编程求各种笔各能买多少支?
-
输入格式:
先后输入M(钱数)及N(笔的个数)的实际数值。 -
输出格式:
所有可能情况下可以购买的3种笔的个数,按钢笔、签字笔、铅笔的顺序输出,用逗号分隔。例如:4,18,78;表示钢笔4支、签字笔18支、铅笔78支。 -
输入样例:
在这里给出一组输入。例如:
100 100 -
输出样例:
4,18,78
8,11,81
12,4,84
#include<stdio.h>
int main()
{
int m,n,a,b,c;
scanf("%d %d",&m,&n);
for(a=1;a<n-4;a++)
for(b=1;b<n-4;b++)
for(c=3;c<n-2;c++)
{
if(c%3==0)
if(n==a+b+c&&m==5*a+3*b+c/3)
printf("%d,%d,%d\n",a,b,c);
}
return 0;
}
7-7 吃鱼还是吃肉
国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。
现在你要根据小宝宝的身高体重,给出补充营养的建议。
-
输入格式:
输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出一位宝宝的身体数据:性别 身高 体重
其中性别是 1 表示男生,0 表示女生。身高和体重都是不超过 200 的正整数。 -
输出格式:
对于每一位宝宝,在一行中给出你的建议:
如果太矮了,输出:duo chi yu!(多吃鱼);
如果太瘦了,输出:duo chi rou!(多吃肉);
如果正标准,输出:wan mei!(完美);
如果太高了,输出:ni li hai!(你厉害);
如果太胖了,输出:shao chi rou!(少吃肉)。
先评价身高,再评价体重。两句话之间要有 1 个空格。 -
输入样例:
4
0 130 23
1 129 27
1 130 30
0 128 27 -
输出样例:
ni li hai! duo chi rou!
duo chi yu! wan mei!
wan mei! shao chi rou!
duo chi yu! shao chi rou!
#include<stdio.h>
int main()
{
int i,h,w,N,s;
scanf("%d",&N);
if(N>0&&N<=10)
{
for(i=0;i<N;i++)
{
scanf("%d %d %d\n",&s,&h,&w);
if(h>0&&h<=200&&w>0&&w<=200)
{
if(s==1)
{
if(h<130)
printf("duo chi yu! ");
else if(h==130)
printf("wan mei! ");
else
printf("ni li hai! ");
if(w<27)
printf("duo chi rou!\n");
else if(w==27)
printf("wan mei!\n");
else
printf("shao chi rou!\n");
}
else if(s==0)
{
if(h<129)
printf("duo chi yu! ");
else if(h==129)
printf("wan mei! ");
else
printf("ni li hai! ");
if(w<25)
printf("duo chi rou!\n");
else if(w==25)
printf("wan mei!\n");
else
printf("shao chi rou!\n");
}
}
else
printf("身高、体重输入有误\n");
}
}
else
printf("请输入不超过10的正整数");
return 0;
}
7-8 输出整数各位数字
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。
-
输入格式:
输入在一行中给出一个长整型范围内的非负整数。 -
输出格式:
从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。 -
输入样例:
123456 -
输出样例:
1 2 3 4 5 6
#include<stdio.h>
#include<math.h>
int main()
{
int i=0,n,m,t;
scanf("%d",&n);
m=n;
if(n==0)
printf("0 ");
else
do
{
m=m/10;
i++;//计算n的位数
}while(m>0);//n的值>1位数时
while(i>0)
{
t=pow(10,i-1);
printf("%d ",n/t);
i--;
n=n%t;
}
return 0;
}