一.关于取余数的一个题

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int i;
  5.     scanf(“%d”, &i);
  6.     i %= 4;
  7.     printf(“%d\n”,i);
  8. }

试问以上代码执行后,i有多少种可能呢?

答案:7种

二.经典题《统计一行文本的单词个数》

7-2 统计一行文本的单词个数(15 分)

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

这个题目,我写的有两个版本,一个版本用数组,确实比较容易写出来了。

贴出我不用数组做的版本和经典的代码进行对比。

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int word=0,sum=0;
  5.     char ch;
  6.     while(1){
  7.         ch=getchar();
  8.         if(ch!=’ ‘&&ch!=’\n’){
  9.             word = 1;
  10.         }
  11.         else if(((ch==’ ‘)||(ch==’\n’))&&word==1){
  12.             sum++;
  13.             word = 0;
  14.         }
  15.         if(ch==’\n’){
  16.             printf(“%d”,sum);
  17.             return 0;
  18.         }
  19.     }
  20. }

第二个版本是经典程序,想法还是一样,用一个变量来判断是在单词状态还是空格状态,以此来决定是不是需要把单词数量cnt++;

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int word=0,cnt=0;
  5.     char ch;
  6.     while((ch=getchar())!=’\n’){
  7.         if(ch==’ ‘){
  8.             word = 0;
  9.         }
  10.         else if(word==0){
  11.             cnt++;
  12.             word = 1;
  13.         }
  14.     }
  15.     printf(“%d”,cnt);
  16. }