例题1
输入一串字符,计算其中空格个数
int i,sum=0;
char buf[32]={};
scanf("%[^\n]",buf);
for(i=0;i<32;i++)
if(buf[i] == ' ')
sum++;
printf("%d\n",sum);
例题2
将一串字符串进行倒置
思路:先计算字符串的实际长度,找到字符串的最后一个实际字符对应的下标,然后交换
考虑好交换次数
#include<stdio.h>
int main(int argc, char const *argv[])
{
char buf[32]={};
char t;
int i,n;
scanf("%s",buf);
//计算实际长度
for(n=0;buf[n]!= '\0';n++);//n=5
for(i=0;i<n/2;i++)//交换次数
{
t = buf[i];
buf[i]=buf[n-1-i];
buf[n-1-i]=t;
}
puts(buf);
return 0;
}
补充知识点:
计算字符串实际长度:
1.for(n=0;buf[n]!= '\0';n++);
2.strlen(使用时需要#include<string.h>)
功能:计算字符串的实际长度,不包括\0
参数:要计算的字符串首地址
返回值:字符串的实际长度
区分strlen 和sizeof
1.strlen是函数;sizeof是关键字
2.strlen用于计算字符串的实际长度;sizeof用于计算内存所占字节大小
3.strlen计算不包括\0,sizeof计算包括\0;省略数组元素个数时,sizeof比strlen大1
char buf[]="hello";//sizeof=6,strlen=5
char buf[32]="hello";//sizeof=32,strlen=5
例题3
在终端输入大写字母、小写字母、空格、数字,分别在终端输出他们的个数
int a=0,b=0,c=0,d=0,i;
char buf[32]={};
scanf("%[^\n]",buf);
for(i=0;i<strlen(buf);i++)
{
if(buf[i] >= 'a' && buf[i] <= 'z')
a++;
else if (buf[i]>='A' && buf[i]<='Z')
b++;
else if(buf[i]>='0' && buf[i]<='9')
c++;
else if(buf[i] == ' ')
d++;
}
printf("%d %d %d %d\n",a,b,c,d);
例题4
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
int i,sum=1;
for(i=1;i<10;i++)//循环9次
{
sum=(sum+1)*2;
}
printf("");