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

2019-04-13 19:43

依然保持有序。

定义一个数组,长度为11,初始元素为10个,按照从小到大的方式输入,然后输入一个要插入的元素,使得插入后仍然有序。 #include int main() {

int a[11]; int i,j,t,n,m;

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

{scanf(\ scanf(\

a[10]=n; m=a[0];

for(i=1;i<11;i++) if(m>=a[i]) m=a[i]; printf(\

for(j=1;j<=11;j++) {

for(i=0;i<11-j;i++) if(a[i]<=a[i+1]) {

t=a[i];

a[i]=a[i+1]; a[i+1]=t; }

if(a[i]!=m)

printf(\ }

printf(\ return 0; }

6.5 二维数组

程序定义了 4× 4 的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以n 。

例如:数组中的值为

假设n为10,则输出结果如下:(输出的数按照4位宽度来输出,即M) #include

#define M 4 int main() {

int a[M][M]; int i,j,n;

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

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

scanf(\ scanf(\ for(i=0;i<=3;i++)

for(j=0;j<=3;j++) {

if(j<=i)

a[i][j]=n*a[i][j]; }

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

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

printf(\ printf(\ }

return 0; }

6.6 在屏幕上显示杨辉三角形

杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。

其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而贾宪三角的发现就是十分精彩的一页。

杨辉三角有如下性质:

1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。

2、第n行的数字个数为n个。

3、每个数字等于上一行的左右两个数字之和。 编写程序,输入正数n, 将所有数据存储到二维数组中,并在屏幕上显示对应的杨辉三角形(注意数据之间的空格)。例如:n=5 图形如下: 1 1 1 1 2 1

1 3 3 1

1 4 6 4 1 1 5 10 10 5 1

- 26 -

#include #define M 100 int main() {

int a[M][M]; int i,j,n;

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

if(i==j||j==0) a[i][j]=1; }

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

a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<=n;i++) {

for(j=0;j<=n;j++) if(j<=i)

printf(\ printf(\ }

return 0; }

6.7 求二维数组周边元素之和

编写一个程序,求出4×5的二维数组周边元素之和。

输入:二维数组元素 输出:周边元素之和 如: 输入: 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 输出:61

#include #define M 4 int main() {

int a[M][M+1]; int i,j,sum=0; for(i=0;i<4;i++)

for(j=0;j<5;j++) {

scanf(\

if(i==0||i==3||j==0||j==4) sum+=a[i][j]; }

printf(\ return 0; }

6.8 存储并输出一个矩阵

编程,输入 n ,存储并输出如下例( n=5 )所示的 图形。 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1

#include #define M 100 int main() {

int a[M][M]; int i,j,n;

scanf(\ for(i=0;i

for(j=0;j

if(j<=i) a[i][j]=1; if(j>i) a[i][j]=j-i+1; } for(i=0;i

for(j=0;j

printf(\ printf(\ } }

6.9 巧分橘子

一家农户以果园为生,一天,父亲拿出一堆橘子,共2520个,准备分给他的6个儿子。父亲按事先写在一张纸上的数字把这堆橘子分完,每个人分到的橘子的个数都不相同。然后他说:“老大,把你分到的橘子分1/8给老二,老二拿到后,连同原来的橘子分1/7给老三,老三拿到后,连同原来的橘

- 27 -

子分1/6给老四,以此类推,最后老六拿到后,连同原来的橘子分1/3给老大,这样,你们每个人分到的橘子就一样多了。”问兄弟6人原先各分到多少只橘子。 请将兄弟6人的橘子数存储到一维数组中,并按照下列各式输出(下面只提供格式,数据不准确): x[1]=111 x[2]=222 x[3]=333 x[4]=444 x[5]=555 x[6]=666 #include void main() { int a[6],b[6],i; for(i=0;i<6;i++) { a[i]=2520/6; b[i]=8-i; }

a[0]=a[0]-(a[5]/(b[5]-1)); for(i=5;i>=1;i--) { a[i]=a[i]+(a[i]/(b[i]-1))-(a[i-1]/(b[i-1]-1)); }

a[0]=a[0]*b[0]/(b[0]-1); for(i=0;i<6;i++) printf(\}

c[i]=a[i]; }

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

for(i=1; i<11-j; i++) if(a[i]>=a[i+1]) {

t=a[i];

a[i]=a[i+1]; a[i+1]=t; }

for(m=1; m<11; m++) for(i=1; i<11; i++) if(c[m]==a[i]) {

printf(\ break; } printf(\ return 0; }

选做题 6.1 大家一起做游戏

幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。

每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。

现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋

6.10 给数组中的元素按顺序编号 友。 对数组 a[10] 中的十个整数从小到大进行输入:小朋友的个数(<=50),要被练习的数字 连续编号,输出各个元素的编号。要求不能改变数输出:最终被留下的小朋友的序号 组 a 中元素的顺序,且相同的整数要具有相同的编说明:如“要被练习的数字”是5,则每次数到5号。例如数组是: A=(5,3,4,7,3,5,6,8,9,10) 则输出为: 的同学要退出该游戏 (4,1,3,7,1,4,6,8,9,10) #include #include void main() int main() { { int N,n,i,s=0,a; int a[11],c[11]; scanf(\ int i,j,t,m; for(i=2;i<=N;i++) for(i=1; i<11; i++) s=(s+n)%i; { a=s+1; scanf(\ printf(\

- 28 -

}

选做题6.2 猜数字

有如下一组数字,其中每个数字都在 1 ~ 63 之间, 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63

2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 63

4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 63

8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 63

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。

输入:程序的输入是一串以空白符分开的数字,当输入 0 时表示输入结束。 输出:输出猜到的数字。 #include #include void main() {

int i,sum=0; do {

scanf(\

sum=sum+pow(2,i-1); }while(i!=0);

printf(\}

选做题 6.3 小蜜蜂

一只小蜜蜂在如下图所示的蜂窝上爬行。它爬行时,只能从一个格爬到相邻的大号格子中。例如,从 1 号格子可以爬到 2 号或者 3 号格子,从 2 号则可以爬到 3 号或者 4 号格子。

请问从一个格子 a 爬到一个格子 b 一共有多少种可行的路线。 输入:分别是起始点 a 和终止点 b 的编号。( a 和 b 在 1~100 之间,且 a

void main() {

int a,b,x,i; int f[100]; f[1]=1;f[2]=2;

scanf(\ x=b-a; if(x==1)

printf(\ if(x==2)

printf(\ if(x>=3) {

for(i=3;i<=x;i++) f[i]=f[i-1]+f[i-2]; printf(\ } }

选做题 6.4 数制转换

我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。

这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。 程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 2~36 之间。对于十以下的数字,用 0~9 表示,而十以上的数字,则使用大写的 A~Z 表示。

求出分别在 2~36 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。信息的格式见测试用例。 #define N 50

#include\ #include\ int main() { char a[N],b[N],d[N],e[N],d0[N]; int i,j,o,r,g,h,w,t,l,k,max1,max2; double

p[N],q[N]={0},u[N],v[N]={0},c[N],f[N],m,n; for(i=0;i

- 29 -

{ scanf(\ if(a[i]=='\\x20') { l=i; break; } } gets(d); if(d[0]!='\\x20') {k=strlen(d); goto C;} if(d[0]=='\\x20') { strcpy(d0,d); g=strlen(d0); for(i=0;d0[i]=='\\x20';i++); j=i; for(i=0;i

C:for(i=0;i='\\x30') c[i]=b[i]-'0'; if(b[i]<='\\x5A'&&b[i]>='\\x41') c[i]=b[i]-'7'; } for(i=0;i

if(e[i]<='\\x39'&&e[i]>='\\x30') f[i]=e[i]-'0'; if(e[i]<='\\x5A'&&e[i]>='\\x41') f[i]=e[i]-'7'; } max1=c[0]; for(i=1;i

if(max1==0) max1=1; max2=f[0]; for(i=1;i

if(max2==0) max2=1; for(i=max1+1;i<=36;i++) {

for(j=0;j

for(i=max2+1;i<=36;i++) { for(j=0;j

for(g=max1+1;g<=36;g++) for(h=max2+1;h<=36;h++) { if(q[g]==v[h]) { w=g,t=h; goto out; } } for(i=0;i

- 30 -


C语言 - 中国石油大学(华东)c语言上机题及答案大全- 副本(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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