数组(3)

2019-01-10 13:05

提示:字符串的有效长度就是有效字符的个数,即数组中第一个‘\\0’前面的字符个数。

#include void main() {

int i, len=0; char s[80];

printf(\请输入字符串,以回车键结束:\gets(s);

for(i=0; s[i]!='\\0'; i++) len++;

printf(\字符串%s的长度为:%d\\n\}

3. 编程:任意输入两个字符串分别保存在一维字符数组中,把第二个字符串连接到第一个字符串末尾(不用strcat函数)。例如:

Input two string:

asdfg erty

after strcat: asdfgerty

#include void main() {

int i,j;

char s1[80], s2[80];

printf(\请输入字符串1以回车键结束:\\n\gets(s1);

printf(\请输入字符串2以回车键结束:\\n\gets(s2);

for(i=0; s1[i]!='\\0'; i++) ; /* 定位第一个字符串的结束标志*/ for(j=0; s2[j] && i<80; i++, j++ ) /*将s2接到s1后*/ s1[i]=s2[j];

s1[i]='\\0';

printf(\两个串连接后:%s\\n\}

4. 编程:从键盘读入两个字符串分别保存在一维字符数中,比较两个字符串大小(不用strcmp函数),输出较大的字符串。

#include void main() {

int i;

char a[80], b[80];

printf(\请输入字符串1以回车键结束:\\n\

gets(a);

printf(\请输入字符串2以回车键结束:\\n\gets(b);

//逐个比较直到两个字符不同或其中一个字符串结束 for(i=0; a[i] && b[i] ; i++) {

if(a[i]!=b[i]) break; }

if (a[i]>b[i])

printf(\第一个字符串%s大!\\n\else if (a[i]==b[i])

printf(\两字符串相同!\\n\else

printf(\第二个字符串%s大!\\n\

}

5. 编程:任意输入一个字符串保存在一维字符数组中,判断里面数字字符的个数。例如: Input a string: adg4521gadg4adg number: 5

#include void main() {

int i, n=0; char s[80];

printf(\请输入一个字符串以回车键结束:\\n\gets(s);

for(i=0 ; s[i]; i++)

if(s[i]>='0' && s[i]<='9') n++;

printf(\字符串中包含的数字个数为:%d\\n\}

6. 编程:从一个字符串中删除从某个特定字符开始的所有字符。例如原字符串为\,特定字符为'd',删除后的字符串为\。

#include void main() {

int i, flag=0; char c, s[80];

printf(\请输入一个字符串以回车键结束:\\n\gets(s);

printf(\请输入特定字符:\c=getchar();

for(i=0 ; s[i]; i++) if(s[i]==c) {

s[i]='\\0'; flag=1; break; } if(flag==0)

printf(\输入字符中没有特定字符!\\n\ else

puts(s); }

7. 编程:编写程序,从一个输入的字符串中抽取一部分(从第n个字符开始,抽取m个字符)构成一个新的字符串,并输出。要求:n和m都由用户输入。

#include #include void main() {

unsigned int i, j, m, n; char s1[80], s2[80];

printf(\请输入一个字符串以回车键结束:\\n\gets(s1);

printf(\请输入子串的起始位置和长度:\scanf(\

if( n>0 && n<=strlen(s1) ) {

if (m>0 && n+m <= strlen(s1)+1 ) {

for(i=n-1,j=0; s1[i] && i< n+m-1 ; i++, j++) s2[j]=s1[i];

s2[j]='\\0'; puts(s2); } else

printf(\长度超出范围!\\n\} else

}

printf(\起始位置超出范围!\\n\

8. 编程:利用字符串库函数puts, gets, strcat, strcmp, strcpy, strlen完成下述操作:

? 读入三个字符串str1,str2,str3 ? 输出这三个字符串

? 分别求出这三个字符串的长度; ? 比较str1和str2的大小;

? 将str2连接到str1之后,并输出连接后的str1; ? 复制str3到str1,并输出复制操作后的str1; #include #include void main() {

char str1[80], str2[80], str3[80];

printf(\请输入字符串str1以回车键结束:\\n\gets(str1);

printf(\请输入字符串str2以回车键结束:\\n\gets(str2);

printf(\请输入字符串str3以回车键结束:\\n\gets(str3);

printf(\三个字符串分别是:\\n\printf(\printf(\printf(\

printf(\三个字符串的长度分别是:\\n\

printf(\printf(\printf(\if(strcmp(str1, str2)>0)

printf(\字符串str1大于str2\\n\else if(strcmp(str1, str2)==0) printf(\字符串str1等于str2\\n\else

printf(\字符串str1小于str2\\n\

strcat(str1,str2);

printf(\连接到str1之后: %s\\n\strcpy(str1,str3);

printf(\复制str3到str1: %s\\n\}

选作题:

输入一个小写字母组成的英文句子,统计该句子有几个英文单词,并统计每个字母出现的次数,并将句子中每个单词的首字母大写后输出。

如:输入: this is a cat!

输出: 4个单词;

每个字母出现次数t:2 h:1 i:2 s:2 a:2 c:1 This Is A Cat!

#include void main() {

char s[80];

int count[26]={0}; //与26个字母对应,统计各个字母出现的次数 int i, j, wordnum=0, flag=0;

printf(\请输入一个英文句子(小写字母)以回车键结束:\gets(s);

for(i=0; s[i]; i++) {

if(s[i]>='a' && s[i]<='z') //逐个字母判断,使其对应的出现次数增加1 {

j=s[i]-'a'; // 计算该字母在26个字母中的序号 count[j]++; }

if(i==0 && s[i]!=' ' || flag==1) //句首单词及每个单词第一个字母的处理 {

wordnum++; //单词个数增加1 s[i]=s[i]-32; //小写换大写 flag=0; }

else if(s[i]==' ' && s[i+1]>='a' && s[i+1]<='z')

flag=1;

//当前是空格,但下一个字符是字母,则该字母一定是单词的起始字母flag=1。

//即判断一个单词的起始字符,单词间用空格区分,这里考虑了单词间多个空格的情况

}

printf(\句子中有%d个单词;\\n\printf(\每个字母出现的次数:\for(i=0; i<26; i++) {

if(count[i]!=0)

printf(\

}

printf(\

printf(\每个单词首字母大写后:\ puts(s); }


数组(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年度四川省普通高中省级优秀学生、“三好”学生、优秀学生

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: