中国石油大学C语言上机题答案.zip

更新时间:2023-08-16 13:29:01 阅读量: 教学研究 文档下载

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

中国石油大学c语言上机题答案大全(2013版)

最全最详细

1.1 Hello world.

让我们用C语言向世界问好。

最早的程序基本是这个样子的:

程序一:

#include <stdio.h>

void main()

{

printf("Hello world.\n");

}

程序二:

#include <stdio.h>

int main()

{

printf("Hello world.\n");

return 0;

}

上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。

输入:无

输出:Hello world.

#include<stdio.h>

int main()

{

printf("Hello world.\n");

}

1.2 Welcome to Beijing.

让我们来练习如何显示多行文字。

输入:无

输出:就是下面的那段文字。

#include<stdio.h>

void main()

{printf("Welcome\n");

printf("to\n");

printf("Beijing.\n");

}

1.3 练习最简单的printf和scanf

printf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。 输入:整型变量x的值。

输出:输出整型变量x对应的十进制、八进制和十六进制形式。

认真观察-1的八进制和十六进制输出,请想想是为什么。

#include <stdio.h>

int main()

{int x;

scanf("%d",&x);

printf("x=%d,",x);

printf("x=%o,",x);

printf("x=%x\n",x);

return 0;

}

1.4 练习两个整数之间的运算

背景:基本练习。

输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444 输出:分别输出进行+、-、*、/、*之后的运行结果。

#include<stdio.h>

int main()

{int x,y;

scanf("%d%d",&x,&y);

printf("%d+%d=%d\n",x,y,x+y);

printf("%d-%d=%d\n",x,y,x-y);

printf("%d*%d=%d\n",x,y,x*y);

printf("%d/%d=%d\n",x,y,x/y);

printf("%d%%%d=%d\n",x,y,x%y);

return 0;

}

1.5 学习打印你的第一个图形

背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。

程序如下:

#include <stdio.h>

int main()

{

printf("****\n");

printf("****\n");

printf("****\n");

printf("****\n");

return 0;

}

要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。

输入:无。

输出:指定图形。

#include <stdio.h>

int main()

{

printf(" *\n");

printf(" ***\n");

printf(" *****\n");

printf("*******\n");

return 0;

}

2.1 整型数的表示范围

编写一个循环程序,输入 N 值,输出 N 的阶乘。关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。注意整型数的表示范围,如果当输入的 N 比较大时,例如 N 等于 20 时,输出怎么是负数了?自己想明白吧! #include<stdio.h>

void main()

{int N,i;

int sum=1;

N>=2;

scanf("%d",&N);

if(N<=16)

{for (i=1;i<=N;i++)

sum=sum*i;

printf("%d\n",sum);

}

if(N>=17)

printf("N is too big!\n");

}

2.2 求正弦函数值

已知求正弦 sin(x) 的近似值的多项式公式为:

sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …

编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。

此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的ε。求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。

友情提示:给定的误差值ε越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。如果出现死循环的情况,可以用<Ctrl>+<Break>键退出程序。 #include <stdio.h>

#include <math.h>

int main()

{ float x,eps,s,y=0,y0,t;

int n,j;

scanf("%f%f",&x,&eps);

n=t=j=1;

s=x;

do

{ y0=y;

if (n%2==0) y=y-s/t;

else y=y+s/t;

s*=x*x;

t*=(j+1)*(j+2);

j+=2;

n++;

} while(fabs(y0-y)>eps);

printf("%f\n",sin(x));

system("PAUSE");

return 0;

}

2.3 判断输入的字符的类型

我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。

编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capital letters, 小写字母时输出small letters,数字是输出figures,其他字符时输出 others。 #include<stdio.h>

void main()

{

char c;

c = getchar ( );

if (c < 0x20)

printf ("The character is a control character\n");

else if (c >= '0' && c <= '9')

printf ("figures\n");

else if (c >= 'A' && c <= 'Z')

printf ("capital letters\n");

else if (c >= 'a' && c <= 'z')

printf ("small letters\n");

else

printf ("others\n");

}

