一、实验目的
- 掌握一维数组、二维数组的定义与使用;
- 掌握字符数组的定义与引用,用字符数组处理字符串的方法与注意;
- 掌握与数组相关的算法,如排序、打擂台、矩阵运算、字符串处理等。
二、实验要求
- 按实验题目要求完成,编写程序并添加注释;
- 从实验题目中任选其一完成实验报告。
三、实验内容
实验5.7定义一个字符数组,用来保存字符串“I am a student, I am happy!”,输出该数组中的元素。【基础题目,考查字符数组的定义与引用、输入输出】
解题思路:定义一个字符数组,注意说明字符数组长度。定义字符数组时,可以用初始化列表{'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t',',''I',' ','a','m', ' ','h','a', 'p','p','y', '!'};也可以用字符串的形式{“I am a student, I am happy!”}或“I am a student, I am happy!”。注意初始化列表和字符串赋初值的区别。
输出字符串的方式:
循环+printf(“%c”,c[i]);
printf(“%s”,c);
puts(c);
实验5.8 利用二维字符数组输出形状,如输出一个菱形图案。
解题思路:控制空格和星号的数量和位置。
编写程序:
#include <stdio.h>
int main()
{ char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},
{' ','*',' ','*'},{' ',' ','*'}};
int i,j;
for (i=0;i<5;i++)
{ for (j=0;j<5;j++)
printf("%c",diamond[i][j]);
printf("\n");
}
return 0;
}
实验5.9 利用strcat函数实现两个字符串str1和str2的拼接,将拼接结果保存在str1中。
输入样例:
People’s Republic of //注意of后面有一个空格
China
输出样例:
People’s Republic of China
解题思路:核心代码
char str1[30]={"People′s Republic of "};
char str2[]={"China"};
printf("%s", strcat(str1, str2));
实验5.10 定义一个字符数组,初始化每个元素为大写字符,将每个大写字母转化为小写字母输出该数组元素。
解题思路:定义字符数组,数组名、数组长度可以自己定义;定义时可以进行初始化。核心代码:
for(i=0;i<=N;i++)
printf(“%c”,c[i]+32);
实验5.11 定义一个字符数组并初始化,将其中的小写字母转换为大写字母、大写字母转换为小写字母输出。
解题思路:使用if条件判断,注意如何判定大小写字母。
实验5.12 编写程序,在一串字符中找出所有数字字符构成新的数组。
解题思路:字符变量ch的值为数字字符的条件:ch≥'0' 且 ch≤'9'。需要定义两个数组。使用两个循环变量i和j,i用于从第1个数组中逐个访问各元素,j用于构建第2个数组。
参考源程序:
#include <stdio.h>
int main(void)
{ char old[80]="Genius is 1 percent inspiration and 99 percent perspiration.",new[80]={'\0'};
int i=0,j=0;
while(old[i]!='\0')
{ if(old[i]>='0' && old[i]<='9')
{ new[j]=old[i]; j++; }
i++;
}
new[j]='\0';
puts(old);
puts(new);
return 0;
}
四、思考与问题
1.定义数组后,能否用{ }给所有数组元素赋值?
2.数组元素可以一次性引用多个元素吗?
578

被折叠的 条评论
为什么被折叠?



