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

2019-04-13 19:43

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

(1)取X1初值为0.0;

(2)X0=X1,把X1的值赋给X0; (3)X1=cos(X0),求出一个新的X1;

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

(5)所求X1就是方程cos(X)-X=0的一个实根,输出X0,输出语句为printf(\。 #include #include int main() { double x1,x2; scanf(\ x2=cos(x1); while(fabs(x2-x1)>0.000001) { x1=x2; x2=cos(x1); } printf(\}

选做 5.38 SIX+SIX+SIX=NINE+NINE

计算出自然数SIX和NINE(它们满足的条件是SIX+SIX+SIX=NINE+NINE)的个数cnt。其中的S,I,X,N,E各代表一个十进制数字。输出语句:printf(\ #include #include int main() {

int S,I,X,N,E,cnt=0; for(S=1; S<=9; S++) for(I=0; I<=9; I++)

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

for(N=1; N<=9; N++) for(E=0; E<=9; E++)

if(3*(100*S+10*I+X)==2*(1010*N+100*I+E)) cnt++; printf(\

return 0; }

选做 5.39 C减式 编程,求解下列算式中各字母所代表的数字并输出。 PEAR - ARA ─────── PEA #include #include int main() {

int p,e,a,r,n,c,b;

for(n=1000;n<=9999;n++) {

p=n/1000; e=n/100; a=n/10; r=n;

c=101*a+10*r; b=100*p+10*e+a; if(n-c==b) break; }

printf(\ return 0; }

选做 5.40 求A的值

求满足A*B=N,使A+B最小,且A,B(A<=B)为正整数的A的值。 输入:正整数N 输出:满足条件的A #include #include #include int main() {

int n, a, b, i, j; scanf (\ a = sqrt (n); b = sqrt (n);

for (i = a; i >= 0; i--) {

for (j = b; j <= n; j++)

- 21 -

{

if ( (n == i * j) && (n % i == 0) && (n % j == 0) && (i + j >= 2 * a)) break; }

if ( (n == i * j) && (n % i == 0) && (n % j == 0) && (i + j >= 2 * a)) break; }

printf (\ return 0; }

选做5.41 求一个三位数,其值等于其各位阶乘之和 编写程序,求某三位数,该数值的大小正好是组成这个数的三个位上的数字阶乘之和。 输出格式:printf(\#include int main()

{int a,b,c,i,j,k,s1,s2,s3; for(a=1;a<=9;a++) for(b=1;b<=9;b++) for(c=1;c<=9;c++) {s1=1;s2=1;s3=1; for(i=1;i<=a;i++) s1*=i;

for(j=1;j<=b;j++) s2*=j;

for(k=1;k<=c;k++) s3*=k;

if(100*a+10*b+c==s1+s2+s3) printf(\}

选做5.42 谁的饭量大

3个人比饭量大小,每人说了2句话。 A说:B比我吃得多,C和我吃得一样多。 B说:A比我吃得多,A也比C吃得多。 C说:我比B吃得多,B比A吃得多。

事实上饭量越小的人讲对的话越多。请编写程序按A、B、C的顺序输出3个人的饭量排名(排名越大,饭量越大)。 #include void main() {

int A,A1=0, B,B1=0, C,C1=0;

for(A=0; A<3;A++) for(B=0; B<3;B++) for(C=0; C<3;C++) {

A1 += B-A>0?1:0; A1+=(C==A?1:0); B1 += A-B>0?1:0; B1+=A-C>0?1:0; C1 += C-B>0?1:0; C1+=B-A>0?1:0;

if((A-C)*(C1-A1)>0||(A-C==0&&C1-A1==0)) if((B-C)*(C1-B1)>0||(B-C==0&&C1-B1==0)) if((B-A)*(A1-B1)>0||(B-A==0&&A1-B1==0)) {

printf(\ printf(\ printf(\ }

A1=0; B1=0; C1=0; } }

选做5.43 跳水排名

五位跳水选手将参加10m高台跳水,有好事者让5人据实力预测比赛结果。 A选手说:B第二,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。 决赛成绩公布之后,每位选手的预测都只说对一半,请编程输出比赛的实际名次。 #include void main() {

int a,b,c,d,e;

for(a=1;a<=5;a++) for(b=1;b<=5;b++) for(c=1;c<=5;c++) for(d=1;d<=5;d++) for(e=1;e<=5;e++)

if((b==2)+(a==3)==1&&(b==2)+(e==4)==1&&(c==1)+(d==2)==1&&(c==5)+(d==3)==1&&(e==4)+(a==1)==1&&a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e)

//printf(\

printf(\第一名是B\\n第二名是D\\n第三名是A\\n第四名是E\\n第五名是C\\n\

- 22 -

}

选做5.44 谁是最好的赛车

4名专家对4款赛车进行评论。 A说:2号赛车是最好的。 B说:4号赛车是最好的。 C说:3号不是最佳赛车。 D说:B说错了。

事实上只有一款赛车最佳,且只有一名专家说对了,其他3人都说错了。请编程输出最佳车的车号,以及哪位专家说对了。 #include int main() {

int i,j,t;

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

t=(i==2)+(i==4)+(i!=3)+(i!=4); if(t==1)break; }

printf(\号赛车是最佳赛车\\n\ if(i==2)printf(\说对了\ if(i==4)printf(\说对了\ if(i!=3)printf(\说对了\

if(i!=4) printf(\专家说得对\\n\ return 0; }

选做5.46 求小球弹跳的高度

小球从一定的高度自由落下,每次落地后反跳回原高度的一半;再落下,编写程序,输入一个高度(double类型),求它在第 10 次落地时,共经过多少米?第 10 次反弹多高? (输出结果时保留2位小数) #include \void main() { double s=0.0,h; int i; scanf(\ s=h; for(i=1;i<10;i++) { s=s+h; h=h/2; }

h=h/2;

printf(\is:%.3lf\\n\}

total is:%.3lf\\nThe tenth

选做5.47 ABC各教哪门课

A、B、C是小学老师,各教2门课,互不重复。共有如下6门课:语文、算术、政治、地理、音乐和美术。已知:

(1)政治老师和算术老师是邻居。 (2)地理老师比语文老师年龄大。 (3)B最年轻。 (4)A经常对地理老师和算术老师讲他看过的文学作品。

(5)B经常和音乐老师、语文老师一起游泳。 请编程输出A、B、C各教哪两门课。 #include int main() {

int w,s,z,d,y,m; //语文 数学 政治 地理 音乐 美术 int A=1,B=2,C=3; int a[4]={0,0,0,0},i; char c[5];

c[1]='A';c[2]='B';c[3]='C'; for(w=1;w<=3;w++) for(s=1;s<=3;s++) for(z=1;z<=3;z++) for(d=1;d<=3;d++) for(y=1;y<=3;y++) for(m=1;m<=3;m++) {

a[0]=(((z==B)||(s==B))&&(!((z==B)&&(s==B)))); a[1]=(((A==d)||(C==d))&&(B!=d));

a[2]=(((A==w))&&(((B==d)&&(C==s))||((B==s)&&(C==d))));

a[3]=(((B!=y)&&(B!=w))&&(((A==y)&&(C==w))||((A==w)&&(C==y))));

if(((a[0]+a[1]+a[2]+a[3])==4)&&((w+s+z+d+y+m)==(1+1+2+2+3+3))) {

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

- 23 -

if(w==i) printf(\语文课是%c教的\\n\

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

if(s==i) printf(\算术课是%c教的\\n\ for(i=1;i<=3;i++)

if(z==i) printf(\政治课是%c教的\\n\ for(i=1;i<=3;i++)

if(d==i) printf(\地理课是%c教的\\n\ for(i=1;i<=3;i++)

if(y==i) printf(\音乐课是%c教的\\n\ for(i=1;i<=3;i++)

if(m==i) printf(\美术课是%c教的\\n\ } } return 0; }

选做5.48 求各位数字之和等于5且能被5整除的整数

输入正整数 M 和 N(M,N 均小于 10000) ,输出 M 和 N 之间所有满足下列条件的所有整数:整数能被 5 整除且各位数字之和等于 5 。若没有满足条件的整数 , 则输出“No output\\n”。 输入: 整数区间 m,n 输出: 各位数字之和等于 5 且能被 5 整除的所有整数

#include\main()

{int i,m,n,a,b,c,p,k=0,q=1; scanf(\for(i=0;i<=n-m;i++) {p=m+i;

a=p;b=(p0-a)/10;c=(p00-b*10-a)/100; if(a+b+c==5&&p%5==0)

{printf(\}

if(k==0) printf(\}

选做5.50 分数的四则运算

在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,现在我们尝试下用C语言来实现。

输入:分数1 操作符 分数2 输出:计算结果

要求:计算结果使用分数表示,并且为最简化。例如结果为2/6,则被简化为1/3 #include #include main() {

int a,b,c,d,i,x,y; char op;

scanf(\ if(a==0||c==0) exit(0);

if(op=='+'){y=b*c+d*a;x=a*c;} if(op=='-'){y=b*c-d*a,x=a*c;} if(op=='*'){y=b*d;x=a*c;} if(op=='/'){y=b*c;x=a*d;} if(y==0&&x!=0)

{ printf(\ else if(x==0) exit(0); if(x>y) i=y; while(i>1) {

if(x%i==0&&y%i==0){x=x/i;y=y/i;continue;} i--; }

if(x/i==1)

printf(\ else

printf(\}

6.1 谁能出线

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

输出:能够出线的学生序号(0~9)。 #include #define N 10 int main() {

int a[N]; int i,max;

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

- 24 -

{

scanf(\ }

max=a[0];

for(i=0;i<=9;i++) {

if(max

max=a[i]; } }

for(i=0;i<=9;i++) {

if(max==a[i]) printf(\ }

return 0; }

6.2 统计素数的个数

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

输出:从小到大的所有素数,及个数(素数输出的时候用M来控制) 如: 输入:10 输出:2 3 5 7 4

#include #define M 1000 int main() {

int a[M]={0}; int i,j,k,n,cnt=0; scanf(\ for(i=2;i<=n;i++) {

for(j=2;j

for(k=0;k

printf(\

printf(\ return 0; }

6.3 冒泡法排序

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

编写程序,对输入的十个数按照从小到大排序 #include int main() {

int a[10]; int i,j,t;

for(i=0;i<10;i++) scanf(\ for(j=1;j<=10;j++) { for(i=0;i<10-j;i++) if(a[i]<=a[i+1]) { t=a[i];

a[i]=a[i+1]; a[i+1]=t; } printf(\ } printf(\}

6.4 插入法排序

如果一个数组中保存的元素是有序的(由小到大),向这个数组中插入一个数,使得插入后的数组元素

- 25 -


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

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

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

马上注册会员

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