【C语言】例题6.8-6.9,习题6.1
例题6.8
输入一行字符串,统计其中有多少个单词,单词直接用空格分隔开。
#include<stdio.h>
int main()
{ char str[1000];
int i,n=1;
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]==' ')
n++;
printf("%d",n);
}
例题6.9
有三个字符串,要求找出其中最大者。
字符串常用的处理函数:
gets(str)
puts(str)
strcat(str1,str2)
strcmp(str1,str2)
字符串比较函数注意返回值为0,正数,负数
在英文字典中位置在后面的“大“
小写字母>大写字母
strcpy(str1,str2)
strncpy(str1,str2,m)
strlen(str)
strlwr(str)
strupr(str)
#include<stdio.h>
#include<string.h>
int main()
{ char str[3][100],string[100];
int i;
for(i=0;i<3;i++)
gets(str[i]);
//读入3个字符串,分别赋给str[0],str[1],str[2]
strcpy(string,strcmp(str[0],str[1])>0?str[0]:str[1]);
printf("最大的字符串为:\n");
puts(strcmp(string,str[2])>0?string:str[2]);
return 0;
}
习题 6.1
用筛选法求100之内的素数。
所谓“筛选法”指的是爱拉托色尼Eratosthenses筛法。爱拉托色尼是古希腊著名的数学家。他采取的方法是,在一张纸上写上1~1000,然后逐个判断他们是否是素数,具体做法如下:
1.先将1挖掉(因为1不是素数)
2.用2除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉;
3.用3除它后面的各个数,把2的倍数挖掉;
4.分别用4,5,……各个数除以这以后的各个数,若求1~50的素数,则这个过程一直进行到除数为47为止;
#include<stdio.h>
int main()
{int a[100],i,j;
//先挖掉0和1
a[0]=0;
a[1]=0;
//给数组赋值,从2到100
for(i=2;i<100;i++)
a[i]=i;
for(i=2;i<100;i++)
for(j=i+1;j<100;j++)
//若数组元素为0即为被挖去的数,不进行取余运算;
{if(a[i]==0) break;
//取余运算后为0的数组元素赋值为0来表示挖去该数
if(a[j]%a[i]==0)
a[j]=0;}
//输出素数,跳过输出数组元素值为0的元素
for(i=0;i<100;i++)
{if(a[i]==0) continue;
printf("%d ",a[i]);}
}
运行结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
[Process completed - press Enter]