上机题及答案

更新时间:2024-03-22 13:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1温度转换 描述

已知华氏温度到摄氏温度的转换公式为:摄氏温度= (华氏温度- 32)×5/9,写程序将给定的华氏温度转换为摄氏温度输出 输入说明

只有一个整数,表示输入的华氏温度 输出说明

输出一个表示摄氏温度的实数,小数点后保留2位有效数字,多余部分四舍五入 输入样例 50 输出样例 10.00

2计算球体重量

描述

已知铁的比重是7.86,金的比重是19.3。写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926 输入说明

输入两个整数,分别表示铁球与金球的直径(单位为毫米) 输出说明

输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔 输入样例 100 100 输出样例

4115.486 10105.456 提示

#include int main(){

double Fe=7.86,Au=19.3,Pi=3.1415926; int m,n;

1

float M1,M2;

scanf(\%d\注意,要使输出的两个数据中间无逗号,“”之间要无逗号,下面也如此

M1=(4.0/3)*Pi*m/2*m/2*m/2*Fe/1000; M2=(4.0/3)*Pi*n/2*n/2*n/2*Au/1000; printf(\return 0; }

3阶梯电价计费

描述

电价分三个档次,[0,110]度电,每度电0.5元;(110,210]度电,超出110部分每度电0.55元,超过210度电,超出210部分每度电0.70元,给出一个家庭一月用电量,请计算出应缴的电费(四舍五入,保留小数点后两位小数)。 输入说明

第一行为1个整数m(100 > m >0),表示有多少组数据。 其后一行为m个正实数,表示m个用电量数据 输出说明

一行输出1个电费数据(四舍五入保留2位小数)后,换行。 输入样例 3

100 200 329.75 输出样例 50.00 104.50 193.82

(1)自己的 #include

double fare(double m){ double n; if(m>=0&&m<=100) n=0.5*m; if(m>110){ if(m<=210) n=0.5*110+0.55*(m-110); else

2

n=0.5*110+0.55*(210-110)+0.70*(m-210); } return n; }

int main () {

int a,b; double c;

scanf(\ for(b=0;b

scanf(\

printf(\ } return 0; }

(2)别人的

# include

double money(double x) { if(x>=100&&x<=110) return 0.5*x; if(x>110&&x<=210) return 0.5*110+0.55*(x-110); if(x>210) return 0.5*110+0.55*100+0.7*(x-210); }

int main () {

int a,b; double c;

scanf(\for(b=0;b

scanf(\

printf(\}

return 0; }

4计算某月天数

描述

3

每个月的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,闰年2月29天,其他年份2月28天,给定年份和月份求该月的天数 输入说明

多组数据,输入数据第一行为整数n(n<100),表示有几组数据数据,其后为n行,每行表示一组数据,每组数据由两个正整数a和b构成,a表示年份,b表示月份,a和b之间用空格分隔 输出说明

根据年份和月份计算该月天数并输出,每输出一个天数后换行 输入样例 3

2000 3 2011 5 2008 2 输出样例 31 31 29

程序问题:输入时年份和月份在同一行,按空格分开,不能按回车换行 1别人的

#include

void tianshu(int x,int y) {

if(y==1||y==3||y==5||y==7||y==8||y==10||y==12) printf(\ else if(y==4||y==6||y==9||y==11) printf(\ else if((x%4==0&&x0!=0||x@0==0)&&y==2) printf(\ else if(y==2) printf(\ }

int main()

4

{

int a,b,m,n; scanf(\ for (m=1;m<=n;++m) { scanf(\ tianshu(a,b); } return 0; } 2 自己的

#include int main() { int a,b; scanf(\ for(b=0;b

5计算整数各位数字之和

5

描述

假设n是一个由最多9位数字(d9, ?, d1)组成的正整数。编写一个程序计算n的每一位数字之和 输入说明

有多组数据,输入数据第1行为整数m(m<100),表示有多少组数据,其后一行m个正整数 输出说明

对每一个整数n输出它的各位数字之和后换行 输入样例 3

6 3704 170498 输出样例 6 14 29 1别人的

# include void sum(int a) { int x,y; int sum=0;

for(x=100000000;x>0;x=x/10) { y=a/x; a=a-y*x; sum+=y; }

printf(\}

int main() {

int m,n,x;

scanf(\

6

for(n=1;n<=m;++n) { scanf(\ sum(x); } return 0; }

2自己的

#include int main() { int m,a; scanf(\ for(a=1;a<=m;a++) { int sum=0,x,y,n; scanf(\ for(x=100000000;x>0;x=x/10) { y=n/x; sum+=y; n=n-x*y; } printf(\ } return 0; }

6完数

描述

请写一个程序,给出指定整数范围[a,b]内的所有完数,0

只有一组数据,即一行上的两个整数a和b,a和b之间用空格分隔

7

输出说明

输出[a,b]内的所有完数,每个数字占一行 输入样例 1 10 输出样例 6

1别人的

#include #include int wanshu (int n) { int m;

int sum=0;

for(m=1;m

if(n==sum)return 1; else return 0; }

int main() {

int m,n,i;

scanf(\for(i=m;i<=n;++i){

if(wanshu(i)==1)printf(\}

return 0; }

2自己的

#include void wanshu(int n) { int m,sum=0;

8

for(m=1;m

# include int main() { int a,b,m,x,sum=0;

scanf(\ for(x=a;x<=b;x++) { for(m=1;m

7最大公约数 描述

最大公约数(GCD)指某几个整数共有因子中最大的一个,最大公约数具有如下性质, gcd(a,0)=a gcd(a,1)=1

因此当两个数中有一个为0时,gcd是不为0的那个整数,当两个整数互质时最大公约数为

9

1。

定义函数:int gcd(int a,int b),返回两个参数的最大公约数。并写一个主函数调用该函数,实验各种输入参数情况。

输入说明

多组数据,每组数据由同一行的两个正整数a和b构成(0<=a,b<10000),a和b之间用空格分隔,当a和b都为0时表示输入结束

输出说明

对每组数据输出其最大公约数后换行 输入样例 2 4 12 6 3 5 0 0 输出样例 2 6 1

输入实例:2 4 12 6 3 5 0 0

#include int gcd(int a,int b) { int n; if(a==0&&b==0) return 0; if(a==0) return b; if(b==0) return a; for(n=(a>b?b:a);a%n!=0||b%n!=0;n--) ; return n; }

int main() { int a,b; while(1)//也可写为for(; ;) {

10

12矩阵

描述

请写一个程序,对于一个m行m列(2

只有一组数据;输入数据的第一行为一个正整数,表示m;接下来为m行、每行m个整数表示方阵的元素。 输出说明

从大到小排列的一行整数,每个整数后跟一个空格,最后换行。 输入样例 4

15 8 -2 6 31 24 18 71 -3 -9 27 13 17 21 38 69 输出样例

159 145 144 135 81 60 44 32 28 27

#include int main(){ int m,i,j,a[20][20]={0},b[42]={0},k; scanf(\ for(i=0;i

for(i=0,j=0;i

for(j=m-1,i=0;i=0&&b[j]>k;--j) b[j+1]=b[j]; if(j!=i-1)b[j+1]=k;

16

}

for(i=2*m+1;i>=0;--i)printf(\ printf(\ return 0; }

//自己做的排序,比较简单 for(i=1;i<=2*m+2;i++) { for(j=1;j<=2*m+2;j++) if(b[j-1]

13回文数

描述

若一个整数其各位数字按照正反顺序读完全相同,则称之为回文数,例如12321。判断给出的整数是否是回文数。若是,则输出该整数各位数字之和,否则输出no. 输入说明

输入包含多组数据,第一行为整数n表示有几组数据,其后为n行数据,每行一个整数。 输出说明

对每一个整数,若该整数为回文数,则输出整数各位数字之和,否则输出no,然后换行。 输入样例 2 131 24 输出样例 5 no

17

#include #include int main(){ int a[200]={0},b,c,d=0,m,n,i,k,p,sum=0; scanf(\ for(m=0;m0;++k)c*=10; //注意此处k与下面略有不同 for(i=0,p=k-1;i

#include #include int main() { int a[200],m,n,i,k,p,c,d=0,sum=0; scanf(\ while(m--) { scanf(\ for(k=0,c=10;n/c>0;k++) c*=10; for(i=0,p=k;i<=k;i++,p--) { a[i]=(n%(int)pow(10,i+1))/(int)pow(10,i); sum+=a[i]; d+=a[i]*(int)pow(10,p); } if(d==n) printf(\ else printf(\

18

sum=0; d=0; } return 0; }

14排序

描述

给定N个不同的整数,要求对这N个整数按如下规则排序并输出。 规则一:所有的偶数排在奇数前面。

规则二:在规则一的前提下按照从大到小的顺序排序。 输入说明

只有一组数据。数据由两行构成,第一行为整数n(n<=100),表示代排序整数的数量。第二行是n个整数,每个整数的取值区间都为[-32768~32767],整数之间以空格间隔。 输出说明

在一行输出排好序的整数,整数之间以空格间隔,然后换行。 输入样例 5

1 2 3 4 5 输出样例 4 2 5 3 1

#include int da(int m,int n){

if(m%2==0&&n%2!=0)return 0; else if(m%2!=0&&n%2==0)return 1; else if(m

int main(){

int n,i,j,t,a[100]; scanf(\ for(i=0;i

19

for(i=1;i

for(t=a[i],j=i-1;j>=0&&da(a[j],t);--j) a[j+1]=a[j]; if(j!=i-1)a[j+1]=t; }

for(i=0;i

15拼数字

描述

对于给定的字符序列,从左至右将所有数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31),计算并输出该整数的最大因子(如果是素数或0,则其最大因子为自身)。 输入说明

有多组数据;每组数据为一行字符序列,当输入一个空行时表示输入结束。 输出说明

对每个字符序列,求出所得整数的最大因子;若字符序列中没有数字或找出的整数为0,则输出0。每个整数占一行输出。 输入样例 sdf0ejg3.f?9f ?4afd0s&2d79*(g abcde 输出样例 13 857 0

#include #include #include int yin(int n){ int p,k=2;

20

for(i=0;(c=a[i])!='\\0';++i){ if(isalpha(c)){ m=a[i];++i;c=a[i]; if(isdigit(c)){ for(n=0;isdigit(c)&&c!='\\0';c=a[i]){++i;n=10*n+(c-'0');} if(n>=3) for(j=0;j

printf(\return 0; }

21括号匹配

描述

请写一个程序,判断给定表达式中的括号是否匹配。表达式中的合法括号为“(”、“)”、“[”、“]”、“{”、“}”,这三种括号可以按照任意的次序嵌套使用。 输入说明

有多个表达式,每个表达式占一行。当输入的表达式为空字符串(长度为0)时表示输入结束 输出说明

对每个表达式,若其中的括号是匹配的,则输出“yes”,否则输出“no”。 输入样例 [(d+f)*{}2] [(2+3)) ()}

[4(6]7)9 输出样例

26

yes no no no

22 电话费 描述

随着电话日益普及,人与人之间的信息交流更方便快捷。请你为电话公司编写一个电话计费程序,用户每月每次通话情况记录在文件\中,文件中每次通话数据记录在一行,格式如下:

拨入或拨出标记 通话时长

1、拨入标记为\,表示外地用户呼叫本机,此时本机用户不需计费:拨出标记为\,表示本机呼叫外地用户,此时本机拥护需要记费。拨入和拨出标记均为大写字母。 2、通话时长以秒为单位,假定每次通话时间最短为1秒,最长不超过24小时。 通话计费规则为:

1、计算总时间为各次拨出通话时间总和,以3分钟为一个计算单位,不足3分钟的按3分钟计;

2、计费单价为每3分钟0.17元。

计算并输出该用户本月电话费用M(单位:元,精确到分)。 输入说明

输入来自于文本文件\,文件中每一行为一条通话记录 输出说明

输出总话费,以元为单位,精确到分,即保留两位小数 输入样例 OUT 362 IN 234 OUT 833 输出样例 1.19

#include #include #include #include int main() {

char ch[10]; int s=0;

27

float ans; long time=0;

freopen(\

while(scanf(\ {

if(ch[0]=='O') {

time+=s; } }

time=((time/180)+1); ans=time*0.17; printf(\ return 0; }

28

本文来源:https://www.bwwdw.com/article/4m88.html

Top