顺序结构(1)顺序结构基础实验
1.Welcome to You!
本题要求编写程序,输出一个短句“Welcome to You!”。
输出格式: “Welcome to You!”。
#include<stdio.h>
int main(void)
{
printf("Welcome to You!");
return 0;
}
2.打印菜单
本题要求编写程序,在屏幕上打印5行菜单。
按照下列格式打印菜单,每行显示一句。注意除了每行的换行不能有任何多余字符。
输出样例:
[1] Select crisps
[2] Select popcorn
[3] Select chocolate
[4] Select cola
[0] Exit
#include<stdio.h>
int main(void)
{
printf("[1] Select crisps\n");
printf("[2] Select popcorn\n");
printf("[3] Select chocolate\n");
printf("[4] Select cola\n");
printf("[0] Exit\n");
return 0;
}
3.计算华氏温度
本题要求编写程序,计算摄氏温度26°C 对应的华氏温度。计算公式:F=9×C/5+32,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
输出格式:celsius = 26, fahr = 对应的华氏温度整数值
#include<stdio.h>
int main(void)
{
int celsius,fahr;
celsius=26,fahr=9*celsius/5+32;
printf("celsius = %d, fahr = %d\n",celsius,fahr);
return 0;
}
4.将x的平方赋值给y
假设x的值为3,计算x的平方并赋值给y,分别以“y = x ∗ x”和“x ∗ x = y”的形式输出x和y的值。
输出格式:按照下列格式输出代入x=3的结果:
y = x * x
x * x = y
#include<stdio.h>
int main(void)
{
int x=3,y;
y = x * x;
printf("%d = %d * %d\n",y,x,x);
printf("%d * %d = %d",x,x,y);
return 0;
}
5.整数152的各位数字
本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。
输出格式:152 = 个位数字 + 十位数字*10 + 百位数字*100
#include<stdio.h>
int main(void)
{
int x=152;
printf("%d = %d + %d*10 + %d*100",x,x%10,(x/10)%10,x/100);
return 0;
}
顺序结构(1)-顺序结构拓展实验
1.输出倒三角图案
本题要求编写程序,输出指定的由“*”组成的倒三角图案。:
输出格式:
按照下列格式输出由“*”组成的倒三角图案。
* * * *
* * *
* *
*
#include<stdio.h>
int main(void)
{
printf("* * * *\n");
printf(" * * *\n");
printf(" * *\n");
printf(" *");
return 0;
}
2.计算物体自由下落的距离
一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10
输出格式: height = 垂直距离值(结果保留2位小数。)
#include<stdio.h>
int main(void)
{
double height,t;
t=3;
height = 10*t*t/2;
printf("height = %.2lf\n",height);
return 0;
}
3.计算平均分
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。
输出格式:math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
#include<stdio.h>
int main(void)
{
int math,eng,comp,average;
math = 87, eng = 72, comp = 93;
average = math/3 + eng/3 + comp/3;
printf("math = 87, eng = 72, comp = 93, average = %d",average);
return 0;
}
4.计算存款利息
本题目要求计算存款利息,计算公式为interest=money×(1+rate)( year次方)−money
输入格式:输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
输出格式:在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。
输入样例:1000 3 0.025
输出样例:interest = 76.89
#include<stdio.h>
int main(void)
{
double interest,year,money,rate;
scanf("%lf %lf %lf",&money,&year,&rate);
interest=money*pow(1+rate,year)-money;
printf("interest = %.2lf\n",interest);
return 0;
}
5.整数算术运算
本题要求编写程序,计算并输出2个正整数的和、差、积、商与余数。题目保证输入和输出全部在整型范围内。
输入样例: 5 3
输出样例: 在这里给出相应的输出。例如:
5 + 3 = 8
5 - 3 = 2
5 * 3 = 15
5 / 3 = 1
5 % 3 = 2
#include<stdio.h>
int main(void)
{
int A,B,C,D,E,F,G;
scanf("%d %d",&A,&B);
C=A + B;
D=A - B;
E=A * B;
F=A / B;
G=A % B;
printf("%d + %d = %d\n",A,B,C);
printf("%d - %d = %d\n",A,B,D);
printf("%d * %d = %d\n",A,B,E);
printf("%d / %d = %d\n",A,B,F);
printf("%d %% %d = %d",A,B,G);//注意表示%需要使用%%
return 0;
}
选择结构(1)-if-else基础实验
1.计算分段函数[1]
本题目要求计算下列分段函数f(x)的值:
输入格式:输入在一行中给出实数x。
输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。
输入样例1: 10
输出样例1: f(10.0) = 0.1
输入样例2: 0
输出样例2: f(0.0) = 0.0
#include <stdio.h>
int main()
{
float x,y;
scanf("%f",&x);
if(x!=0)
{
y=1/x;
}
else
{
y=0;
}
printf("f(%.1f) = %.1f\n",x,y);
return 0;
}
2.计算分段函数[2]
本题目要求计算下列分段函数f(x)的值:
注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
输入格式:输入在一行中给出实数x。
输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
输入样例1: 10
输出样例1: f(10.00) = 3.16
输入样例2: -0.5
输出样例2: f(-0.50) = -2.75
#include<stdio.h>
#include<math.h>
int main(void)
{
double x,y;
scanf("%lf",&x);
if(x>=0)
{
y=sqrt(x);
}
else
{
y=pow(x+1,2)+2*x+1/x;
}
printf("f(%.2f) = %.2f\n",x,y);
return 0;
}
3.阶梯电价
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式: 输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式: 在一行中输出该用户应支付的电费(元),结果保留两位小数,
格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
输入样例1: 10 输出样例1: cost = 5.30
输入样例2: 100 输出样例2: cost = 55.50
#include<stdio.h>
int main(void)
{
double x,cost;
scanf("%lf",&x);
if(x>0)
{
if(x<=50 && x>=0)
{
cost=0.53*x;
}
else
{
cost=0.53*50+0.58*x-0.58*50;
}
printf("cost = %.2f",cost);
}
else
{
printf("Invalid Value!");
}
return 0;
}
4.计算火车运行时间
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:1201 1530 输出样例:03:29
#include<stdio.h>
int main(void)
{
int a,b,x,y,min;
scanf("%d %d",&a,&b);
min=b/100*60+b%100-a/100*60-a%100;
x=min/60;
y=min%60;
printf("%.2d:%.2d\n",x,y);
return 0;
}
5.判断一个三位数是否为水仙花数
本题要求编写程序,判断一个给定的三位数是否为水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。
输入格式: 输入在一行中给出一个需要判断的整数 N(100≤N≤999)。
输出格式: 如果N是水仙花数,则在一行中输出Yes,否则输出No。如果N不是三位数,则输出Invalid Value.。
输入样例1: 153 输出样例1: Yes
输入样例2: 500 输出样例2: No
输入样例3: -2 输出样例3: Invalid Value.
#include<stdio.h>
#include<math.h>
int main(void)
{
int n;
scanf("%d",&n);
if(n>=100 && n<=999)
{
if(n==pow(n/100,3)+pow(n%100/10,3)+pow(n%10,3))
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
else
{
printf("Invalid Value.");
}
return 0;
}
选择结构(1)-if-else拓展实验
1.奇偶数判断
从键盘上输入一个整数,判断其是奇数还是偶数,如果是奇数则输出"Odd",如果是偶数则输出"Even",最后换行。
输入格式:键盘上输入一个整数。
输出格式:如果输入的整数是奇数则输出"Odd",如果是偶数则输出"Even",最后换行。
输入样例1: 4
输出样例1: Even
输入样例2: 155
输出样例2: Odd
#include<stdio.h>
int main(void)
{
int x;
scanf("%d",&x);
if(x%2==0)
{
printf("Even\n");
}
else
{
printf("Odd\n");
}
return 0;
}
2.输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=sqrt(s(s−a)(s−b)(s−c)),其中s=(a+b+c)/2。
输入格式:输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,
按照area = 面积; perimeter = 周长的格式输出,保留两位小数。
否则,输出These sides do not correspond to a valid triangle
输入样例1:5 5 3
输出样例1:area = 7.15; perimeter = 13.00
输入样例2:1 4 1
输出样例2:These sides do not correspond to a valid triangle
#include<stdio.h>
#include<math.h>
int main(void)
{
double a,b,c,s,area,perimeter;
scanf("%lf %lf %lf",&a,&b,&c);
s=(a+b+c)/2;
if(a+b>c && a+c>b && b+c>a)
{
area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf("area = %.2lf; perimeter = %.2lf",area,perimeter);
}
else
{
printf("These sides do not correspond to a valid triangle");
}
return 0;
}
3.比较大小
本题要求将输入的任意3个整数从小到大输出。
输入格式: 输入在一行中给出3个整数,其间以空格分隔。
输出格式: 在一行中将3个整数从小到大输出,其间以“->”相连。
输入样例: 4 2 8 输出样例: 2->4->8
#include<stdio.h>
int main(void)
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a<b && b<c)
printf("%d->%d->%d",a,b,c);
else if(a<c && c<b)
printf("%d->%d->%d",a,c,b);
else if(b<a && a<c)
printf("%d->%d->%d",b,a,c);
else if(b<c && c<a)
printf("%d->%d->%d",b,c,a);
else if(c<a && a<b)
printf("%d->%d->%d",c,a,b);
else if(c<b && b<a)
printf("%d->%d->%d",c,b,a);
else
printf("%d->%d->%d",a,b,c);
return 0;
}
4.求三个数中的最大值
从键盘上输入3个整数,求其中的最大值并输出。
输入格式: 输入三个整数,中间用空格分隔。 输出格式: 输出一个整数,最后换行。
输入样例1: 1 2 3 输出样例1: 3
#include<stdio.h>
int main(void)
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a<b && b<c)
printf("%d",c);
else if(a<c && c<b)
printf("%d",b);
else if(b<a && a<c)
printf("%d",c);
else if(b<c && c<a)
printf("%d",a);
else if(c<a && a<b)
printf("%d",b);
else if(c<b && b<a)
printf("%d",a);
else
printf("%d",a);
return 0;
}
5.字母转换
从键盘上输入一个小写字母,将其转换为循环字母表中的下一个字母并输出;若输入字母'a'到'y',则输出字母表中的下一个字母;若输入'z',则输出'a';最后换行。
输入格式: 从键盘上输入一个小写字母。
输出格式: 输出转换后的字母,最后换行。
输入样例1: a
输出样例1: b
输入样例2: z
输出样例2: a
#include<stdio.h>
int main(void)
{
char ch,chr;
scanf("%c",&ch);
if(ch>=97 && ch<122)
{
chr=ch+1;
printf("%c\n",chr);
}
else if(ch=122)
{
printf("a");
}
return 0;
}
选择结构(2)-多分支基础实验
1. 计算符号函数的值
对于任一整数n,符号函数sign(n)的定义如下:
请编写程序计算该函数对任一输入整数的值。
输入格式: 输入在一行中给出整数n。
输出格式: 在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1: 10
输出样例1: sign(10) = 1
输入样例2: 0
输出样例2: sign(0) = 0
输入样例3: -98
输出样例3: sign(-98) = -1
#include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
if(n<0)
{
printf("sign(%d) = -1",n);
}
else if(n>0)
{
printf("sign(%d) = 1",n);
}
else
{
printf("sign(%d) = 0",n);
}
return 0;
}
2.计算油费
现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
输入格式: 输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。
输出格式: 在一行中输出应付款额,保留小数点后2位。
输入样例: 40 97 m
输出样例: 301.34
#include<stdio.h>
int main(void)
{
double a,b,p,q;
char c,m,e;
scanf("%lf %lf %c",&a,&b,&c);
if(b==90) p=6.95*a;
if(b==93) p=7.44*a;
if(b==97) p=7.93*a;
switch(c)
{
case 'm':q=0.95*p;
break;
case 'e':q=0.97*p;
break;
}
printf("%.2lf",q);
return 0;
}
3.字符变换
从键盘上输入一个字符,若是大写字母则转换为对应的小写字母,若是小写字母则转换为对应的大写字母,若是其他字符则保持不变,最后输出转换后的字符。
输入格式: 输入一个字符。
输出格式: 输出转换后的字符,最后换行。
输入样例1: A 输出样例1: a
输入样例2: e 输出样例2: E
输入样例3: 7 输出样例3: 7
#include<stdio.h>
int main(void)
{
char ch;
ch=getchar();
if(ch<=90 && ch>=65)
putchar(ch+32);
else if(ch>=97 && ch<=122)
putchar(ch-32);
else putchar(ch);
printf("\n");
return 0;
}
4. 查询水果价格
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
首先在屏幕上显示以下菜单:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。
输入格式:输入在一行中给出用户连续输入的若干个编号。
输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。
输入样例1:3 -1 0 2
输出样例1:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
输入样例2:1 2 3 3 4 4 5 6 7 8
输出样例2:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20
#include<stdio.h>
int main(void)
{
int choice,i;
double price;
printf("[1] apple\n");
printf("[2] pear\n");
printf("[3] orange\n");
printf("[4] grape\n");
printf("[0] exit\n");
for(i=1;i<=5;i++)
{
scanf("%d",&choice);
if(choice==0)
break;
}
switch(choice)
{
case 1:price=3.0;break;
case 2:price=2.5;break;
case 3:price=4.1;break;
case 4:price=10.2;break;
default:price=0;break;
}
printf("price = %.2f\n",price);
}
return 0;
}
选择结构(2)-多分支拓展实验
1.计算邮费
输入货物重量x(一个整数),计算对应的邮费y并输出,计算公式如下:
如果x介于区间(0,5],则y=10,如果x介于区间(5,10],则y=15,
如果x介于区间(10,20],则y=20。
输入格式: 输入一个整数。
输出格式: 输出一个整数。
输入样例1: 3 输出样例1: 10
输入样例2: 6 输出样例1: 15
输入样例3: 18 输出样例3: 20
#include<stdio.h>
int main(void)
{
int x,y;
scanf("%d",&x);
if(x>0 && x<=5)
y=10;
else if(x>5 && x<=10)
y=15;
else if(x>10 && x<=20)
y=20;
printf("%d",y);
return 0;
}
2.出租车计价
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1: 2.6 2 输出样例1: 10
输入样例2: 5.1 4 输出样例2: 14
输入样例3: 12.5 9 输出样例3: 34
#include<stdio.h>
int main(void)
{
double s;
int t,x,m,n;
scanf("%lf %d",&s,&t);
if(t>=5) n=t/5*2;
{
if(s<=3) m=10;
if(s>3 && s<=10) m=10+2*s-6;
if(s>10) m=24+3*s-29;
}
x=m+n;
printf("%d",x);
return 0;
}
3.高速公路超速处罚
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。
输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。
输入样例1: 65 60 输出样例1: OK
输入样例2: 110 100 输出样例2:Exceed 10%. Ticket 200
输入样例3: 200 120
输出样例3: Exceed 67%. License Revoked
#include<stdio.h>
int main(void)
{
double m,v,x,n;
scanf("%lf %lf",&v,&x);
m=v/x-1;
n=100*m;
if(m<0.1)
{
printf("OK\n");
}
else if(m>=0.1 && m<0.5)
{
printf("Exceed %.lf%%. Ticket 200\n",n);
}
else if(m>=0.5)
{
printf("Exceed %.lf%%. License Revoked\n",n);
}
return 0;
}
4.成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式: 输入在一行中给出一个整数的百分制成绩。
输出格式: 在一行中输出对应的五分制成绩。
输入样例: 90
输出样例: A
#include<stdio.h>
int main(void)
{
int score;
char grade;
scanf("%d",&score);
switch(score/10)
{
case 10:case 9:
printf("A\n",grade);
break;
case 8:
printf("B\n",grade);
break;
case 7:
printf("C\n",grade);
break;
case 6:
printf("D\n",grade);
break;
case 5:case 4:case 3:case 2:case 1:case 0:
printf("E\n",grade);
break;
}
return 0;
}
5. 根据输入的数字,输出需要上课的节数
本题目要求读入一个整数1~7之间(不考虑输入错误的情况),然后输出需要上课的节数,对应如下:
1 星期一 8节课
2 星期二 10节课
3 星期三 6节课
4 星期四 8节课
5 星期五 6节课
6 今天没有课,可以好好休息一下啦!
7 今天没有课,可以好好休息一下啦!
输入格式:
例如:1
输出格式:
星期一 8节课(一和8之间有一个空格)
输入样例: 1
输出样例: 星期一 8节课
#include<stdio.h>
int main(void)
{
int x,y;
scanf("%d",&x);
switch(x)
{
case 1:
printf("星期一 8节课");
break;
case 2:
printf("星期二 10节课");
break;
case 3:
printf("星期三 6节课");
break;
case 4:
printf("星期四 8节课");
break;
case 5:
printf("星期五 6节课");
break;
case 6: case 7:
printf("今天没有课,可以好好休息一下啦!");
}
return 0;
}
循环结构(1)-for循环基础实验
1. 求N分之一序列前N项和
计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
输入格式: 输入在一行中给出一个正整数N。
输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例: 6 输出样例: sum = 2.450000
#include<stdio.h>
int main(void)
{
int i,n;
double sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+1.0/i;
}
printf("sum = %.6lf\n",sum);
return 0;
}
2. 求奇数分之一序列前N项和
计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
输入格式: 输入在一行中给出一个正整数N。
输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例: 23 输出样例: sum = 2.549541
#include<stdio.h>
int main(void)
{
int i,j,n;
double sum;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+1.0/(2*i-1);
}
printf("sum = %.6lf\n",sum);
return 0;
}
3.求简单交错序列前N项和
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
输入格式: 输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。
输入样例: 10 输出样例: sum = 0.819
#include<stdio.h>
int main(void)
{
int i,x,y,n;
double sum;
scanf("%d",&n);
y=1;
sum=0;
for(i=1,x=1;i<=n;i++,x+=3)
{
sum+=y*1.0/x;
y=-y;
}
printf("sum = %.3lf",sum);
return 0;
}
4. 输出华氏-摄氏温度转换表
输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。
输入格式: 在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。
输出格式: 第一行输出:"fahr celsius"
接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。
若输入的范围不合法,则输出"Invalid."。
输入样例1: 32 35
输出样例1:
fahr celsius
32 0.0
34 1.1
输入样例2: 40 30
输出样例2: Invalid.
#include<stdio.h>
int main(void)
{
int lower,upper,fahr;
double celsius;
scanf("%d %d",&lower,&upper);
if(lower<=upper && upper<=100)
{
printf("fahr celsius\n");
for(fahr=lower;fahr<=upper&&fahr>=lower;fahr+=2)
{
celsius=5.0*(fahr-32)/9;
printf("%d%6.1lf\n",fahr,celsius);
}
}
else if(lower>upper || upper>100)
{
printf("Invalid.");
}
return 0;
}
循环结构(1)-for循环拓展实验
1. 求交错序列前N项和
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
输入格式: 输入在一行中给出一个正整数N。
输出格式: 在一行中输出部分和的值,结果保留三位小数。
输入样例: 5 输出样例: 0.917
#include<stdio.h>
int main(void)
{
int n,i;
double x,y,z,sum;
scanf("%d",&n);
z=1;
sum=0;
x=1;
y=1;
for(i=1;i<=n;i++)
{
sum=z*x/y+sum;
z=-z;
y+=2;
x++;
}
printf("%.3lf",sum);
return 0;
}
2. 找出三位水仙花数
本题要求编写程序,输出给定正整数M和N区间内的所有三位水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。
输入格式:
输入在一行中给出两个正整数M和N(100≤M≤N≤999)。
输出格式:
顺序输出M和N区间内所有三位水仙花数,每一行输出一个数。若该区间内没有三位水仙花数,则无输出。
如果M或者N不符合题目的要求,则输出Invalid Value.。
输入样例1: 100 400
输出样例1:
153
370
371
输入样例2: 500 600
输出样例2:
输入样例3: 990 101
输出样例3:
Invalid Value.
#include<stdio.h>
#include<math.h>
int main(void)
{
int x,y,n;
scanf("%d %d",&x,&y);
if(y>x && x>=100 && y<=999)
{
for(n=x;n<=y;n++)
{
if(n==pow(n/100,3)+pow(n%100/10,3)+pow(n%10,3))
printf("%d\n",n);
}
}
else
printf("Invalid Value.\n");
return 0;
}
3.找出最小值
本题要求编写程序,找出给定一系列整数中的最小值。
输入格式:输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
输出格式:在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
输入样例: 4 -2 -123 100 0
输出样例: min = -123
#include<stdio.h>
int main(void)
{
int n,i,number,min;
scanf("%d ",&n);
for(i=1;i<=n;i++)
{
scanf("%d ",&number);
if(i==1)
{
min=number;
}
else
{
if(min>=number)
{
min=number;
}
}
}
printf("min = %d",min);
return 0;
}
4.奇偶分家
给定N个正整数,请统计奇数和偶数各有多少个?
输入格式:
输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。
输出格式:在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。
输入样例:
9
88 74 101 26 15 0 34 22 77
输出样例:
3 6
#include<stdio.h>
int main(void)
{
int n,i,x,y,a;
x=0;
y=0;
scanf("%d\n",&n);
if(n==0)
{
x=0;
y=0;
printf("%d %d",x,y);
}
else
{
for(i=1;i<=n;i++)
{
scanf("%d ",&a);
if(a%2==0) y++;
else x++;
}
printf("%d %d",x,y);
}
return 0;
}
5. 高空坠球
皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?
输入格式:
输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。
输出格式:
在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度范围。
输入样例: 33 5 输出样例: 94.9 1.0
#include<stdio.h>
int main(void)
{
int i,n;
double a,h;
scanf("%lf %d",&h,&n);
a=0;
if(n==0)
{
a=0;
h=0;
printf("%.1lf %.1lf",a,h);
}
else
{
for(i=1;i<=n;i++)
{
a=a+h;
h=0.5*h;
a=a+h;
}
a=a-h;//第一次落地时的高度,不用算升起,所以减去个h
printf("%.1lf %.1lf",a,h);
return 0;
}
}
循环结构(2)-while和do while基础实验
1. 求整数的位数及各位数字之和
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过10的9次方的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:321 输出样例:3 6
#include<stdio.h>
int main(void)
{
int a,b,c;
b=0;
scanf("%d",&a);
while(a>0)
{
b++;
c+=a%10;
a/=10;
}
printf("%d %d",b,c);
return 0;
}
2. 求奇数和
本题要求计算给定的一系列正整数中奇数的和。
输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式: 在一行中输出正整数序列中奇数的和。
输入样例:8 7 4 3 70 5 6 101 -1 输出样例: 116
#include<stdio.h>
int main(void)
{
int n,sum=0;
scanf("%d",&n);
while(n>0)
{
if(n%2!=0) sum+=n;
scanf("%d",&n);
}
printf("%d",sum);
return 0;
}
3. 求给定精度的简单交错序列部分和
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
输入格式: 输入在一行中给出一个正实数eps。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例1: 4E-2 输出样例1: sum = 0.854457
输入样例2: 0.02 输出样例2: sum = 0.826310
#include<stdio.h>
#include<math.h>
int main(void)
{
int x=1;//分母
double eps,a=0,sum=0,z=1.0;//a为单独一项,eps为输入数值,z表示正负,sum结果
scanf("%lf",&eps);
do{
a=z*(1.0/x);
z=-z;
x+=3;
sum+=a;
}while(fabs(a)>eps);
printf("sum = %lf",sum);
return 0;
}
4. 韩信点兵
在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:
按从1至5报数,记下最末一个士兵报的数为1;
再按从1至6报数,记下最末一个士兵报的数为5;
再按从1至7报数,记下最末一个士兵报的数为4;
最后按从1至11报数,最末一个士兵报的数为10;
请编写程序计算韩信至少有多少兵。
输入格式: 本题无输入
输出格式: 输出韩信至少拥有的士兵人数。
#include<stdio.h>
int main(void)
{
int a=1;
while(a>0)
{
a++;
if(a%5==1 && a%6==5 && a%7==4 && a%11==10)
{
break;
}
}
printf("%d",a);
return 0;
}
5.寻找250
输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。
输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。
输入样例: 888 666 123 -233 250 13 250 -222
输出样例: 5
#include<stdio.h>
#include<math.h>
int main(void)
{
int a,n=1;//a为输入的数,x为输出的个数
scanf("%d",&a);
while(fabs(a)<1000)
{
if(a!=250)
n++;
scanf("%d",&a);
if(a==250) break;
}
printf("%d",n);
}
6.打印九九乘法表
#include<stdio.h>
int main(void)
{
int i=1,j=1;
for(i=1;i<=9;i++)
{
printf("%4d",i);
}
printf("\n");
for(i=1;i<=60;i++)
{
printf("%c",'.');
}
printf("\n");
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%4d",i*j);
}
printf("\n");
}
}