vlambda博客
学习文章列表

【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]