C语言 - 中国石油大学(华东)c语言上机题及答案大全- 副本(4)

2019-04-13 19:43

说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行因为有多个结果,结果的排序按照大马的个数从少到多 #include void main() {int x,y,z;

for(x=1;x<33;x++) for(y=1;y<50;y++) {z=(100-3*x-2*y)*2; if(x+y+z==100) printf(\ } }

5.24 四大湖问题

我国有4大淡水湖。

A说:洞庭湖最大,洪泽最小。鄱阳湖第三。 B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。

C说:洪泽湖最小,洞庭湖第三。

D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。

4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序。 #include #include int main() {

int a,b,c,d;

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

for(b=1; b<=4; b++) {

if(b==a) continue; for(c=1; c<=4; c++) {

if(c==a||c==b) continue; for(d=1; d<=4; d++) {

if(d==a||d==b||d==c) continue;

if((b==1||d==4||a==3)==1&&(d==1||b==4||a==2||c==3)==1&&(d==4||b==3)==1&&(a==1||c==4||d==2||b==3)==1)

{

if(a==1) printf(\鄱阳湖\\n\

if(a==2) printf(\鄱阳湖\\n\

if(a==3) printf(\鄱阳湖\\n\

if(a==4) printf(\鄱阳湖\\n\

if(b==1) printf(\洞庭湖\\n\

if(b==2) printf(\洞庭湖\\n\

if(b==3) printf(\洞庭湖\\n\

if(b==4) printf(\洞庭湖\\n\

if(c==1) printf(\太湖\\n\

if(c==2) printf(\太湖\\n\

if(c==3) printf(\太湖\\n\

if(c==4) printf(\太湖\\n\

if(d==1) printf(\洪泽湖\\n\

if(d==2) printf(\洪泽湖\\n\

if(d==3) printf(\洪泽湖\\n\

if(d==4) printf(\洪泽湖\\n\

break; } }

break; }

break; } return 0; }

选做 5.25 黑色星期五 在西方,星期五和数字 13 都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,

- 16 -

不管哪个月的13日又恰逢星期五就叫 “ 黑色星期五 ” 。输入某年年号和该年的元旦是星期几( 1-7),输出该年所有的 “ 黑色星期五 ” 的日期(年 /月/日) 。

输入: 4位年号和该年元旦是星期几

输出: 所有的 “黑色星期五”的日期(年/月/日) #include #include int main() {

int y,m,d,x;

scanf(\ for(m=1; m<=12; m++) {

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

{

for(d=1; d<=31; d++) {

if(d==13&&x==5)

printf(\ x++; if(x==8) x=1; } }

if(m==4||m==6||m==9||m==11) {

for(d=1; d<=30; d++) {

if(d==13&&x==5)

printf(\ x++; if(x==8) x=1; } }

if(((y%4==0&&y0!=0)||y@0==0)&&m==2) {

for(d=1; d<=29; d++)

{

if(d==13&&x==5)

printf(\ x++; if(x==8) x=1; } }

if(y%4!=0&&m==2) {

for(d=1; d<=28; d++) {

if(d==13&&x==5)

printf(\ x++; if(x==8) x=1; } } }

return 0; }

选做 5.26 抓疑犯

某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:

(1) A 、 B 至少有一人作案;

(2)A 、 E 、 F 三人中至少有两人参与作案; (3)A 、 D 不可能是同案犯;

(4)B 、 C 或同时作案,或与本案无关; (5) C 、 D 中有且仅有一人作案;

(6)如果 D 没有参与作案,则 E 也不可能参与作案。

试编一程序,将作案人找出来。 输出格式为(以下结果不是最终答案): A:不是罪犯 B:是罪犯 C:是罪犯 D:不是罪犯 E:不是罪犯 F:是罪犯

#include #include

- 17 -

int main() {

int A,B,C,D,E,F; for(A=0; A<=1; A++) for(B=0; B<=1; B++) for(C=0; C<=1; C++)

for(D=0; D<=1; D++) for(E=0; E<=1; E++) for(F=0; F<=1; F++)

if(A+B>=1&&A+E+F>=2&&A+D==1&&(B+C==0||B+C==2)&&C+D==1&&(D+E==0||D+E==2)) {

if(A==1)

printf(\是罪犯\\n\

if(A==0)

printf(\不是罪犯\\n\

if(B==1)

printf(\是罪犯\\n\

if(B==0)

printf(\不是罪犯\\n\

if(C==1)

printf(\是罪犯\\n\

if(C==0)

printf(\不是罪犯\\n\

if(D==1)

printf(\是罪犯\\n\

if(D==0)

printf(\不是罪犯\\n\

if(E==1)

printf(\是罪犯\\n\

if(E==0)

printf(\不是罪犯\\n\

if(F==1)

printf(\

是罪犯\\n\

if(F==0)

printf(\不是罪犯\\n\

} return 0; }

选做 5.27 零钱换整钱

小明去银行存钱,拿了一堆硬币。已知 1 角的硬币厚度为 1.8mm , 5 角的硬币厚 1.5mm , 1 元的硬币为 2.0mm 。小明将 1 角的硬币放成一摞,将 5 角的硬币硬币放成一摞,将 1 元的硬币放成一摞,发现 3 摞硬币一样高。银行正好把这些硬币换成若干张面值为 10 元的纸币。问小明至少带了多少钱的硬币(元为单位),每种面值的硬币有多少个?

输入: 无 输出: 1 角的数量,5 角的数量,1元的数量,总金额。(例如:20,30,40,50)

说明: 在结果中只输出各个对应的数字即可 #include #include int main() {

int a,b,c,d;

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

for(b=1; b<=100; b++) for(c=1; c<=100; c++)

if(20*a==15*b&&20*a==18*c) {

d=(a*10+b*5+c)0; if(d!=0) break;

d=(a*10+b*5+c)/10;

printf(\ } return 0; }

选做 5.28 马戏团观众人数 一个马戏团表演, n 个座位全满,全部门票收入是 120 元,现在知道,男人每人 5 元,女人每人 2 元,小孩每人 1 角。编程,输入总人数 n ,输出满足要求的男人、女人和小孩人数的全部方案。若 n 人

- 18 -

无法满足条件,则输出“No output\\n”。 输入: 人数 n

输出: 男人、女人和小孩人数 #include #include int main() {

int n,a,b,c;

scanf(\ for(a=0; a<=24; a++)

for(b=0; b<=(120-5*a)/2; b++)

for(c=0; c<=(120-5*a-2*b)*10; c++)

if(5*a+2*b+c/10==120&&a+b+c==n)

printf(\ return 0; }

选做 5.29 爱因斯坦的数学题

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?

输出语句格式为:printf(\number = %d\\n\ #include #include int main() {

int number;

for(number=1; number<=1000; number++)

if(number%2==1&&number%3==2&&number%5==4&&number%7==0) {

printf(\number = %d\\n\ break; } return 0; }

选做 5.30 抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件, 但都没有记住车号,只记下车号的一些

特征。甲说:牌照的前 两位数字是相同的;乙说:牌照的后两位数字是相同的,但与 前两位不同;丙是位数学家,他说:四位的车号刚好是一个整 数的平方,请根据以上线索求出车号。 #include #include int main() {

int a,b,c,n;

for(a=0; a<=9; a++)

for(b=0; b<=9; b++) if(a!=b) {

n=1100*a+11*b;

for(c=30; c<1000; c++) if(n==c*c)

printf(\is:%d\\n\ } return 0; }

5.31 求和

输入整数 m 和正整数 n ,按下列公式计算 s : s=m-(m+1)+m+2-(m+3)+ ?? +(-1)n(m+n) 。 输入: m 和 n 输出: s

#include int main() {

int i,sign=1,m,n,s=0,t; scanf(\ for (i=0;i<=n;i++) { t=sign*(m+i); sign=-sign; s=s+t; }

printf(\ }

5.32 计算SUM的值

已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n 输入:n

输出:表达式 sum 的值。结果保留 6 位小数

- 19 -

#include int main() {

int i,n;

float s = 0.0, t; scanf(\ for (i=1;i<=n;i++) { t=1.0/i; s+=t; }

printf(\ return 0; }

5.33 迭代法

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

要求前后两次求出的x的差的绝对值小于10-5。 #include #include int main() {

double x1,x2,a; scanf(\ {

x2=1.0; do {

x1=x2;

x2=0.5*(x1+a/x1); }

while(fabs(x2-x1)>=1e-5);

printf(\ }

return 0; }

5.34 分数序列

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

输出语句格式为:printf(\#include int main() {

int a,b,c,n,i; double s;

}

scanf(\a=2,b=1,s=0; for (i=1;i<=n;i ++) { s+=(1.0*a/b); c=b; b=a; a=a+c; }

printf(\return 0;

5.35 求e的值

编写程序,从键盘输入整数 n , 求 e 的值 . e=1+1/1!+1/2!+1/3!+..+1/n! 注意:用 double 型数据计算输出语句:printf(\ #include int main() {

double e=1.0,f=1.0; int n,i;

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

f=f/i; e=e+f; }

printf(\ }

5.36 编程计算

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

int i, sign = 1, n; float s = 0.0, t; scanf(\ for (i = 1; i <= n; i ++)

{ t = 1.0 / (sign * i); sign = -sign; s += t; } printf(\ return 0; }

5.37 cos(x)-x=0

- 20 -


C语言 - 中国石油大学(华东)c语言上机题及答案大全- 副本(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高中历史总结 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: