浙大版《C语言程序设计实验与习题指导(第4版)》题目集
实验2-3-7 阶梯电价
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出”Invalid Value!”。
#include <stdio.h>
int main()
{
int e;
float ec = 0.53;
scanf("%d",&e);
if(e >= 0&&e <= 50){
ec = ec * e;
printf("cost = %.2f\n",ec);
}
else if(e > 50){
ec = 50 * ec +(e - 50)*(ec + 0.05);
printf("cost = %.2f\n",ec);
}
else{
printf("Invalid Value!\n");
}
return 0;
}
实验2-3-8 计算火车运行时间
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
#include <stdio.h>
int main()
{
int hour1;
int hour2;
int minute1;
int minute2;
int sum1;
int sum2;
scanf("%d %d",&sum1,&sum2);
hour1 = sum1 / 100;
hour2 = sum2 / 100;
minute1 = sum1 % 100;
minute2 = sum2 % 100;
hour1 = hour2 - hour1;
minute1 = minute2 - minute1;
if(minute1 < 0){
hour1 = hour1 - 1;
minute1 = minute1 + 60;
}
printf("%02d:%02d\n",hour1,minute1);
return 0;
}
实验2-3-9 判断一个三位数是否为水仙花数
本题要求编写程序,判断一个给定的三位数是否为水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。
输入格式:
输入在一行中给出一个需要判断的整数 N(100≤N≤999)。
输出格式:
如果N是水仙花数,则在一行中输出Yes,否则输出No。如果N不是三位数,则输出Invalid Value.。
#include <stdio.h>
#include <math.h>
int main()
{
int num;
int ge;
int shi;
int bai;
int sum;
scanf("%d",&num);
ge = num % 10;
shi = num / 10 % 10;
bai = num / 100;
sum = pow(ge,3) + pow(shi,3) + pow(bai,3);
if(num >= 100 && num <= 999){
if(num == sum){
printf("Yes\n");
}else{
printf("No\n");
}
}else{
printf("Invalid Value.\n");
}
return 0;
}
实验2-4-1 求1到N的和
本题要求编写程序,计算序列 1 + 2 + 3 + … 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,请注意等号的左右各有一个空格。题目保证计算结果不超过长整型整数的范围。
#include <stdio.h>
int main(){
int N;
int i;
int sum = 0;
scanf("%d",&N);
for(i=1;i<=N;i++){
sum = sum + i;
}
printf("sum = %d\n",sum);
return 0;
}
实验2-4-2 求N分之一序列前N项和
本题要求编写程序,计算序列 1 + 1/2 + 1/3 + … 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
#include <stdio.h>
int main(){
int N;
double i;
double sum = 0;
scanf("%d",&N);
for(i=1;i<=N;i++){
sum = sum + 1 / i;
}
printf("sum = %f\n",sum);
return 0;
}
实验2-4-3 求奇数分之一序列前N项和
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + … 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
#include <stdio.h>
int main(){
int N;
double i;
double sum = 0;
scanf("%d",&N);
for(i=1;i<=2*N-1;i=i+2){
sum = sum + 1 / i;
}
printf("sum = %f\n",sum);
return 0;
}
实验2-4-4 求简单交错序列前N项和
本题要求编写程序,计算序列 1 – 1/4 + 1/7 – 1/10 + … 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。
#include <stdio.h>
#include <math.h>
int main(){
int N;
double i;
double sum = 0;
double n;
scanf("%d",&N);
for(i=1;i<=3*N-2;i=i+3){
n = 1 / i * pow(-1,i+1);
sum = sum + n;
}
printf("sum = %.3f\n",sum);
return 0;
}
实验2-4-5 输出华氏-摄氏温度转换表
输入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.”。
#include <stdio.h>
int main()
{
int lower;
int upper;
int i;
float c;
scanf("%d %d",&lower,&upper);
if(lower <= upper && lower <= 100 && upper <= 100){
printf("fahr celsius\n");
for(i=lower;i<=upper;i=i+2){
c = 5 * (i - 32) / 9.0;
printf("%d%6.1f\n",i,c);
}
}else{
printf("Invalid.\n");
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/120203.html