一.关于取余数的一个题
- #include<stdio.h>
- int main()
- {
- int i;
- scanf(“%d”, &i);
- i %= 4;
- printf(“%d\n”,i);
- }
试问以上代码执行后,i有多少种可能呢?
答案:7种
二.经典题《统计一行文本的单词个数》
7-2 统计一行文本的单词个数(15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
这个题目,我写的有两个版本,一个版本用数组,确实比较容易写出来了。
贴出我不用数组做的版本和经典的代码进行对比。
- #include<stdio.h>
- int main()
- {
- int word=0,sum=0;
- char ch;
- while(1){
- ch=getchar();
- if(ch!=’ ‘&&ch!=’\n’){
- word = 1;
- }
- else if(((ch==’ ‘)||(ch==’\n’))&&word==1){
- sum++;
- word = 0;
- }
- if(ch==’\n’){
- printf(“%d”,sum);
- return 0;
- }
- }
- }
第二个版本是经典程序,想法还是一样,用一个变量来判断是在单词状态还是空格状态,以此来决定是不是需要把单词数量cnt++;
- #include<stdio.h>
- int main()
- {
- int word=0,cnt=0;
- char ch;
- while((ch=getchar())!=’\n’){
- if(ch==’ ‘){
- word = 0;
- }
- else if(word==0){
- cnt++;
- word = 1;
- }
- }
- printf(“%d”,cnt);
- }