实验5数组 习题及答案 下载本文

printf(\}

(4)程序说明:下面程序打印出如下所示的杨辉三角行(打印10 行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …….

#include\void main() {

int i,j,a[10][10]={{1},{1,1}}; for(i=2;i<10;i++) {

a[i][0]=1;_ a[i][i]=1; for(j=0;j

a[i][j]=a[i-1][j]+ a[i-1][j-1]; }

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

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

printf(\ printf(\} }

3.程序设计(根据题意编写程序并上机进行调试)。

(1)编写程序完成如下功能:输入10 个数存入一维数组,然后再按逆序重新存放后

输出。

#include void main() { int a[10],i,temp; for(i=0;i<10;i++) scanf(\ for(i=0;i<10;i++) printf(\ printf(\ for(i=0;i<5;i++) { temp=a[i]; a[i]=a[9-i]; a[9-i]=temp; } for(i=0;i<10;i++) printf(\ printf(\} (2)编写程序完成如下功能:从键盘输入两个字符串ch2、 ch1,然后将字符串ch2 连接到字符串ch1 的后面,并输出连接后的字符串。

#include #include void main() { char ch1[20],ch2[10]; int i,j; scanf(\ scanf(\ j=strlen(ch1); for(i=0;i

(3)编写程序完成如下功能:现有两个已按升序排好的数组,将它们合并为一个升序排序的数组(归并排序)。

算法:两个数组合并时,可为每个数组各安排一个指针,从第一个元素开始依次比较两数组对应元素,小的取下来顺序放入新的数组,取下所指元素的指针后移,再比较,依此类推,直到其中一个数组的元素已全部放入新数组,再把另一数组余下的元素全部顺序放入新数组,归并完成。

编程并上机调试运行。

(1)用选择法对10个整数排序。10个整数用scanf函数输入。

#include void main() {

int i,j,min,temp,a[11]; printf(\ for(i=1;i<=10;i++) {

printf(\ scanf(\ }

printf(\ for(i=1;i<=10;i++) printf(\ printf(\

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

min=i;

for(j=i+1;j<=10;j++) if(a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; }

printf(\ for(i=1;i<=10;i++) printf(\ printf(\}

(2)有15个数存放在一个数组中,输入一个数,要求用对半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输入“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。

#include void main() {

int i,number,top,bott,mid,loca,a[15],flag=1,sign; char c;

printf(\ scanf(\ i=1;

while(i<15) {

scanf(\ if(a[i]>=a[i-1])

i++; else

printf(\ }

printf(\

for(i=0;i<15;i++) printf(\ printf(\ while(flag) {

printf(\ scanf(\ sign=0; top=0; bott=14;

if((numbera[14])) loca=-1;

while((!sign)&&(top<=bott)) {

mid=(bott+top)/2; if(number==a[mid]) { loca=mid; printf(\ sign=1; }

else if(number

if(!sign || loca==-1)

printf(\ printf(\ scanf(\

if(c!= 'N' || c!= 'n' || c!= 'Y' || c!= 'y') scanf(\

if(c=='N' || c=='n') flag=0; } }

(3)将两个字符串连接起来,不要用strcat函数。 #include