3.1 找零钱

假定有 5 角、 1 角、 5 分、 2 分和 1 分共 5 种硬币,在 给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。 例如,当要给某顾客找 7 角 2 分钱时,会给他一个 5 角, 2 个 1 角 和 1 个 2 分的硬币。试编写一个程序,输入的是要找给顾客的零 钱(以分为单位),输出的是应该找回的各种硬币数目,并保 证找回的硬币数最少。

#include <stdio.h>

int main()

{

int x1,x2,x3,x4,x5;

int x;

scanf("%d",&x);

x1=x/50;

x2=x%50/10;

x3=x%50%10/5;

x4=x%50%10%5/2;

x5=x%50%10%5%2/1;

printf("%d\n",x1);

printf("%d\n",x2);

printf("%d\n",x3);

printf("%d\n",x4);

printf("%d\n",x5);

return 0;

}

3.2 计算时钟的夹角

背景:钟面上的时针和分针之间的夹角总是在 0 度~ 359 度之间。举例来说,在十二点的时候两针之间的夹角为 0 度,而在六点的时候夹角为 180 度,在三点的时候为 90 度。本题要解决的是计算 0:00 到 12:00之间任意一个时间的夹角。

输入: 每组测试数据包含两个数字:第一个数字代表小时 ( 大于等于 0 小于 12) ,第二个数字代表分 ( 在区间 [0, 59] 上 ) 。

输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。

友情提示:以表中心到12点的连线为基准,分针每走1分钟是6度,时针与基准的夹角每个小时也是30度,从整点开始,每过1分钟时针再增加0.5度。

提示:时钟夹角计算公式|5.5m-30h|,h为时针,m为分针。求浮点型绝对值的函数为fabs,需要包含math.h头文件

#include "stdio.h"

#include "math.h"

int main()

{

int h,m;

double angle;

scanf("%d%d",&h,&m);

angle=fabs(5.5*m-30*h);

if(angle>180)

angle=360-angle;

printf("At %d:%02d the angle is %.1f degrees.\n",h,m,angle);

}

3.3 照猫画猫:计算圆柱的侧面积及体积

如果已知圆柱的底面半径 r ,以及高 h ,则可计算出圆柱的侧面积 s=2πrh ,体积 v=π r 2 h 。其中 π=3.1415926

输入 第一行输入圆柱的底面半径 r

第二行输入圆柱的高 h

输出 s=< 圆柱的侧面积 >,v=< 圆柱的体积 >

要求 1. 所有变量都定义为双精度类型

2. 结果精确到小数点后两位

#include "stdio.h"

#define n 3.1415926

int main()

{

float r,h,s,v;

printf;

scanf("%f%f",&r,&h);

s=2*n*r*h;

v=n*r*r*h;

printf("s=%6.2f,v=%6.2f\n",s,v);

}

3.4 分离整数

任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。

比如输入的三位正整数

#include "stdio.h"

int main()

{

int x,hundreds,tens,units;

printf;

scanf("%d",&x);

hundreds=x/100;

tens=x%100/10;

units=x%100%10;

printf("units=%d,tens=%d,hundreds=%d\n",units,tens,hundreds);

}

3.5 鸡兔同笼

已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?

输入:头和脚的数目

输出:兔子和鸡的数目(输出语句为:printf("rabbit=%d,chicken=%d",rabbit,chicken);) Sample

输入:10 20

输出:rabbit=0,chicken=10

#include "stdio.h"

int main()

{

int chicken,rabbit,f,h;

scanf("%d%d",&h,&f);

rabbit=(f-2*h)/2;

chicken=(4*h-f)/2;

printf("rabbit=%d,chicken=%d\n",rabbit,chicken);

}

4.1 温度转换

背景: 经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(C)。现在,

请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。

温度转换的公式为:F=(C×9/5)+32 ;C=(F-32)×5/9 ;式中F--华氏温度,C--摄氏温度。

输入: 第一个数据(1 或 2 )确定转换的类型:华氏转摄氏(1);摄氏转华氏(2); 第二个数据是相应需要转换的温度值。

输出: 相应的转换后的温度值(保留小数点后 2 位)。

#include <stdio.h>

void main()

{

int lx;

double f,c;

scanf("%d",&lx);

if(lx==1){

scanf("%lf",&f);

c=(f-32)*5/9;

printf("The Centigrade is %.2f\n",c);

}

else{

scanf("%lf",&c);

f=(c*9/5)+32;

printf("The Fahrenheit is %.2f\n",f);

}

}

4.2 分段函数

有一分段函数,y=f(x)。当x小于6时,y=x-12;当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9.从键盘上输入一个整数x,输出对应的y值。 #include <stdio.h>

void main()

{

int x,y;

scanf("%d",&x);

if(x<6)

y=x-12;

else if(x<15)

y=3*x-1;

else

y=5*x+9;

printf("%d\n",y);

return 0;

}

4.3 整数位数判断

输入一个不多于5位的正整数,要求: (1)求它是几位数;(2)逆序打印出各位数字。 #include <stdio.h>

#include <stdlib.h>

#define SIZE 5

int

main(void)

{

int bit_count;//位数

long int input_num;//输入数

int result[SIZE];//存放各个位的数

int i;

scanf("%ld", &input_num);

if (input_num < 0 || input_num > 99999) {

printf("Invalid input\n");

exit(1);

}

for( bit_count = 0; input_num; ++bit_count) {

result[bit_count] = input_num % 10;

input_num /= 10;

}

printf("%d\n",bit_count);

for(i = 0; i < bit_count; ++i)

printf("%d",result[i]);

printf("\n");

exit(0);

}

4.4 四位数拆分

输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,输出Yes,如果不是,输出No;如果不是四位数,输出Invalid data。

#include<stdio.h>

void main()

{

int x,a,b,c,d,e;

scanf("%d",&x);

if(x/1000<1||x/10000>=1)

printf("Invalid data\n");

else {

a=x/1000;

b=x%1000/100;

c=x%1000%100/10;

d=x%1000%100%10;

e=(a+b+c+d)%2;

if(e==0)

printf("Yes\n");

else

printf("No\n");

}

}

4.5 磨磨你的砍柴刀:判断三角形的形状

要求:输入三角型的三条边,判断三角形的形状。假设输入的三边边长均>0。 输入:三角型的3条边的长度(int型)。

输出:等边三角形:equilateral triangle.

等腰三角形:isoceles triangle.

不构成三角形:non-triangle.

一般三角形:triangle.

#include<stdio.h>

void main()

{

float a,b,c;

scanf("%f%f%f",&a,&b,&c);

if(a+b<c||b+c<a||c+a<b)

printf("non-triangle.\n");

else if(a==b&&b==c)

printf("equilateral triangle.\n");

else if(a==b||b==c||a==c)

printf("isoceles triangle.\n");

else

printf("triangle.\n");

}

4.7 判断某年某月的天数

一年有365天,有的月份有31天,有的有30天,2月份闰年的时候是29天,非闰年的时候是28天。现在要求从键盘上输入一个年份和月份,输出其对应的天数。 #include <stdio.h>

main()

{ int year,month,days;

scanf("%d %d", &year,&month);

switch(month)

{ case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: days=31;break;

case 4:

case 6:

case 9:

case 11:days=30;break;

case 2:if((year % 4 ==0) && (year % 100 !=0) ||(year % 400==0))

days=29;

else days=28;

}

printf("%d\n",days);

}

4.8 花多少钱买衣服

