您现在的位置是:首页 >学无止境 >【C语言】字符串---刷题篇网站首页学无止境
【C语言】字符串---刷题篇
简介【C语言】字符串---刷题篇
1.统计字符串中元音字母的字数
2.使用起泡法和选择法将字符串按ASCII码值从小到大排列
3.将字符串中的数字字符倒置,即‘0’变‘9’、‘1’变‘8’、…、‘9’变‘0’.例如:字符串“a1b2c3d4e9f0”倒置变为“a8b7c6d5e0f9
4.将一个字符串中从第m个字符开始的全部字符复制成为另一个字符串
5.有10个字符串,每个字符串表示一段文字,将10个字符串连接成一篇文章,保存到一维数组并输出。
6.在全班50个学生的姓名中,查找指定姓名的学生,若找到则输出该学生姓名,否则输出无此人。
统计字符串中元音字母的字数
#include <stdio.h>
int main (void)
{
char str[128]={0};//给字符串数组初始化为一个空字符串
int count=0,i;
printf("请输入一个字符串:
");
gets(str);
for (i=0;str[i]!=0;i++)
if (str[i]=='a'|| str[i]=='e'|| str[i]=='i'|| str[i]=='o' || str[i]=='u')
count++;
printf("%d
",count);
return 0;
}
使用起泡法和选择法将字符串按ASCII码值从小到大排列
#include <stdio.h>
#include <string.h>
int main (void)
{
char str[128]={0};//给字符串数组初始化为一个空字符串
int count=0,i,k;
char temp;//设置中间变量
printf("请输入一个字符串:
");
gets(str);
//选择法排序
for(i=0;i<strlen(str);i++)
for (k=i+1;str[k]!=0;k++)
if (str[k]<str[i])
{
temp=str[i];
str[i]=str[k];
str[k]=temp;
}
for (i=0;str[i]!=0;i++)
printf("%c",str[i]);
printf("
");
return 0;
}
#include <stdio.h>
#include <string.h>
int main (void)
{
char str[128]={0};//给字符串数组初始化为一个空字符串
int count=0,i,k,n;
char temp;//设置中间变量
printf("请输入一个字符串:
");
gets(str);
n=strlen(str);//求字符串的长度
//起泡法排序
//一共进行n-1次比较
//分析:第1趟,进行n-1次比较(最后一次是n-2与n-1比较);
//第2趟,进行n-2次比较(最后一次是n-3与n-2比较)
for (i=1;i<n;i++)
for (k=0;k<n-i;k++)
if (str[k]>str[k+1])
{
temp=str[k];
str[k]=str[k+1];
str[k+1]=temp;
}
for (i=0;str[i]!=0;i++)
printf("%c",str[i]);
printf("
");
return 0;
}
将字符串中的数字字符倒置,即‘0’变‘9’、‘1’变‘8’、…、‘9’变‘0’.例如:字符串“a1b2c3d4e9f0”倒置变为“a8b7c6d5e0f9”
这个题主要利用字符0~9的ASCII码值,字符’0’的ASCII值为48,依次,’1‘为49……’9‘为57
#include<stdio.h>
int main(void)
{
char str[128]={0};
int i;
printf("请输入一个含有数字的字符数组:
");
gets(str);//输入str
for (i=0;str[i]!=0;i++)
if (str[i]>=48 && str[i]<=57)//判断是否是字符0~9
str[i]=105-str[i];//对应项的ASCII值相加为105
for (i=0;str[i]!=0;i++)//输出字符串
printf("%c",str[i]);
return 0;
}
将一个字符串中从第m个字符开始的全部字符复制成为另一个字符串
#include <stdio.h>
int main (void)
{
char str1[128]={0},str2[128]={0};//字符数组初始化为一个空字符串
//将要输出的字符串放到字符数组str2中
int m;
int i,k=0;
//输入数据
gets(str1); //输入字符串
scanf("%d",&m);//输入m
//第m个字符串的下标为m-1
for (i=m-1;str1[i]!=0;i++)//依次将m个字符之后的字符“移到”str2中
{
str2[k]=str1[i];
k++;
}
printf("%s
",str2);//输出str2
return 0;
}
一点改进:
前面几个程序都是利用循环输出的字符串,即对字符数组中的元素依次进行输出。(我当时的顾虑:因为定义的字符数组比较大,后面的全为“0”,可能0也会输出?)
但自己对“0”的理解不对,字符数组的“0”即是"