一、目的
& 掌握二维数组的定义、赋值、使用和输入输出方法 ,掌握字符数组和字符串的使用。
& 掌握指针的概念,会定义和使用指针变量,正确使用变量、数组、字符串的指针和指向变量的指针变量。
& 学习单向链表的创建、删除、 插入(无序、有序)、输出、 排序(选择、插入、冒泡)、反序等等。
& 熟悉递归函数的基本思想,掌握数值型与非数值型递归函数的编程问题。
& 掌握结构体变量的定义和使用、掌握结构体数组的定义和使用、了解结构指针的定义和使用。
二、实验内容与设计思想
【二维数组】求矩阵各行元素之和
设计思路:用二维数组模拟出一个矩阵原型,二维数组所对应的两个嵌套for循环对应矩阵的行和列,最后再将行元素分别累加,即可实现最终目的。
代码如下:
#include <stdio.h> int main() { int a[10][10]={0}; int m,n,sum=0; scanf("%d %d",&m,&n); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { scanf("%d",&a[i][j]); } } for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { sum+=a[i][j]; } printf("%d\n",sum); sum=0; } }
运行结果如图:
【字符串】字符串字母大小写转换
设计思路:本题在对数组有一定了解的基础上,需要通过定义一个字符型数组,在通过acsll码实现字符元素的大小写转化。
代码如下:
#include <stdio.h> int main(){ while(1){ char x; scanf("%c",&x); if(x==‘#‘){ break; }else if(x>=‘a‘&&x<=‘z‘){ x -= 32; }else if(x>=‘A‘&&x<=‘Z‘){ x += 32; } printf("%c",x) ; } return 0; }
运行结果如图:
【数组和指针】13-2 利用指针找最大值
设计思路:首先定义一个函数findmax( int *px, int *py, int *pmax ),对应形参为指针型,通过findmax函数的比较,找出最大值,并返回对应实参数的地址,得到最大值。
代码如下:
#include <stdio.h> void findmax( int *px, int *py, int *pmax ); int main() { int max, x, y; scanf("%d %d", &x, &y); findmax( &x, &y, &max ); printf("%d\n", max); return 0; } void findmax( int *px, int *py, int *pmax ) { if(*px>*py) *pmax=*px; else *pmax=*py; }
运行结果如图:
【结构体 指针 字符串】14-8 字符串排序
设计思路:此题较为简单主要学会对于strcpy和strcmp的运用,然后在通过比较的字母循序进行排序。
代码如下:
#include<stdio.h> #include<string.h> int main(void) { int i,j; char a[50][200], t[200];//改大了点,不然字符串太长会超出数组范围 for (i = 0; i < 5; i++) { scanf("%s",a[i]); } for (i = 1; i < 5; i++) { for (j =0; j < 5-i ;j++) if (strcmp(a[j], a[j+1]) > 0) { strcpy(t,a[j]); strcpy(a[j], a[j + 1]); strcpy(a[j + 1], t); } } printf("After sorted:\n"); for (i = 0; i < 5; i++) puts(a[i]); return 0; }
运行结果:
【结构体 链表 递归】15-10 找最长的字符串
设计思路:定义一个字符结构体,在通过统计字符串的长度并比较最终的结果。
代码如下:
#include<stdio.h> #include<string.h> struct s{ char name[86]; }; int main() { int n,i,max=0,index; scanf("%d",&n); struct s longer[n]; for(i=0;i<n;i++) scanf("%s",longer[i].name); for(i=0;i<n;i++) { if(strlen(longer[i].name)>max) { max=strlen(longer[i].name); index=i; } } printf("The longest is: %s",longer[index].name); return 0; }
运行结果:
三、实验使用环境
本次实验在devc环境下调试
四、实验小结
- 对于指针的指向问题有时会比较绕,导致许多问题分析不清、理解不清。
- 对于链表几乎不会。
- 结构体定义时没有对应清楚元素与数据的关系。
- 寒假要好好补缺补漏。