周末商场促销呢,某品牌服装既可以买套装,也可以买单件。若买的不少于50套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。编写程序,输入计划购买的上衣数量 a 和裤子的数量 b ,计算并输出应该付的款 m 。 #include<stdio.h>

void main()

{

int a,b,y;

scanf("%d%d",&a,&b);

if(b<=a&&b<50)

y=90*b+(a-b)*60;

if(b<=a&&b>=50)

y=80*b+(a-b)*60;

if(a<b&&a<50)

y=90*a+(b-a)*45;

if(a<b&&a>=50)

y=80*a+(b-a)*45;

printf("%d\n",y);

}

4.9 到邮局去寄包裹

你去邮局给朋友寄礼物。发现邮局对邮寄包裹的费用是这样规定的:如果包裹长宽高任意一个尺寸超过1米,或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费 0.2 元,不同重量的邮资按下表计算: 重量(千克)

收费标准(元)

小于10

0 . 80

大于等于10但不超过20

0 . 75

大于等于20但不超过30

0 . 70

编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出 "Error” .

#include<stdio.h>

void main()

{

float a,b,c,m,y;

scanf("%f,%f,%f,%f",&a,&b,&c,&m);

if(a>1||b>1||c>1||m>30)

printf("Error\n");

if(m<10)

y=0.80*m+0.2;

else if(m<20)

y=0.75*m+0.2;

else

y=0.70*m+0.2;

printf("%.2f\n",y);

}

}4.10 判断输入的字符的类型 我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。

编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capital letters, 小写字母时输出small letters,数字是输出figures,其他字符时输出 others。

#include <stdio.h>

int main()

{

char ch;

ch=getchar();

if (ch<91&&ch>64)

{printf("capital letters\n");}

else if (ch<123&&ch>96)

{printf("small letters\n");}

else if (ch<=57&&ch>=48)

{{printf("figures\n");}}

else {printf("other\n");} return 0;} }

5.1输出一行星号

问题描述

编写程序在一行中输出 N 个星号。

输入

星号个数值N

输出

一行中N个星号

#include <stdio.h>

int main()

{

int N,i;

scanf("%d",&N);

for(i=1;i<=N;i++)

printf("*");

}

printf("\n");

}

5.2 打印平行四边形

问题描述

输入图形的高 n ,输出如下例( n=5 )所示的图形 .

*****

*****

*****

*****

*****

输入

整数n例如 5

输出

由*组成的高为5的平行四边形

#include <stdio.h>

int main()

{

int N,i,j;

scanf("%d",&N);

for(i=1;i<=N;i++)

{

for(j=1;j<i;j++)

printf(" ");

for(j=1;j<=N;j++)

printf("*");

printf("\n");

}

return 0;

}

5.3 编程计算

问题描述

编写程序,输入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-...+1/n (保留四位小数) 输入

n的值

输出

上述算式的求和结果(结果保留四位小数)

输入样例

1

输出样例

sum=1.0000

#include <stdio.h>

int main()

{

int n,i,j,sign=-1;double f, sum=0;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

f=1.0/i;

sign=-sign;

sum=sum+sign*f;

}

printf("sum=%.4lf\n",sum);

}

5.4 分数序列

问题描述

有一个分数序列:,输入整数n,求出其前n项的和。

输入

整数n

输出

上述分数序列的前n项之和

提示:输出语句格式为 printf("sum=%16.10f\n",s);

输入样例

1

输出样例

sum= 2.0000000000

#include <stdio.h>

int main()

{

int i,n,k;double f,sum=0,a=1.0,b=1.0;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

k=a;

a=b;

b=a+k;

f=b/a;

sum=sum+f;

}

printf("sum=%16.10lf\n",sum);

}

5.5 求e的值

问题描述

编写程序,从键盘输入整数 n , 求 e 的值。e=1+1/1!+1/2!+1/3!+..+1/n! 注意:用 double 型数据计算。

输入

整数n

输出

e的值

提示:输出语句 printf("e=%16.10f\n",e);

