实验七数组程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握数组的定义、赋值和输入输出的方法。
2、学习用数组实现相关的算法(特别是排序算法)。
3、掌握C语言中字符数组和字符串处理函数的使用。
三、实验内容:说明:前四题为必做题目,后两题为选做题目。
1、下列程序的功能是:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。
#include <stdio.h>void main( ){ int i,n,a[10],avg;for(i=0;i<n;i++)scanf(“%d”,a[i]);for(i=0;i<n;i++){ if(i%3==0) printf(“\n”);printf(“%d ”,a[i]);}for(i=0;i<10;i++)avg+=a[i];printf(“\navg=%f\n”,avg);}实验步骤与过程:#include <stdio.h>void main( ){ int i,a[10];float avg=0;printf("欢迎请输入10个整数:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++){ if(i%3==0) printf("\n");printf("%d ",a[i]);}for(i=0;i<10;i++)avg+=a[i];avg=avg/10;printf("\navg=%f\n",avg);}实验调试记录:--------------------Configuration: 71ext - Win32 Debug--------------------Compiling...71ext.cLinking...71ext.exe - 0 error(s), 0 warning(s)参考答案:2、写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。
(实验指导书P147)实验步骤与过程:/*ex7_1.cpp*/#include<stdio.h>void sort1(int s[],int n){int i,j;int t;for(i=0;i<10;i++)for(j=0;j<10;j++)if(s[j]<s[j-1]){t=s[j-1];s[j-1]=s[j];s[j]=t;}}void main(){int i,a[10];printf("请输入10个整数:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sort1(a,10);printf("排序后的输出为:\n");for(i=0;i<10;i++)printf("%d",a[i]);}实验调试记录:--------------------Configuration: 72ext - Win32 Debug--------------------Compiling...72ext.cLinking...72ext.exe - 0 error(s), 0 warning(s)参考答案:3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都是一样的字符串。
(实验指导书P153)实验步骤与过程:#include<stdio.h>#include<string.h>int huiwen(char str[]){int i,j,len,flag=1;len=strlen(str);for(i=0,j=len-1;i<=j;i++,j--);if(str[i]!=str[j]){if(str[i]>128&&str[j]>128){if(str[i]==str[i-1]&&str[i+1]==str[j]){i++;j--;}else flag=0;}else flag=0;}return flag;}void main(){char str[50];printf("请输入一字符串 ");gets(str);if(huiwen(str))printf("该字符串是回文\n");elseprintf("该字符串不是回文\n");}实验调试记录:--------------------Configuration: 2 - Win32 Debug-------------------- Compiling...2.cppLinking...2.exe - 0 error(s), 0 warning(s)参考答案:4、输入一个3行3列矩阵的所有元素,然后求出主对角线元素之和。
实验步骤与过程:#include<stdio.h>void main(){int i,j,sum;int a[3][4];printf("请输入九个数:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("数值是:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("a[%d][%d]=%d\t",i,j,a[i][j]);printf("\n");}sum=a[0][0]+a[1][1]+a[2][2];printf("对角线的和为:%d\n",sum);}实验调试记录:--------------------Configuration: 6 - Win32 Debug-------------------- Compiling...6.cppLinking...6.exe - 0 error(s), 0 warning(s)参考答案:5、给定某年某月某日,将其转换成这一年的第几天并输出。
(实验指导书P152)实验步骤与过程:#include"stdio.h"intday_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,3 1}};int day_year(int y,int m,int d){int i,j,s=0;if(y%4==0)i=1;elsei=0;for(j=1;j<m;j++)s=s+day_tab[i][j];return(s+d);}void main(){int y,m,d;printf("请输入年、月、日:\n");scanf("%d%d%d",&y,&m,&d);printf("是这年的第%d天\n",day_year(y,m,d));}实验调试记录:Deleting intermediate files and output files for project '1 - Win32 Debug'.--------------------Configuration: 1 - Win32 Debug-------------------- Compiling...1.cLinking...1.exe - 0 error(s), 0 warning(s)参考答案:实验七数组程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握数组的定义、赋值和输入输出的方法。
2、学习用数组实现相关的算法(特别是排序算法)。
3、掌握C语言中字符数组和字符串处理函数的使用。
三、实验内容:说明:前四题为必做题目,后两题为选做题目。
1、下列程序的功能是:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。
#include <stdio.h>void main( ){ int i,n,a[10],avg;for(i=0;i<n;i++)scanf(“%d”,a[i]);for(i=0;i<n;i++){ if(i%3==0) printf(“\n”);printf(“%d ”,a[i]);}for(i=0;i<n;i++)avg+=a[i];printf(“\navg=%f\n”,avg);}2、写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。
(实验指导书P147)3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都是一样的字符串。
(实验指导书P153)4、输入一个3行3列矩阵的所有元素,然后求出主对角线元素之和。
5、给定某年某月某日,将其转换成这一年的第几天并输出。
(实验指导书P152)6、编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found。
(书P191)四、实验步骤与过程:五、实验调试记录:六、参考答案:(省略)。