数组习题解答Word文件下载.docx

上传人:b****6 文档编号:19233551 上传时间:2023-01-04 格式:DOCX 页数:24 大小:20.62KB
下载 相关 举报
数组习题解答Word文件下载.docx_第1页
第1页 / 共24页
数组习题解答Word文件下载.docx_第2页
第2页 / 共24页
数组习题解答Word文件下载.docx_第3页
第3页 / 共24页
数组习题解答Word文件下载.docx_第4页
第4页 / 共24页
数组习题解答Word文件下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数组习题解答Word文件下载.docx

《数组习题解答Word文件下载.docx》由会员分享,可在线阅读,更多相关《数组习题解答Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。

数组习题解答Word文件下载.docx

d'

};

若执行:

printf("

%s"

ch);

结果为(B)。

A.‘abc’B.abcC.abcdD.abc\0d

charc='

⑸对数组进行初始化charcarr[]={'

s'

t'

u'

e'

n'

},barr[]="

student"

;

则正确的是(D)。

A.carr与barr长度相同B.carr比barr

C.carr与barr相同D.carr比barr短

charcarr[]={'

2.阅读下列程序,写出运行结果。

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

4;

for(j=0;

j<

i;

j++)

if(d[i][j]>

d[j][i])

d[j][i]=d[i][j];

{

\n"

if(j>

=i)

printf("

%6d"

d[i][j]);

//显示主对角线以上的元素

else

%6c"

'

}

putchar('

\n'

运行结果:

1544

678

23

4

⑵若输入十进制数3291时,下列程序输出为:

6333

inti,d,m,n;

chars[8];

scanf("

%d"

&

n);

i=0;

//存储字符数组下标

do

m=n/8;

d=n%8;

s[i]='

0'

+d;

//余数转换为数字字符

i++;

n=m;

//商作为下一轮行循环操作的被除数

}while(n!

=0);

//商不为0,继续循环

for(i--;

i>

=0;

i--)

putchar(s[i]);

3.程序填空。

⑴从键盘输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。

intdata,temp,k;

staticinta[9]={-10,2,4,8,10,15,25,50};

\nEnteradata:

"

data);

a[8]=data;

for(k=8;

k>

k--)

if(a[k]<

a[k-1])

{

temp=a[k];

a[k]=a[k-1];

a[k-1]=data;

}

else

break;

for(k=0;

k<

=8;

k++)

%7d"

a[k]);

注:

原程序的代码有误,其核心部分有元素交换操作,这对已按升序排列各元素的数组,在插入一个元素时是没有必要的。

完整的代码如下:

intdata,k;

if(data>

a[k-1]||k==0)

a[k]=data;

运行该程序:

Enteradata:

9

-10248910152550

⑵从键盘输入一串英文字符(不含空格与其他字符),统计每个字符的个数,并输出字母及相应的个数。

inti=0,c[52]={0},m=0;

charstr[80];

Inputastring:

%s"

str);

while(str[i])

if(str[i]>

='

&

&

str[i]<

Z'

c[str[i]-'

]++;

z'

+26]++;

26;

if(c[i])

if(m%8==0)

putchar('

m++;

printf("

%c:

%-d"

i+'

c[i]);

if(c[i+26])

c[i+26]);

4.求一组成绩的平均分数以及高于平均分的成绩,设给定的成绩为90,85,92,77,80,62。

省略数据输入,用随机函数产生10个数,求其平均值。

stdlib.h>

time.h>

inta[10],i,sum=0;

doubleaverage;

srand((unsigned)time(NULL));

10;

a[i]=rand()%100;

sum+=a[i];

average=sum/10;

average=%lf\n"

average);

运行:

95268883573133558230

average=58.000000

5.编写程序,输入一组整数,将它们排序后由小到大输出。

[起泡法]

思路:

两个数比较,小者前移,大者后移。

intmain()

inta[10],i,j,t;

srand((unsigned)time(NULL));

//初始化rand()函数

//用随机数为数组元素赋值

Beforesorted:

for(j=0;

9;

for(i=0;

10-j;

if(a[i]>

a[i+1])

{

t=a[i];

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

a[i+1]=t;

}

Aftersorted:

return0;

程序运行后输出:

211478573618285245

381421455257617882

[选择法]

用一个变量k保存当前最小元素的下标,不进行交换,直到完成一次内循环的比较后,把a(k)交换到希望的位置a(i):

①令k=0,a(k)与a

(1)比较,若a(k)>

a

(1),令k=1,小者的下标存放在k中;

②a(k)又与a

(2),a(3),……,直到a(10),重复①的工作,结束后,实现10个数中的最小者存放在a(k)中。

③a

(1)与a(k)交换,把最小者存放在a

(1)中。

④分别令k=1,2,3,….,9重复①②③的操作。

inta[10],i,j,t,k;

k=i;

for(j=i+1;

if(a[k]>

a[j])k=j;

t=a[i];

a[i]=a[k];

a[k]=t;

}

6.从键盘输入一个4×

4整数矩阵,以主对角线为对称轴,将左下角元素中较大元素代替右上角对应元素,并将右上角元素(含对角线元素)输出。

本题与2题的操作相同。

intd[4][4],i,j;

d[i][j]=rand()%100;

putchar('

7.通过键盘给3×

4的二维数组输入数据,然后分别按行和列输出数组元素。

intd[3][4],i,j;

3;

}

8.编写程序,将两个字符串连接起来,不要用strcat函数。

chara[80],b[40];

inti,j;

a);

b);

while(a[i])i++;

//搜索串尾元素下标

b[j];

j++,i++)

a[i]=b[j];

a[i]='

puts(a);

9.输入一行字符串,统计该字符串中字符对ab的个数。

chara[80];

inti,n=0;

a[i];

if(a[i]=='

a[i+1]=='

n++;

ab_number=%d\n"

n);

10.从键盘输入10个字符串,找出一最长的字符串。

chara[5][80];

inti,j,n,max=0;

scanf("

for(i=0,j=0;

i++,j=0)

while(a[i][j])j++;

if(j>

max)

max=j;

n=i;

Max_string:

%s\n"

a[n]);

11.已知数组a中有m个按升序排列的元素,数组b中有n个按降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。

voidrisesort(inta[],intn)//升序排序

inti,j,k,t;

n;

voiddropsort(inta[],intn)//降序排序

if(a[k]<

voiddisp(inta[],intn)//显示数组中的各元素

voidf(inta[],intn)

inta[10],b[10],c[20],i,j,k;

f(a,10);

risesort(a,10);

disp(a,10);

f(b,10);

dropsort(b,10);

disp(b,10);

for(i=9,j=0,k=0;

20;

)//i,j,k分别为数组a,b,c的下标

if(a[i]>

b[j]&

i!

=-1&

j!

=10)

c[k++]=a[i--];

elseif(a[i]==b[i])

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

elseif(j!

elseif(i!

=-1)

disp(c,20);

实验七数组

2.填空

⑴以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并在c数组中。

inta[10]={1,2,5,8,9,10},an=5;

intb[10]={1,3,4,8,12,18},bn=5;

inti,j,k,c[20],max=9999;

a[an+1]=b[bn+1]=max;

i=j=k=0;

while((a[i]!

=max)||(b[j]!

=max))

if(a[i]<

b[j])

c[k]=a[i];

k++;

i++;

else

c[k]=b[j];

j++;

k;

i++)printf("

%4d"

⑵以下程序以每行输出8个数据的形式输出a数组。

inta[50],i;

//for(i=0;

50;

i++)scanf("

a[i]);

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

if(i%8==0)printf("

%3d"

⑶以下程序将数组中的数据按逆序存放。

#defineSIZE12

inta[SIZE],i,j,t;

SIZE;

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

j=SIZE-1;

while(i<

j)

a[i]=a[j];

a[j]=t;

j--;

⑷假设a数组中的数按由小到大的顺序存放,以下程序把a数组中相同的数删得只剩下一个,然后以每行5个数的形式输出a数组中的数,请填空。

#defineMAX30

inta[MAX],i,j,k,t,n;

MAX;

i++)//为各元素赋值

t=rand()%100;

a[i++]=t;

a[i++]=t;

a[i]=t;

%3d%3d%3d"

a[i-1],a[i-1],a[i]);

MAX-1;

i++)//排序

if(k!

{t=a[i];

n=i=MAX-1;

while(i>

0)

if(a[i]==a[i-1])//删除相同元素

for(j=i;

=n;

j++)a[j-1]=a[j];

n--;

//总元素个数减1

i--;

if(i%5==0)printf("

3.编程题。

⑴用筛法求2-100以内的素数。

inti,j,k=0;

inta

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

当前位置:首页 > 表格模板 > 合同协议

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

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