输入样例

2

输出样例

e= 2.5000000000

#include <stdio.h>

void main()

{

int n,i,j;double k,f,sum=1;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

for(j=1,k=1;j<=i;j++)

k=k*j;

f=1.0/k;

sum=sum+f;

}

printf("e=%16.10lf\n",sum);

}

5.6 最大公约数

问题描述

输入两个正整数m和n,求它们的最大公约数和最小公倍数

输入

两个正整数m和n

输出

m和n的最大公约数和最小公倍数

输入样例

2 8

输出样例

the greatest common divisor is 2

the least common multiple is 8

#include <stdio.h>

int main()

{

int m,n,r,t,M,N,a,b,c;

scanf("%d%d",&m,&n);

if(m<n)

{t=m;

m=n;

n=t;

}

a=m;

b=n;

while((r=m%n)!=0)

{ m=n;

n=r;}

printf("the greatest common divisor is %d\n",n);

M=a/n;

N=b/n;

c=M*N*n;

printf("the least common multiple is %d\n",c);

return 0;

}

5.7 水仙花数

问题描述

输出所有的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一水仙花数,因为153=13+53+33

输入

输出

所有的水仙花数 提示:输出语句 printf("%d\n",n);

#include <stdio.h>

void main()

{

int i,a,b,c,d;

for(i=100;i<=999;i++)

{

a=i/100;

b=(i%100)/10;

c=i%10;

d=a*a*a+b*b*b+c*c*c;

if(i==d)

printf("%d\n",i);

}

}

5.8 完数

问题描述

一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,且6=1+2+3,因此6是完数。

输入

一个正整数n

输出

判断n是否为完数。如果是,则输出Yes和它的所有因子;否则,输出No

输入样例

6

输出样例

Yes,its factors are 1 2 3

#include <stdio.h>

int main()

{

int a,i,sum=0;

scanf("%d",&a);

for(i=1;i<a;i++)

if(a%i==0)

sum=sum+i;

if(sum==a)

{

printf("Yes,its factors are ");

for(i=1;i<a;i++)

if(a%i==0) printf(" %d",i);

printf("\n");

}

else printf("No\n");

}

5.9 素数

问题描述

输入两个正整数m和n,求出[m,n]区间的所有素数

输入

两个整数m和n

输出

[m,n]区间的所有素数

输入样例

2 10

输出样例

2 3 5 7

#include <stdio.h>

int main()

{

int m,n,i,j;

scanf("%d%d",&m,&n);

for(i=m;i<=n;i++)

{

for(j=2;j<i;j++)

if(i%j==0) break;

if(j==i) printf(" %d",i);

}

printf("\n");

return 0;

}

5.10 回文数

问题描述

输入一个正整数,判断是否为回文数。

输入

一个正整数n

输出

如果是,输出Yes,否则输出No

输入样例

12321

输出样例

Yes

#include <stdio.h>

int main()

{

int a,b,c;

scanf("%d",&a);

c=a;

b=0;

while(c>0)

{

b=b*10+(int)c%10;

c=c/10;

}

if(a==b) printf("Yes\n");

else printf("No\n");

}

5.11 贪吃的猴子

问题描述

有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后

每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。

输入

天数n

输出

第一天的桃子个数。提示:输出语句为

printf("The monkey got %d peachs in first day.\n",sum);

输入样例

5

输出样例

The monkey got 114 peachs in first day.

提示:

问题分析:

总共 t0

日 吃掉 剩余

1 t0/2+1 t0-(t0/2+1)=t0/2-1 t1=t0/2-1 =>t0=(t1+1)*2

2 t1/2+2 t1-(t1/2+2)=t1/2-2 t2=t1/2-2 =>t1=(t2+2)*2

....

n-1 tn-2/2+(n-1) tn-2-(tn-2/2+(n-1))=tn-2/2-(n-1) tn-1=tn-2/2-(n-1) => tn-2= (tn-1+n-1)*2 n 1 0 tn-1=1

