实验五 数组及其应用(二)

一、实验目的

  1. 掌握一维数组、二维数组的定义与使用;
  2. 掌握字符数组的定义与引用,用字符数组处理字符串的方法与注意;
  3. 掌握与数组相关的算法,如排序、打擂台、矩阵运算、字符串处理等。

二、实验要求

  1. 按实验题目要求完成,编写程序并添加注释;
  2. 从实验题目中任选其一完成实验报告。

三、实验内容

实验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.数组元素可以一次性引用多个元素吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值