二维数组与字符数组部分实验

学习目标:

1. 掌握与数组有关的算法。

2. 掌握二维数组的定义、存储结构、初始化及输入/输出的方法。

3. 掌握字符数组的定义、初始化及输入/输出的方法。

4. 掌握字符串和字符串函数的使用。


学习内容:

1. 编写程序实现:输出二维数组(数值型)每一行的最大值。要求数组的行数、列数、数组的值均由键盘输入。

源代码:

#include<stdio.h>

#include<stdlib.h>

void main()

int a[3][3],i,j,max;//数组行列多少看题意

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

scanf("%d",&a[i][j]);}//输入值,中间可用空格隔开每个值

printf("输入数组是%d行,%d列:\n",i,j);

printf("输入二维数组:\n");

for(i=0;i<3;i++)

{for(j=0;j<3;j++)printf("%5d",a[i][j]);//对输入的值按题意的行列数依次打出

printf("\n");}

printf("------输出统计结果------\n");

for(i=0;i<3;i++)

{max=a[i][0];

for(j=0;j<3;j++)

if(a[i][j]>max)

   max=a[i][j];

printf("第%d行的最大值%d\n",i+1,max);}

printf("\n");

  system("pause");}


 杨辉三角

杨辉三角最本质的特征是:它的两条斜边都是由数字1组成的,而其余的数则是等于它上面的两个数之和。

 (本题不能打出这种效果,换用另一种模式)

2. 编写程序实现:按杨辉三角的规律打印以下数据(要求只打印出10行)。编译、连接、运行该程序,给出运行结果。

      1

      1     1

      1     2     1

      1     3     3     1

      1     4     6     4     1

      1     5     10   10   5     1

      …

(由于本题只打印十行就够,则以下代码为十行的)

源代码:

#include<stdio.h>

#include<stdlib.h>

void main()

{ int a[11][11],i,j;

//因为是几行几列,不能是0行几列或几行0列,初始值从1行1列开始

 for(i=1;i<11;i++)

 { a[i][1]=1;a[i][i]=1;//根据杨辉三角的定义,斜边上都是1,则某行1列是1,末行末列也是1}

  for(i=3;i<11;i++)//前两行都是1,则从第三行开始一直到结束中间的值都是等于它上面两个数的和

 for(j=2;j<i;j++)//行从第3行开始,从第2列开始

 a[i][j]=a[i-1][j-1]+a[i-1][j];//该位置的上一行的前一列和本列的值相加

  for(i=1;i<11;i++)

  {for(j=1;j<=i;j++)

  printf("%5d",a[i][j]);//打印出来10行10列的效果图,输出间隔宽度为5的各个值

  printf("\n");}

  system("pause");

}

3.编写程序实现:输入一行字符串,统计其中大写字母、小写字母、空格、数字及其他字符的个数。编译、连接、运行该程序,给出运行结果。

源程序:#include<stdio.h>

#include<stdlib.h>

#include<string.h>    //本题用到字符,则需要相应的申明

void main()

char c[108];//字符串的所有值可以定义大些,但是如果没有写完,会被默认为其他字符

   gets(c);//用gets()函数输入字符串值

   int a[5]={0,0,0,0,0},i=0;

//由题意只用定义数组含有5个值即可,

//分别表示大写字母、小写字母、空格、数字及其他字符的个数

  for(i=0;i<107;i++)

   {if(c[i]>='A'&&c[i]<='Z') a[0]++;//大写字母个数

   else if(c[i]>='a'&&c[i]<='z') a[1]++;//小写字母个数

   else if(c[i]==' ') a[2]++;//空格个数

   else if(c[i]>='0'&&c[i]<='9') a[3]++;//数字个数

   else  a[4]++;//其他字符个数

}

   printf("大写字母个数=%d\n小写字母个数=%d\n空格个数=%d\n数字个数=%d\n其他字符=%d\n",a[0],a[1],a[2],a[3],a[4]);

   system("pause");

}

4. 编写程序实现:输入一行字符,统计其中有多少个单词,单词之间用一个或多个空格分隔。编译、连接、运行该程序,给出运行结果。

源程序:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

void main()

{char c[30];

  gets(c);

  int i,j=1;     //j记录单词数量,初始值应设为1,为了占一个空格符,避免设为0引起的记词数不对

  for(i=0;c[i]!='\0';i++)

  if(c[i]==' '&&!(c[i-1]==' ')) j++;        //当该位置为空格并且前一个不为空格时,j计数加1

  printf("j=%d\n",j);

  system("pause");

}

5.编写程序实现:将输入的任一字符串中的大写字母替换为小写字母。编译、连接、运行该程序,给出运行结果。

(此题主要思想是一个C语言strlwr()函数,该函数是用于将字符串中的字符转换为小写,其原型为char *strlwr(char *str);若想将字符串转换为大写形式则使用strupr()函数)

源程序:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

void main()

char c[20];//输入的字符串长度,随自己定,注意在键盘输入时要为连续的,不要分开写字符

  printf("-----将大写字符均改为小写字符-----\n");

  printf("输入字符串小于等于定义的长度字符串:\n");

  scanf("%s",c);

  printf("转换后的字符串为:%s\n",strlwr(c));//此处别忘了加%s,(小编就是忘了,调了很多次尴尬)

    system("pause");

}

(若转换为大写,改为strupr()即可)

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值