C 语言实验报告
实验名称
专业
姓名
学号
班级
指导老师
实验七
数组 1. 实验目得 (1)
熟练掌握一维数组、二维数组得定义、初始化与输入/输出方法; (2)
熟练掌握字符数组与字符串函数得使用; (3)
掌握与数组有关得常用算法(如查找、排序等). 2. 实验指导 (1)
对任意一个一维型数组,从中找出数组元素得最大值与最小值并输出。
要求:
① 数组有十个元素; ② 使用scanf 函数实现数组元素得输入前给出必要得提示; ③ 输出时,首先输出数组得十个元素,然后输出其最大值与最小值。
分析指导:
① 算法分析:首先定义一个数组,通过循环从键盘输入十个数组元素得值,再通过另一个循环判断数组元素得最大只与最小值; ② 根据分析情况编写程序:
#include<stdio、h> main() { int a[10],i,max,min; printf(”please input ten integers:"); for(i=0;i<=9;i++)
{
scanf(”%d",&a[i]); } max=a[0]; min=a[0]; for(i=1;i〈=9;i++)
{
if(a[i]〉max)
max=a[i];
if(a[i]〈min)
min=a[i]; } for(i=0;i〈=9;i++)
{
printf("a[%d]=%d\n”,i,a[i]); } printf(”The maximum value is %d,and the minimum value is %d\n",max,min); } 运行程序,输入十个整数,如:
21 37 6 17 9 12 89 76 35 59 运行结果如下:
(2)
编写函数 cmpStr(char s1[],char s2[])比较两个字符串 s1 与 s2得大小。如果 s1>s2,返回一个正数;s1=s2,返回 0;s1〈s2,返回一个负数,在主函数中调用该函数完成字符串得比较操作,并输出返回得值。
要求: ① 不允许使用 strcmp()函数; ② 用 gets()函数在主函数中输入两个字符串; ③ 实现触摸屏受托人()函数,返回得正数或负数得绝对值应该就是进行比较得两个字符传中相应字符得 ASCII 码得差值。
分析指导:
① 算法分析:两个字符串从第一个字符开始一一对应进行比较,直到不相等得那个字符,从而求得它们得 ASCII 码得差值。比如,‘A’与‘C’相比,由于‘A’<‘C’,应输出负数,由于‘A"与‘C’得 ASCII 码得差值为2,因此,应输出“-2”。同理,“And”与“Aid”比较,根据第二个字符比较结果,‘n’比‘I’大 5,因此应输出‘5’; ② 根据分析情况编写程序: #include〈stdio、h〉 int cmpstr(char s1[],char s2[]) {
;ffid,i tniﻩ i=0;
;++i))’0\'=!]i[1s(&&)]i[2s==]i[1s((elihwﻩ if(s1[i]=="\0'&&s2[i]=='\0')
;0=ffidﻩﻩ esleﻩ ;]i[2s—]i[1s=ffidﻩﻩ return diff;
} void main() {
;z tniﻩ char s1[100],s2[100];
printf("input the first string:"); // 1 串符字入输ﻩ ;)1s( stegﻩ ;)”:gnirts dnoces eht tupni”(ftnirpﻩ// 2 串符字入输ﻩ gets(s2);
;)2s,1s(rtspmc=zﻩ// 果结较比出输ﻩ,”n\d% si sgnirts owt neewteb ecnereffid eht"(ftnirpﻩz); } 查瞧运行结果如下:
重新输入两个字符串 meet,mood 运行结果如下:
(3)
再给定得字符串中查找指定得字符。
要求: ① 字符串采用直接初始化得方式处理; ② 通过 scanf 函数读入一个任意字符; ③ 在字符串中查找该字符,如果存在该字符,输出该字符在字符串中得一次出现得位置,如果再给定得字符串中不存在该字符,则给出相应得说明信息. #include〈stdio、h> void main()
{
int i;
;hc rahcﻩ ;"margorp "=][s rahcﻩ ;)" :母字文英个一入输 ”(ftnirpﻩ ;)hc&,"c%"(fnacsﻩ )++i;’0\"=!]i[s;0=i( rofﻩ {ﻩ ﻩ if (s[i]==ch)
ﻩ break;
}
)7<i( fiﻩ
;)hc,i,"n\c%=]d%[s"(ftnirpﻩ esleﻩ
printf(”No founded\n”); } 输入一个英文字母 O 运行程序如下:
再次输入一个英文字母 w 运行程序如下:
(4)
首先输入一个大于二且小于十得整数n,然后定义一个二维整型数组(n*n),初始化该数组,讲述组中最大元素所在得行与最小元素所在得行对调。
要求:
① n*n 数组元素得值由scanf 函数从键盘输入(假定最大值最小值不在同一行
上),然后输出该数组; ② 查找最大值最小值所在得行,将数组中最大元素所在得行与最小元素所在得行对调,并输出对调后得数组; ③ 为直观起见,数组按 n 行 n 列得方式输出; ④ 修改程序,对最大值与最小值可能出现在一行种得情况进行处理。
#include<stdio、h> main() {
;pmet,xam,nim,]9[]9[xirtam gnolﻩ
;0=niMn,0=xaMn,n,j,i tniﻩ printf("\nplease inpute n of matrix:\n");
;)n&,"d%"(fnacsﻩ printf("\nplease inpute elements of matrix(%d*%d):\n”,n,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
ﻩ ﻩ scanf("%ld”,&matrix[i][j]);
;]0[]0[xirtam=xam=nimﻩ
)++i;n<i;0=i(rofﻩ
)++j;n<j;0=j(rofﻩ
{ ﻩ
if(matrix[i][j]>max)
{ ﻩ ﻩ ﻩ
ﻩ ﻩ
;]j[]i[xirtam=xamﻩ
ﻩ
;i=xaMnﻩ
ﻩ }
ﻩ
)nim<]j[]i[xirtam(fi esleﻩ
{
;]j[]i[xirtam=nimﻩ ﻩ ﻩ
nMin=j;
}
} ﻩ ﻩ for(j=0;j<n;j++)
{
;]j[]xaMn[xirtam=pmetﻩ ﻩ
;]j[]niMn[xirtam=]j[]xaMn[xirtamﻩ
matrix[nMin][j]=temp;
}
;)”n\:xirtam tluseRn\”(ftnirpﻩ
)++i;n<i;0=i(rofﻩ {
)++j;n<j;0=j(rofﻩ
;)]j[]i[xirtam,"dl5%”(ftnirpﻩ
printf("\n");
} ﻩ} 输入一个数 4,输入一个4*4 得数组 1 3
6
7
2 4
5
8
1 3
5
7
2 6
9
7 运行程序如下:
再次输入一个数字 3,输入一个 3*3 得数组 1 2
3 2 4
5 3 7
8 运行程序如下:
3 实验结论
通过本次实验熟练得掌握一维数组、二维数组得定义、初始化与输入/输出方法以及字符数组与字符串函数得使用,还有就就是掌握与数组有关得常用算法