编写程序.docx

上传人:b****9 文档编号:25719668 上传时间:2023-06-11 格式:DOCX 页数:25 大小:21.89KB
下载 相关 举报
编写程序.docx_第1页
第1页 / 共25页
编写程序.docx_第2页
第2页 / 共25页
编写程序.docx_第3页
第3页 / 共25页
编写程序.docx_第4页
第4页 / 共25页
编写程序.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

编写程序.docx

《编写程序.docx》由会员分享,可在线阅读,更多相关《编写程序.docx(25页珍藏版)》请在冰豆网上搜索。

编写程序.docx

编写程序

习题七

一、单选题

7-1.以下程序的输出结果是__B__。

main()

{

intn[2]={0},i,j,k=2;

for(i=0;i

for(j=0;j

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

A.不确定的值B.3C.2D.1

7-2.以下程序的输出结果是_B___。

main()

{

inti,k,a[10],p[3];

k=5;

for(i=0;i<10;i++)a[i]=i;

for(i=0;i<3;i++)p[i]=a[i*(i+1)];

for(i=0;i<3;i++)k+=p[i]*2;

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

}

A.20B.21C.22D.23

7-3.以下正确的数组定义语句是_A___。

A.inty[1][4]={1,2,3,4,5};

B.floatx[3][]={{1},{2},{3}};

C.longs[2][3]={{1},{1,2},{1,2,3}};

D.doublet[][3]={0};

7-4.若有说明:

inta[][4];则a[i][j]前有__B__个元素。

A.j*4+iB.i*4+jC.i*4+j-1D.i*4+j+1

7-5.以下程序的输出结果是_C___。

main()

{

intm[3][3]={{1},{2},{3}};

intn[3][3]={1,2,3}

printf("%d\n",m[1][0]+n[0][0]);

printf("%d\n",m[0][1]+n[1][0]);

}

A.0B.2C.3D.1

0302

7-6.以下程序的输出结果是_C___。

main()

{

inti,x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)printf("%d,",x[i][2-i]);

}

A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,

7-7.下列程序__B__(每行前的数字表示行号)。

1main()

2{floata[10]={0.0};inti;

3for(i=0;i<3;i++)scanf("%d",&a[i]);

4for(i=1;i<10;i++)a[0]=a[0]+a[i];

5printf("%f\n",a[0]);

}

A.没有错误B.第2行有错C.第3行有错D.第5行有错

7-8.以下程序段的功能是__A__。

main()

{

intj,k,e,t,a[]={4,0,6,2,64,1};

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

{t=j;

for(k=j;k<6;k++)if(a[k]>a[t])t=k;

e=a[t];a[t]=a[j];a[j]=e;}

for(k=0;k<6;k++)

printf("%5d",a[k]);

}

A.对数组进行气泡法排序(升序)B.对数组进行气泡法排序(降序)

C.对数组进行选择法排序(升序)B.对数组进行选择法排序(降序)

二、填空题01123

7-9.以下程序的输出结果是。

58132134

main()5589144233377

{610987159725844181

main()

{

intarr[20],i;

arr[0]=0;arr[1]=1;

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

arr[i]=arr[i-2]+arr[i-1];

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

{if(i%5==0)printf("\n");

printf("%10d",arr[i]);}

}

7-10.以下程序的功能:

把a数组的行和列元素互换后存入b数组。

请填空使程序正确。

main()

{

inti,j,a[2][3]={1,2,3,4,5,6},b[3][2];

___printf(“arraya:

\n”)__;

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

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

printf("%5d",a[i][j]);

____b[j][i]=a[i][j]_____;

}

printf("\n");}

for(i=0;_i<=2___;i++){

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

printf("%5d",b[i][j]);

printf("\n");}

}

7-11.以下程序的功能:

输入30个人的年龄,统计18岁、19岁、……、25岁各有多少人。

填空,使程序正确。

main()

{

inti,n,age,a[8]={0};

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

scanf("%d",&age);

_a[age-18]++__________;

___________;

}

printf("age---number\n");

for(_i=0__;__i<=25____;i++)

printf("%5d%6d\n",i+8,a[i]);

}

7-12.以下程序的功能:

在给定数组中查找某个数,若找到,则输出该数在数组中的位置,否则输出"cannotfound!

"。

填空,使程序正确。

main()

