C语言数组实验题目及答案Word文档下载推荐.docx
- 文档编号:21023953
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:12
- 大小:58.84KB
C语言数组实验题目及答案Word文档下载推荐.docx
《C语言数组实验题目及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言数组实验题目及答案Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
return0;
}
分析结果
运行结果
二、程序改错题
1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。
源代码如下,程序中存在错误,请将其改正。
#include<
{
if(a[i]==s)
{flag=1;
break;
}
if(flag)
printf("
查找成功!
编号为%d的书籍的位置是%d\n"
s,i+1);
else
查找失败!
请确认书籍编号是否正确!
\n"
);
4.编写程序验证冒泡法排序
{inta[11],i,j,t;
Input10numbers:
for(i=1;
i<
11;
i++)
scanf("
%d"
&
a[i]);
=9;
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;
Thesortednumbers:
%d"
a[i]);
5.编写程序验证选择法排序
方法一:
{inta[11],i,j,k,temp;
10;
{k=i;
for(j=i+1;
if(a[j]<
a[k])k=j;
if(i!
=k)
{temp=a[i];
a[i]=a[k];
a[k]=temp;
方法二:
#defineNUM10/*参与排序的数据个数*/
{
intdata[NUM];
/*存放参与排序的所有整数*/
inti,j,minValue,temp;
/*通过键盘输入待排序的整型数列*/
\nEnter%dintegers."
NUM);
for(i=0;
i<
NUM;
i++){
scanf("
&
data[i]);
/*选择排序*/
NUM-1;
minValue=i;
for(j=i+1;
j<
j++){/*选择i~NUM-1之间的最小数值*/
if(data[j]<
data[minValue])
minValue=j;
if(minValue!
=i){/*交换*/
temp=data[i];
data[i]=data[minValue];
data[minValue]=temp;
/*输出排序后的结果*/
\nOrderinglistis:
%5d"
data[i]);
6.编写程序验证二分查找
#defineNUM10
intmain()
intvalue[NUM]={12,23,30,45,48,50,67,82,91,103};
/*非递减整型数列*/
intlow,high,mid,key;
\nEnterakey:
"
/*输入查找的数值*/
key);
/*利用二分查找在有序数列中查找key*/
low=0;
high=NUM-1;
while(low<
=high){
mid=(low+high)/2;
if(value[mid]==key)break;
if(value[mid]<
key)
low=mid+1;
else
high=mid-1;
/*输出查找结果*/
if(low<
=high)
\n%disfoundat%d."
key,mid);
/*确认break出口*/
\n%disnotfound."
key);
/*确认循环正常出口*/
7.将一个数组的值按逆序重新存放,例如,原来顺序为:
8,10,4,23,1。
要求改为:
1,23,4,10,8。
方法一
#include<
#defineN10
{
inta[N],i,j,temp;
for(i=0;
N;
for(i=0,j=N-1;
j;
i++,j--)
{temp=a[i];
a[i]=a[j];
a[j]=temp;
}
方法二:
inta[N],i,temp;
N/2;
a[i]=a[N-i-1];
/*第一个和最后一个交换,第二个和倒数第二个交换,......一直到N/2的时候,也就是数组的一半的时候*/
a[N-i-1]=temp;
return0;
8.输入n×
n阶,编程计算其两条对角线上各元素之和。
#defineN3
inta[N][N],i,j,sum1=0,sum2=0,sum=0;
printf("
请输入%d行%d列的矩阵:
N,N);
for(i=0;
for(j=0;
scanf("
a[i][j]);
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];
主对角线元素之和为%d;
\n副对角线元素之和为%d;
\n主副对角线元素之和为%d\n"
sum1,sum2,sum);
#include<
inta[N][N],i,j,n,sum=0;
请输入阶乘:
n);
=n-1;
for(j=0;
{scanf("
if(i==j||i+j==n-1)
sum+=a[i][j];
对角线的和为%d\n"
sum);
选做题
P85页-例4-1:
10名候选人参与竞选,编写程序,输入一组选举人的投票信息,统计每个候选人的得票数目及选举结果。
P87页例4-2:
编写程序统计从键盘输入一行文本中每个英文字母出现的频率。
3.模拟掷骰子游戏100次,编程统计并输出骰子的6个面各自出现的次数。
stdlib.h>
time.h>
#defineN100
ints[N];
inta,b,c,d,e,f,i;
srand(time(NULL));
s[i]=rand()%6+1;
a=b=c=d=e=f=0;
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++;
1点出现的次数为:
%d\n"
a);
2点出现的次数为:
b);
3点出现的次数为:
c);
4点出现的次数为:
d);
5点出现的次数为:
e);
6点出现的次数为:
f);
intr[6]={0};
inti;
r[rand()%6]++;
6;
%d点:
%5d次\n"
i+1,r[i]);
4.打印出以下杨辉三角形(要求打印出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
∶
//杨辉三角
inta[N][N]={0},i,j,n;
while(n<
=0)
{printf("
请输入打印的杨辉三角行数"
n;
{a[i][0]=1;
a[i][i]=1;
for(i=2;
for(j=1;
=i;
{a[i][j]=a[i-1][j-1]+a[i-1][j];
{for(j=0;
printf("
%6d"
a[i][j]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数组 实验 题目 答案