C语言数组实验题目及答案.docx

上传人:b****5 文档编号:7890173 上传时间:2023-01-27 格式:DOCX 页数:12 大小:58.84KB
下载 相关 举报
C语言数组实验题目及答案.docx_第1页
第1页 / 共12页
C语言数组实验题目及答案.docx_第2页
第2页 / 共12页
C语言数组实验题目及答案.docx_第3页
第3页 / 共12页
C语言数组实验题目及答案.docx_第4页
第4页 / 共12页
C语言数组实验题目及答案.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C语言数组实验题目及答案.docx

《C语言数组实验题目及答案.docx》由会员分享,可在线阅读,更多相关《C语言数组实验题目及答案.docx(12页珍藏版)》请在冰豆网上搜索。

C语言数组实验题目及答案.docx

C语言数组实验题目及答案

C语言-数组-实验题目及答案

实验六数组程序设计

【实验目的】

1、掌握使用一维数组编程方法

2、掌握使用二维数组进行程序设计

【实验内容】

一、上机验证程序,并分析结果

要求:

读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。

 1、#include

intmain()

{inta[]={1,2,3,4,5},i,j,s=0;

j=1;

for(i=4;i>=0;i--)

{

s=s+a[i]*j;

j=j*10;

}

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

return0;

}

分析结果

 

运行结果

 

 

二、程序改错题

1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。

源代码如下,程序中存在错误,请将其改正。

#include

{

if(a[i]==s)

{flag=1;break;

}

}

if(flag)

printf("查找成功!

编号为%d的书籍的位置是%d\n",s,i+1);

else

printf("查找失败!

请确认书籍编号是否正确!

\n");

return0;

}

4.编写程序验证冒泡法排序

#include

intmain()

{inta[11],i,j,t;

printf("Input10numbers:

\n");

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

scanf("%d",&a[i]);

printf("\n");

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

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

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

printf("Thesortednumbers:

\n");

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

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

return0;

}

5.编写程序验证选择法排序

方法一:

#include

intmain()

{inta[11],i,j,k,temp;

printf("Input10numbers:

\n");

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

scanf("%d",&a[i]);

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

{k=i;

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

if(a[j]

if(i!

=k)

{temp=a[i];a[i]=a[k];a[k]=temp;}

}

printf("Thesortednumbers:

\n");

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

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

return0;

}

方法二:

#include

#defineNUM10/*参与排序的数据个数*/

intmain()

{

intdata[NUM];/*存放参与排序的所有整数*/

inti,j,minValue,temp;

/*通过键盘输入待排序的整型数列*/

printf("\nEnter%dintegers.",NUM);

for(i=0;i

scanf("%d",&data[i]);

}

/*选择排序*/

for(i=0;i

minValue=i;

for(j=i+1;j

if(data[j]

minValue=j;

}

if(minValue!

=i){/*交换*/

temp=data[i];

data[i]=data[minValue];

data[minValue]=temp;

}

}

/*输出排序后的结果*/

printf("\nOrderinglistis:

\n");

for(i=0;i

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

}

return0;

}

6.编写程序验证二分查找

#include

#defineNUM10

intmain()

{

intvalue[NUM]={12,23,30,45,48,50,67,82,91,103};/*非递减整型数列*/

intlow,high,mid,key;

printf("\nEnterakey:

");/*输入查找的数值*/

scanf("%d",&key);

/*利用二分查找在有序数列中查找key*/

low=0;high=NUM-1;

while(low<=high){

mid=(low+high)/2;

if(value[mid]==key)break;

if(value[mid]

low=mid+1;

else

high=mid-1;

}

/*输出查找结果*/

if(low<=high)

printf("\n%disfoundat%d.",key,mid);/*确认break出口*/

else

printf("\n%disnotfound.",key);/*确认循环正常出口*/

return0;

}

7.将一个数组的值按逆序重新存放,例如,原来顺序为:

8,10,4,23,1。

要求改为:

1,23,4,10,8。

方法一

#include

#defineN10

intmain()

{

inta[N],i,j,temp;

for(i=0;i

scanf("%d",&a[i]);

for(i=0,j=N-1;i

{temp=a[i];

a[i]=a[j];

a[j]=temp;

}

for(i=0;i

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

printf("\n");

return0;

}

方法二:

#include

#defineN10

intmain()

{

inta[N],i,temp;

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

{temp=a[i];

a[i]=a[N-i-1];/*第一个和最后一个交换,第二个和倒数第二个交换,......一直到N/2的时候,也就是数组的一半的时候*/

a[N-i-1]=temp;

}

for(i=0;i

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

printf("\n");

return0;

}

8.输入n×n阶,编程计算其两条对角线上各元素之和。

方法一:

#include

#defineN3

intmain()

{

inta[N][N],i,j,sum1=0,sum2=0,sum=0;

printf("请输入%d行%d列的矩阵:

\n",N,N);

for(i=0;i

{

for(j=0;j

{

scanf("%d",&a[i][j]);

}

}

for(i=0;i

{

sum1=sum1+a[i][i];

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

sum=sum1+sum2;

}

if(N%2==1)

sum=sum-a[N/2][N/2];

printf("主对角线元素之和为%d;\n副对角线元素之和为%d;\n主副对角线元素之和为%d\n",sum1,sum2,sum);

}

方法二:

#include

#defineN10

intmain()

{

inta[N][N],i,j,n,sum=0;

printf("请输入阶乘:

");

scanf("%d",&n);

for(i=0;i<=n-1;i++)

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

{scanf("%d",&a[i][j]);

if(i==j||i+j==n-1)

sum+=a[i][j];

}

printf("对角线的和为%d\n",sum);

}

选做题

P85页-例4-1:

10名候选人参与竞选,编写程序,输入一组选举人的投票信息,统计每个候选人的得票数目及选举结果。

P87页例4-2:

编写程序统计从键盘输入一行文本中每个英文字母出现的频率。

3.模拟掷骰子游戏100次,编程统计并输出骰子的6个面各自出现的次数。

方法一:

#include

#include

#include

#defineN100

intmain()

{

ints[N];

inta,b,c,d,e,f,i;

srand(time(NULL));

for(i=0;i

s[i]=rand()%6+1;

a=b=c=d=e=f=0;

for(i=0;i

{

if(s[i]==1)

a++;

elseif(s[i]==2)

b++;

elseif(s[i]==3)

c++;

elseif(s[i]==4)

d++;

elseif(s[i]==5)

e++;

elseif(s[i]==6)

f++;

}

printf("1点出现的次数为:

%d\n",a);

printf("2点出现的次数为:

%d\n",b);

printf("3点出现的次数为:

%d\n",c);

printf("4点出现的次数为:

%d\n",d);

printf("5点出现的次数为:

%d\n",e);

printf("6点出现的次数为:

%d\n",f);

}

方法二:

#include

#include

#include

#defineN100

intmain()

{

intr[6]={0};

inti;

srand(time(NULL));

for(i=0;i

r[rand()%6]++;

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

printf("%d点:

%5d次\n",i+1,r[i]);

return0;

}

4.打印出以下杨辉三角形(要求打印出10行)。

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10 10  5  1

//杨辉三角

#include

#defineN100

intmain()

{

inta[N][N]={0},i,j,n;

while(n<=0)

{printf("请输入打印的杨辉三角行数");

scanf("%d",&n);}

for(i=0;i

{a[i][0]=1;a[i][i]=1;}

for(i=2;i

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

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

for(i=0;i

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

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

printf("\n");}

}

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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