【华软C语言实验报告】实验8 数组(2)
程序员文章站
2022-03-08 20:35:40
...
实验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\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个字符串;②排序可以用“冒泡”算法
#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;
}
上一篇: 谷歌机器狗已经进化到不怕挨踢了
下一篇: 日本推出世界首台乒乓球教练机器人