注:本文所有程序均为笔者自己编写,仅供交流学习使用,欢迎一切纠错与指正。
目录
二、 使用起泡法和选择法将字符串按ASCII码值从小到大排序。
三、将字符串中的数字字符倒置,即'0'变'9','1'变'8',......'9'变'0'。例如:字符串"a1b2c3d4e9f0"倒置后为"a8b7c6d5e0f9"。
五、有10个字符串,每个字符串表示一段文字,将10个字符串连接成一篇文章,保存到一维数组中并输出。
一、统计字符串中元音字母的个数。
#include <stdio.h>
#include <string.h>
int main()
{
char str[100],ch;
int i,num=0;
scanf("%s",str);
for(i=0;i<100;i++)
{
if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u'||
str[i]=='A'||str[i]=='E'||str[i]=='I'||str[i]=='O'||str[i]=='U')
{
num++;
}
}
printf("该字符串中包含%d个元音字母。",num);
return 0;
}
二、 使用起泡法和选择法将字符串按ASCII码值从小到大排序。
#include <stdio.h>
#include <string.h>
#define N 100
void BubbleSort(char *,int);
void SelectSort(char *,int);
int main()
{
char a[N],b[N];
int n;
gets(a);
n=strlen(a);
strcpy(b,a);
BubbleSort(a,n);
SelectSort(b,n);
puts(a);
puts(b);
return 0;
}
void BubbleSort(char *x,int n)
{
char t;
int i,j;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(x[j]>x[j+1])
{
t = x[j];
x[j] = x[j+1];
x[j+1] = t;
}
}
}
}
void SelectSort(char *x,int n)
{
char t,max = 0;
int i,j,k;
for(i=0;i<n;i++)
{
max = 0;
for(j=0;j<n-i;j++)
{
if(x[j]>max)
{
max = x[j];
k = j;
}
}
t = x[j-1];
x[j-1] = x[k];
x[k] = t;
}
}
三、将字符串中的数字字符倒置,即'0'变'9','1'变'8',......'9'变'0'。例如:字符串"a1b2c3d4e9f0"倒置后为"a8b7c6d5e0f9"。
#include <stdio.h>
#include <string.h>
int main()
{
char a[30];
int i;
gets(a);
for(i;i<30;i++)
{
if((a[i]>=48)&&(a[i]<=57))
{
a[i] = 105-a[i];
}
}
puts(a);
return 0;
}
五、有10个字符串,每个字符串表示一段文字,将10个字符串连接成一篇文章,保存到一维数组中并输出。
#include <stdio.h>
#include <string.h>
int main()
{
char s[100],a[10][10];
int i;
for(i=0;i<11;i++)
{
gets(a[i]);
}
for(i=0;i<11;i++)
{
strcat(s,a[i]);
}
puts(s);
return 0;
}
六、编写本章中的6个字符串处理函数。
#include <stdio.h>
#include <assert.h>
void Myputs(char *p)
{
while (*p != '\0')
{
printf("%c", *p++);
}
putchar('\n');
}
char *Mygets(char *dest)
{
int c = getchar();
char *p = dest;
while (c != EOF && c != '\n')
{
*p++ = c;
c = getchar();
}
*p = '\0';
return dest;
}
char *Mystrcpy(char *dest, const char *src)
{
char *ret = dest;
assert(dest != NULL && src != NULL);
while (*dest++ = *src++) ;
*dest = *src;
return ret;
}
char *Mystrcat(char *dst, const char *src)
{
char *temp = dst;
assert(dst != NULL && src != NULL);
while (*temp != '\0')
{
temp++;
}
while ((*temp++ = *src++) != '\0');
return dst;
}
int Mystrcmp(const char *str1, const char *str2)
{
assert(NULL != str1);
assert(NULL != str2);
while ( *(unsigned char *)str1 == *(unsigned char *)str2 )
{
if ( *(unsigned char *)str1 != '\0')
{
return 0;
}
str1++;
str2++;
}
return *(unsigned char *)str1 - *(unsigned char *)str2;
}
int Mystrlen(char *x)
{
int count = 0;
while (*x != '\0')
{
count++;
x++;
}
return count;
}
int main()
{
char a[30], b[60];
Mygets(a);
Myputs(a);
Mystrcpy(b, a);
Mystrcat(b, a);
Myputs(b);
if (Mystrcmp(a, b) > 0)
{
printf("str1>str2\n");
}
else if (Mystrcmp(a, b) == 0)
{
printf("str1=str2\n");
}
else if (Mystrcmp(a, b) < 0)
{
printf("str1<str2\n");
}
printf("%d", Mystrlen(b));
return 0;
}