实验项目一:数组

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言程序设计》实验报告

实验项目一:数组

2)将上述程序的第四行改成scanf(“%s”,&str);,重新运行上述程序,观察输出结果有什么不同,为什么?

重新运行的结果:

分析:

前者能输入字符串,而后者只能输入字符,相当于只输入了how

3)如果用%c格式输入输出字符串,程序应怎样修改?

根据用%c格式输入输出字符的特点,修改后的程序为:

#include

int main()

{int i;

char str[11]={'h','o','w','','a','r','e','','y','o','u'};

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

printf("%c",str[i]);

printf("\n");

return0;

}

3.改错

有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。

#include

#define M3

#define N4

int main()

{

int max,i,j,r,c;

r=0;c=0;

int a[M][N]={{323,94,-10,218},{3,9,10,-83},{45,16,44,-99}};

max=a[0][0];

for(i=0;i

for(j=0;j

if(a[i][j]>max)

{max=a[i][j];

r=i;

c=j;}

printf("max=%d,行=%d,列=%d\n",max,r,c);

return0;

}

4.改错

下面是用来将数组a中元素按升序排序后输出的源程序。分析源程序中存在的问题,并对源程序进行修改,使之能争取完成任务。

#include

int main()

{

int a[10]={27,13,5,32,23,3,17,43,55,39};

int i;

int sort(int[],int);

sort(a,10);

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

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

printf("\n");

return0;

}

int sort(int b[],int n)

{int i,j,t;

for(i=0;i

for(j=0;j

if(b[j]

{t=b[j];

b[j]=b[j+1];

b[j+1]=t;}

return0;

}

5.编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。)

#include

int main()

{

int a[10],i,zheng,fu,ling;

zheng=0;fu=0;ling=0;

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

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

{if(a[i]>0)zheng=zheng+1;

if(a[i]<0)fu=fu+1;

if(a[i]==0)ling=ling+1;

}

printf("正数的个数是%d\n",zheng);

printf("负数的个数是%d\n",fu);

printf("零的个数是%d\n",ling);

return0;

6.应用数组求Fabonacci数列的前40项(该数列前两项为1,以后各项均为前相邻两项之和)要求以每行8个输出。

#include

int main()

{

int f[40]={1,1},i;

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

f[i+1]=f[i]+f[i-1];

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

{if((i+1)%8==0)printf("\n");

printf("%9ld",f[i]);}

return0;

}

7.用冒泡法对20个整数排序。20个整数需要键盘键入。

#include

int main()

{

int a[20],i,j,t;

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

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

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

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

if(a[j]

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

for(j=0;j<=19;j++)printf("%3d",a[j]);

printf("\n");

return0;}

8.用选择法对20个整数排序。20个整数需要键盘键入。

#include

int main()

{

int a[20],i,j,t;

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

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

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

if(a[i]

{t=a[i];

a[i]=a[j];

a[j]=t;

}

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

printf("\n");

return0;

}

9.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。要求:

(1)数组为整型数组(10个元素)。

(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。

(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。

(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?

答:将数组a【10】扩大范围就可以,比如要输入20个数,就把数组定义成a【20】

#include

int main()

{

相关文档
最新文档