{

inti,n,a[8]={25,21,57,34,12,9,4,44};

scanf("%d",&n);

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

if(n==a[i]){

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

_break___;

}

if(_i>=8___)printf("cannotfound!

\n");

}

7-13.以下程序的功能:

把两个按升序排列的数组合并成一个按升序排列的数组。

填空,使程序正确。

main()

{

inti=0,j=0,k=0,a[3]={5,9,19},b[5]={12,24,26,37,48},c[10];

while(i<3&&j<5)

if(_a[i]>b[j])__){c[k]=b[j];k++;j++;}

else{c[k]=a[i];k++;i++;}

while(_i<3___){c[k]=a[i];k++;i++;}

while(_j<5___){c[k]=b[j];k++;j++;}

for(i=0;i

}

7-14.求出如下所示矩阵中各行元素之和,并以矩阵形式输出原矩阵及相应行元素之和。

填空,使程序正确。

356

214

871

main()

{

inti,j;

staticinta[3][4]={{3,5,6,0},{2,1,4,0},{8,7,1,0}};

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

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

a[i][3]+=__a[i][j]___;

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

for(_(j=1_;_j<=4___;_j++____){

printf("%3d",a[i][j]);

if(__j%4==0___)printf(_”\n”____);

}

}

三、编程题

7-15.若题7-14要求二维数组两条对角线元素值的和,应如何修改该程序?

#include

#defineN5

main()

{inta[N][N],i,j,s=0;

for(i=0;i

{for(j=0;j

{a[i][j]=random(90)+10;

printf("%4d",a[i][j]);

printf("\n");

}

for(i=0;i

s=s+a[i][i]+a[i][N-i-1];

printf("s=%d\n",s);

printf("s=%d\n",s);

}

7-16.编写程序,定义一个数组,分别赋予从2开始的30个偶数,然后按顺序每5个元素求出一个平均值,并放在该数组的末尾。

#include

#defineN30voidmain()

{

intscore[N];

floataver[N],temp=0;

inti,j,n;for(i=1,j=0;i<=30;i++)

{

if(i%2==0)

{

score[j]=i;

printf("%d",score[j]);j++;

}

}

n=j;

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

{

temp+=(float)score[i-1];

if(i%5==0)

{

aver[j]=temp/5;

temp=(float)score[i-1];j++;

}

}

printf("\n平均分为:

\n");

for(i=0;i

{

printf("%.2f",aver[i]);

}

}

7-18.编写程序,产生30个随机数到数组中,任意指定位置k,从第k个数开始依次后移3个位置。

输出移动前后的数组。

#include

#include

#defineN30

intmain()

{

inti,j,k,a[30],s;

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

{

a[i]=rand()%90+10;

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

}

printf("\n");

scanf("%d",&k);

for(i=30-1;i>=k;i--)

a[i]=a[i-3];

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

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

printf("\n");

}

7-19.编写程序,产生30个随机数到数组中,删除其中的最大值,输出删除前后的数组。

#include

#include

#include

constintM=30;//控制数组大小

constintN=100;//控制随机数大小范围在0-100之内

intmain()

{

srand(time(0));//产生随机数种子

intrandArray[M]={0};

inti=0;

for(i=0;i

{

randArray[i]=rand()%N+1;

}

for(i=0;i

{

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

}

intmax=randArray[0];

intnum=0;

for(i=1;i

{

if(randArray[i]>max)

{

max=randArray[i];

num=i;

}

}

inttemp=0;

for(i=num;i

{

randArray[i]=randArray[i+1];

}

printf("\nThemaxnumberis%d!

\n",max);//输出最大的数

for(i=0;i

{

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

}

printf("\n");

return0;

}

7-20.编写程序,输入任意10进制4位正整数,将其化成二进制数。

#include

main()

{intj,k=0,a[16]={0},s;

scanf(“%d”,&s);/*输入待转化的10进制4位正整数s*/

while(s>0)/*按”除二取余”得到各位二进制数a[k]*/

{a[k]=s%2;k++;

s=s/2;}

for(j=15;j>=0;j--)/*

按倒排方式输出二进制数的各位数字

printf(“%2d”,a[j]);

}

7-21.编写程序,产生30个50以内的随机整数到5行6列数组中,输出那些在行和列上均为最小的元素。

#include

#includemain()

{

inta[5][6]={0};

inti,j,min[5][2];

srand((unsigned)time(NULL));

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

{

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

{

a[i][j]=rand()%50;

printf("%-4d",a[i][j]);

}

printf("\n");

}

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

{

min[i][0]=a[i][j];

min[i][1]=0;

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

if(min[i][0]>a[i][j])

{

min[i][0]=a[i][j];

min[i][1]=j;

}

}

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

{

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

if(a[j][min[i][1]]

{

min[i][1]=-1;

break;

}

if(min[i][1]!

=-1)

printf("第%d行第%d列:

%d\n",i+1,min[i][1]+1,min[i][0]);

}

return0;

}

7-22.编写程序,产生30个[10,100]中的随机整数到5行7列数组a的前6列中,求每行元素值的和,并把和值记录在各行的最后一个元素,如:

a[2][6]存放的是2行的和。

然后将和值最大的行与首行对调。

#include

main()

{inti,j,p,q,a[5][7],f;

for(i=0;i<5;i++)/*产生a数组*/

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

a[i][j]=rand()%91+10;

for(i=0;i<5;i++)/*产生i行的和并存放在a[i][6]*/

{a[i][6]=0;

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

a[i][6]+=a[i][j];}

for(i=0;i<5;i++)/*输出a数组*/

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

printf(“%5d”,a[i][j]);

printf(“n”);}

p=0;

for(i=1;i<5;i++)/*找行和最大的行p*/

if(a[i][6]>a[p][6])p=i;

for(j=0;j<7;j++)/*0行与p行交换位置*/

{q=a[0][j];a[0][j]=a[p][j];a[p][j]=q;}

for(i=0;i<5;i++)/*输出交换后的a数组*/

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

printf(“%5d”,a[i][j]);

printf(“n”);}

}

7-23.编写程序,产生30个[1,100]中的随机整数到5行6列数组中,任意输入一个正整数k,输出数组中与k大小相差5以内的所有元素。

#include

#include

Intmain()

{inti,j,k,a[5][6];

for(i=0;i<5;i++)/*产生a数组*/

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

a[i][j]=rand()%100+1;

for(i=0;i<5;i++)/*输出a数组*/

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

printf(“%5d”,a[i][j]);

printf(“\n”);}

scanf(“%d”,&k);for(i=0;i<5;i++)/*输出与k的差小于5的数组元素*/

for(j=0;j<6;j++)if(abs(k-

a[i][j])<5)printf(“%5d”,a[i][j]);

printf(“n”);

}

7-24.编写程序,产生30个[1,100]中的随机整数到5行6列数组中,按升序重新排序,并按列的顺序存放到另一个数组中。

输出排序前后的情况。

#include

#include

intmain()

{

inti,j,t,k=0,a[5][6],b[5][6],c[30];

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

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

c[k++]=a[i][j]=rand()%100+1;

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

{

k=i;

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

if(c[k]>c[j])k=j;

if(k!

=i){t=c[k];c[k]=c[i];c[i]=t;}

}

k=0;

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

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

b[i][j]=c[k++];

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

{

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

printf("%5d",a[i][j]);

printf("\n");

}

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

{

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

printf("%5d",b[i][j]);

printf("\n");

}

}

7-25.编写程序,产生30个[1,100]中的随机整数到5行6列数组中,求其中最大值和最小值,并把最大值元素与右上角元素对调,把最小值元素与左下角元素对调。

输出重排前后的情况。

习题八

一、单选题

8-1.对以下程序从第一列开始输入数据:

2473↙,程序的输出结果是A____。

#include"stdio.h"

main()

{

intc;

while((c=getchar())!

='\n'){

switch(c-'2'){

case0:

case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+3);

default:

putchar(c+2);

}

}

}

A.668977B.668966C.66778777D.6688766

8-2.能正确进行字符串赋值的是_D___。

A.chars[5]={'a','e','i','o','u'};B.chars[5];s="good";

C.chars[5]="abcd";D.chars[5];s[]="good";

8-3.不能正确为字符数组输入数据的是__A__。

A.chars[5];scanf("%s",&s);B.chars[5];scanf("%s",s);

C.chars[5];scanf("%s",&s[0]);D.chars[5];gets(s);

8-4.若有chara[80],b[80];则正确的是_D___。

A.puts(a,b);B.printf("%s,%s",a[],b[]);

C.putchar(a,b);D.puts(a);puts(b);

8-5.以下程序的输出是_A___。

main()

{

chara[2][5]={"6937"',"8254"};

inti,j,s=0;

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

for(j=0;a[i][j]>'0'&&a[i][j]<='9';j+=2)

s=10*s+a[i][j]-'0';

printf("s=%d\n",s);

}

A.6385B.69825C.63825D.693825

二、填空题

8-6.以下程序的输出是__fi___。

main()

{

chara[3][4]={"abc","efg","hij"};

intk;

for(k=1;k<3;k++)putchar(a[k][1]);

}

8-7.以下程序的输出是GDABC。

#include"string.h"

main()

{

charb[30];

strcpy(b,"GH");

strcpy(&b[1],"DEF");

strcpy(&b[2],"ABC");

puts(b);

}

8-8.以下程序的输出是__ahAMa____。

(□表示空格,↙表示回车)

#include"stdio.h"

main()

{

chara[80],c='a';intj=0;

scanf("%s",a);

while(a[j]!

='\0'){

if(a[j]==c)a[j]=a[j]-32;

elseif(a[j]==c-32)a[j]=a[j]+32;

j++;

}

puts(a);

}

输入:

AhaMA□Aha↙

8-9.以下程序的输出是_LBLMNP__。

#include"string.h"

main()

{

chara[80]="AB",b[80]="LMNP";

intj=0;

strcat(a,b);

while(a[j++]!

='\0')b[j]=a[j];

puts(b);

}

8-10.以下程序的功能:

从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。

请填空。

#include"ctype.h"

#include"stdio.h"

main()

{

charstr[81];

inti;

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

str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]=___’\0’___;

i=0;

while(str[i])putchar(str[__i++__]);

}

8-11.以下程序的功能:

输入10个字符串,找出每个字符串的最大字符,并依次存入一维数组中,然后输出该一维数组。

填空

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1