广州软件学院c语言—实验9 数组(2)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              实验9  数组(2)

一、实验目的

1、理解字符数组的作用、特点;

2、掌握字符数组、字符串的使用;

3、熟悉打擂台等典型算法。

二、实验内容

1、(基础题)输入一个字符串(长度不超过100个字符),请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。如下图所示:

(提示:(1)用字符数组存储字符串,数组长度定义100.(2)在教材的p385-386中有字符和字符串函数,可以直接引用。如isalpha()判断字母函数、isdigit()判断数字函数、isspace()判断空格函数、ispunct()判断标点函数等)

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
    char str[101];
    int i;
    int a[4]={0};
    printf("请输入一个长度不超过200的字符串: ");
    gets(str);
    for(i=0;i<strlen(str);i++)
    {
        if (isalpha(str[i])!=0)a[0]++;
        if (isdigit(str[i]))a[1]++;
        if (isspace(str[i]))a[2]++;
        if (ispunct(str[i]))a[3]++;
    }
    printf("该字符串的字母个数、数字个数、 空格个数、标点个数分别为:");
    for(i=0;i<4;i++)
       printf("%d\t",a[i]);
    return 0;
}

2、参考课件ppt,完成如下程序:由用户输入10个字符串,每个字符串长度不超过20个字符,要求找出其中的最小者。

#include<stdio.h>
#include<string.h>
int main()
{
	char str[10][20];
	char max[20];
	int i;
printf("请输入10个字符串:\n");
for(i=0;i<10;i++)
gets(str[i]);
strcpy(max,str[0]);
for(i=1;i<10;i++)
{
	if(strcmp(str[i],max)>0)
	strcpy(max,str[i]);
}
 printf("\n最大字符串为:%s\n",max);
    return 0;
}

3(基础题)、迷宫游戏开发。查阅实验文件里面提供的迷宫游戏初级开发思路.ppt文档,并观看迷宫初级版无声音.mp4视频文件,补充代码,完成迷宫游戏初级版本开发。

#include <stdio.h> //printf()

#include <conio.h>  //getch()

#include <stdlib.h>  //system()

#define M 10

#define N 30

int main(){

    int i,j,x=1,y=1;//玩家初始位置

    //构建迷宫

    char c, maze[M][N]={"# ############################",

                        "#0 ###########################",

                        "#    ##    ####  #############",

                        "###      #####################",

                        "####   #    ##################",

                        "#####    ##    ###############",

                        "######     ###    ############",

                        "########   ######           ##",

                        "#########           ####      ",

                        "##############################"};

    //绘制迷宫

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

    {

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

          printf("%c",________(1)______);

       printf("\n");

    }

     //走迷宫

    while(x != M-2 || y!=N-1)

    {

        c = getch();//接收玩家输入的方向指令

        switch(c)

        {

            case 'd':case 'D': //向上走一步

                if (_____(2)______ )

                {

                    ________(3)________ //此处3条语句

                }

                break;

            case 'u':case 'U'://向下走一步

                if (maze[x+1][y] != '#' )

                {

                    maze[x][y] = ' ';

                    x++;

                    maze[x][y] = '0';

                }

                break;

            case 'l':case 'L': //向左走一步

                if (____(4)______ )

                {

                    ________(5)________ //此处3条语句

                }

                break;

            case 'r':case 'R':  //向右走一步

                if (____(6)______ )

                {

                   ________(7)________ //此处3条语句

                }

                break;

            default:

                ;//其他字符,则空操作

            }

        system("cls"); //清屏

        for(i=0;i<M;i++)        //绘制新迷宫

            {

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

                    printf("%c",maze[i][j]);

                printf("\n");

            }

    }

    printf("win!");     //结束

    return 0;

}

由于语言不同 开始时如有乱码请随意按一个键激活 

上      下      左      右

d/D     u/U    l/L      r/R

#include <stdio.h> //printf()
#include <conio.h>  //getch()
#include <stdlib.h>  //system()
#define M 10
#define N 30
int main(){
    int i,j,x=1,y=1;//玩家初始位置
    //构建迷宫
    char c, maze[M][N]={"# ############################",
                        "#0 ###########################",
                        "#    ##    ####  #############",
                        "###      #####################",
                        "####   #    ##################",
                        "#####    ##    ###############",
                        "######     ###    ############",
                        "########   ######           ##",
                        "#########           ####      ",
                        "##############################"};
    //绘制迷宫
    for(i=0;i<M;i++)
    {
       for (j=0;j<N;j++)
          printf("%c",maze[M][N]);//
       printf("\n");
    }
     //走迷宫
    while(x != M-2 || y!=N-1)
    {
        c = getch();//接收玩家输入的方向指令
        switch(c)
        {
            case 'd':case 'D': //向上走一步
                if (maze[x-1][y] != '#' )
                {
                       maze[x][y] = ' ';
                    x--;
                    maze[x][y] = '0';//此处3条语句
                }
                break;
            case 'u':case 'U'://向下走一步
                if (maze[x+1][y] != '#' )
                {
                    maze[x][y] = ' ';
                    x++;
                    maze[x][y] = '0';
                }
                break;
            case 'l':case 'L': //向左走一步
                if (maze[x][y-1] != '#' )
                {
                    maze[x][y] = ' ';
                    y--;
                    maze[x][y] = '0';//此处3条语句
                }
                break;
            case 'r':case 'R':  //向右走一步
                if (maze[x][y+1] != '#' )
                {
                   maze[x][y] = ' ';
                    y++;
                    maze[x][y] = '0'; //此处3条语句
                }
                break;
            default:
                ;//其他字符,则空操作
            }
        system("cls"); //清屏
        for(i=0;i<M;i++)        //绘制新迷宫
            {
                for (j=0;j<N;j++)
                    printf("%c",maze[i][j]);
                printf("\n");
            }
    }
    printf("win!");     //结束
    return 0;
}

4、(提高题)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

解题思路:通过空格统计单词:由空格出现的次数(连续的空格作为一次空格;一行开头的空格不统计在内)决定单词数目,从第一个字符开始逐个检查是否为空格.

(1)如测出某字符为非空格,而它前面的字符是空格,则表示“新的单词开始”。设变量num,用来累计单词数,初值为0。当发现“新的单词开始”,使num累加1,表示增加一个单词

(2)如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1

(3)设变量word,用来表示前一个字符是否空格,以0代表前一个字符是空格; word等于1,意味着前一个字符为非空格,word的初值置为0.

#include<stdio.h>
#include<string.h>
int main ()
{
	char str[100];
	int i,num=0;
	printf("请输入一行字符串:\n");
	gets(str);
	if(str[0]=='\0'||str[0]==' ')
	printf("There are 0 word in this line.");
    else 
	num=1;
		for(i=0;i<100;i++)
		{
		if(str[i]==' ')num++;
		else if(str[i]=='\0')
		{
			printf("There are %d words in this line.",num);break;
		}
	}
		return 0;

	
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值