【华软C语言实验报告】实验8 数组(2)

实验8 数组(2)

一、实验目的:
1、理解字符数组的作用、特点;
2、掌握字符数组、字符串的使用;
3、熟悉打擂台等典型算法。

二、实验内容

1、(基础题)输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。如下图所示:
在这里插入图片描述
(提示:(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的字符串: ");
    
    // fgets(str,101,stdin);
    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	",a[i]);
    return 0;
}

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

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

3(基础题)、参考冒泡排序.ppt,完成如下功能:由用户输入10个字符串,每个字符串长度不超过20个字符,要求10个字符串由小到大排序。
解题思路:①用一维字符数组可以存放一个字符串,这里可定义一个二维字符数组来存放10个字符串;②排序可以用“冒泡”算法
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
#include <string.h>
int main()
{
    int i,j;
    char t[10];
	char a[10][20]={''};
	printf("输入10个字符串:
");
	for (i=0;i<10;i++)
		scanf("%s",&a[i]);
	for (i=0;i<9;i++)
		for (j=0;j<9-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("排序后的字符串为:
");
    for (i=0;i<10;i++)
        printf("%s
",a[i]);
    return 0;
}

一键三连呀!
原文地址:https://www.cnblogs.com/jee-cai/p/14095203.html