本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。
2.设计思路
11-6 方阵循环右移
对给定的数组,通过其下标数值寻找规律移动。
12-1 统计大写辅音字母
输入的字符串逐个判断是否为辅音字母,最后一位为\0。
13-5 判断回文字符串
把字符串分开,前部由小到大推进,后部由大到小推进,若有发现不等的情况,则字符非回文字符串。
14-2 删除字符
循环逐个查找是否有不等于输入的字符,若不相等存到另一个数组中,最后将该数组复制给原数组返回。
15-2 分类统计各类字符个数
if语句判断字符,用指针返回。
二.源程序(可只截取最关键的部分)
1:11-6 方阵循环右移
#include
int main()
{
int m,n,a[6][6],i,j,k,b[6][6];
scanf("%d%d",&m,&n);
for(i=0;i
{
for(j=0;j
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i
{
for(j=0;j
{
k=(j+m)%n;
b[i][k]=a[i][j];
}
}
for(i=0;i
{
for(j=0;j
{
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
2:12-1 统计大写辅音字母
#include
int main()
{
int i,c;
char str[80];
i=0;
while((str[i]=getchar())!='\n')
i++;
str[i]='\0';
c=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]<='Z'&&str[i]>'A'&&str[i]!='E'&&str[i]!='I'&&str[i]!='O'&&str[i]!='U')
c++;
}
printf("%d",c);
return 0;
}
3:13-5 判断回文字符串
裁判判定:
#include
#include
#define MAXN 20
typedef enum {false, true} bool;
bool palindrome( char *s );
int main()
{
char s[MAXN];
scanf("%s", s);
if ( palindrome(s)==true )
printf("Yes\n");
else
printf("No\n");
printf("%s\n", s);
return 0;
}
代码:
bool palindrome( char *s )
{int n,n2;
n=strlen(s);
n2=n;
for(int i=0;i
{
if(s[i]!=s[n2-1])
return false;
}
return true;
}
14-2 删除字符
裁判测试程序样例:
#include
#define MAXN 20
void delchar( char *str, char c );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */
int main()
{
char str[MAXN], c;
scanf("%c\n", &c);
ReadString(str);
delchar(str, c);
printf("%s\n", str);
return 0;
}
代码:
void delchar( char *str, char c )
{
int len,i,j=0;
char b[100];
len=strlen(str);
for(i=0;i
{
if(str[i]!=c)
{
b[j]=str[i];
j++;
}
}
strcpy(str,b);
str[j]='\0';
}
15-2 分类统计各类字符个数
裁判测试程序样例:
#include
#define MAXS 15
void StringCount( char *s );
void ReadString( char *s ); /* 由裁判实现,略去不表 */
int main()
{
char s[MAXS];
ReadString(s);
StringCount(s);
return 0;
}
代码:
void StringCount( char *s )
{
int i,big=0,small=0,blank=0,dight=0,other=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='A'&&s[i]<='Z')
big++;
else if(s[i]>='a'&&s[i]<='z')
small++;
else if(s[i]==' ')
blank++;
else if(s[i]>='0'&&s[i]<='9')
dight++;
else
other++;
}
printf("%d %d %d %d %d",big,small,blank,dight,other);
}