欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-08 20:35:40
...

实验8 数组(2)

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

二、实验内容

1、(基础题)输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。如下图所示:
【华软C语言实验报告】实验8 数组(2)
(提示:(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\t",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个字符串: \n");
	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("\n最小者是:%s\n",min);
    return 0;
}

3(基础题)、参考冒泡排序.ppt,完成如下功能:由用户输入10个字符串,每个字符串长度不超过20个字符,要求10个字符串由小到大排序。
解题思路:①用一维字符数组可以存放一个字符串,这里可定义一个二维字符数组来存放10个字符串;②排序可以用“冒泡”算法
【华软C语言实验报告】实验8 数组(2)
【华软C语言实验报告】实验8 数组(2)

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