#include <stdio.h>

int main()

{

int n,i;double sum;

scanf("%d",&n);

i=n,sum=1;

for(;i>1;i--)

sum=(sum+(i-1))*2;

printf("The monkey got %.0lf peachs in first day.\n",sum);

return 0;

}

5.12 马戏团观众人数

问题描述

一个马戏团表演, n 个座位全满,全部门票收入是 120 元,现在知道,男人每人 5 元,女人每人 2 元,小孩每人 1 角。根据总人数,计算出男人、女人和小孩各多少人。 输入

总人数 n

输出

男人、女人和小孩人数,若 n 人无法满足条件,则输出“No output\n”

#include <stdio.h>

int main()

{

int n,x,y,z,tag=0;

scanf("%d",&n);

for(x=0;x<=n;x++)

for(y=0;y<=n;y++)

for(z=0;z<=n;z++)

if(x+y+z==n&&50*x+20*y+1*z==1200)

{

tag=1;

printf("%d %d %d\n",x,y,z);

}

if(tag==0) printf("No output\n");

return 0;

}

5.13 迭代法

问题描述

用迭代法求。求平方根的迭代公式为:

要求前后两次求出的x的差的绝对值小于10-5。

输入

a

输出

的值

输入样例

4

输出样例

The square root of 4.00 is 2.00000

#include <stdio.h>

#include <math.h>

int main()

{

double i,a,sq,d;

scanf("%lf",&a);

d=a;

for(sq=1;;)

{

i=sq;

sq=(sq+a/sq)/2;

if(fabs(sq-i)<=0.00001)

{

printf("The square root of %.2lf is %.5lf\n",d,sq);

break;

}

}

}

5.14 cos(x)-x=0

利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。

xn+1=cos(xn)

迭代步骤如下:

(1)输入数据给x1;

(2)x0=x1,把x1的值赋给x0;

(3)x1=cos(x0),求出一个新的x1;

(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);

(5)所求x1就是方程cos(x)-x=0的一个实根,输出x1,输出语句为printf("x=%lf",x);。 提示:本题x0和x1定义为double类型

#include <stdio.h>

#include <math.h>

int main()

{

double a,b,i;

scanf("%lf",&b);

for(i=1;;)

{

a=b;

b=cos(a);

if(fabs(a-b)<=0.000001)

{

printf("x=%lf\n",b);

break;

}

}

}

5.15 求一个三位数,其值等于其各位阶乘之和

问题描述

编写程序,求某三位数,该数值的大小正好是组成这个数的三个位上的数字阶乘之和。 输入

输出

满足上述条件的三位数。提示:输出格式为 printf("%d\n",num);

#include <stdio.h>

void main()

{

int a,b,c,d,i,j,k,l,x,y,z;

for(i=100;i<1000;i++)

{

a=i/100;b=(i%100)/10;c=i%10;

for(j=1,x=1;j<=a;j++) x=x*j;

for(k=1,y=1;k<=b;k++) y=y*k;

for(l=1,z=1;l<=c;l++) z=z*l;

if(x+y+z==i) printf("%d\n",i);

}

}

6.1 谁能出线

背景:

电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。

输入:

按顺序给出一个小组10个人的最后得分(int)。

输出:

能够出线的学生序号(0~9)。

#include <stdio.h>

#define N 10

int main()

{

int i,max=0,j;int a[N];

for(i=0;i<N;i++)

{

scanf("%d",&a[i]);

if(a[i]>=max)

max=a[i];

}

for(j=0;j<N;j++)

if(a[j]==max)

printf("%d\n",j);

return 0;

}

6.2 统计素数的个数

求出 2 到 m 之间 ( 含 m,m<=1000) 所有素数并放在数组 a 中。

输入:正整数m

输出:从小到大的所有素数,及个数(素数输出的时候用%4d来控制)

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

Top