`
akiraray
  • 浏览: 88593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C语言程序设计第二版习题笔记——第一章(1.1-->1.15)

阅读更多
1.1 编译错误
1.2 编译警告,提示没有这个转义符
1.3 代码如下
#include <stdio.h>

void print_table(){
	float fahr,celsius;
	int lower,upper,step;
	lower=0;
	upper=300;
	step=20;

	while(fahr<=upper){
		celsius=(5.0/9.0)*(fahr-32.0);
		printf("\t%3.0f\t%6.1f\n",fahr,celsius);
		fahr=fahr+step;

	}

}
int main(int argc,char *argv){
printf("\t华氏\t摄氏\n");
print_table();
return 1;
}


1.4 稍微改动一下 1.3 的代码既可
  1 #include <stdio.h>
  2 
  3 void print_table(){
  4         float fahr,celsius;
  5         int lower,upper,step;
  6         lower=-20;
  7         upper=50;
  8         step=5;
  9         celsius=lower;
 10         while(celsius<=upper){
 11                 fahr=celsius*(9.0/5.0)+32.0;
 12                 printf("\t%3.0f\t%6.1f\n",celsius,fahr);
 13                 celsius=celsius+step;
 14 
 15         }
 16 
 17 }
 18 int main(int argc,char *argv){
 19 printf("\t摄氏\t华氏\n");
 20 print_table();
 21 return 1;
 22 }



1.5 对1.3的代码稍微改动
#include <stdio.h>

void print_table(){
        float fahr,celsius;
        int lower,upper,step;
        lower=0;
        upper=300;
        step=20;
        fahr=upper;
        while(fahr>=lower){
                celsius=(5.0/9.0)*(fahr-32.0);
                printf("\t%3.0f\t%6.1f\n",fahr,celsius);
                fahr=fahr-step;

        }

}
int main(int argc,char *argv){
printf("\t华氏\t摄氏\n");
print_table();
return 1;
}


1.6 为1(true)
1.7 为-1
#include <stdio.h>

int main(int argc,char *argv){
        printf("%d\n",EOF);
return 1;
}


1.8
#include <stdio.h>
int main(int argc,char *argv){
        int c,nl;
        nl=0;
        while((c=getchar())!=EOF){
                if(c=='\n'||c=='\t'||c=='\r'){
                nl++;
                }
        }
        printf("%d\n",nl);

return 1;
}


1.9 " "与' '还是有区别的……
#include <stdio.h>
int main(int argc,char *argv){
        int c,nl;
        while((c=getchar())!=EOF){
                if(c==' '){
                putchar(c);
                        while((c=getchar())==' '){
                }                           
        }   
        putchar(c);         
        }   
return 1;
}


1.10
#include <stdio.h>
int main(int argc,char *argv){
        int c,nl;
        while((c=getchar())!=EOF){
                if(c=='\t'){
                putchar('\\');
                putchar('t');
                }   
                else if(c=='\\'){
                putchar('\\');
                }   
                else if(c=='\b'){
                putchar('\b');
                }   
                else{
                putchar(c);
                }    
        }   
return 1;
}


1.11 边界条件最容易查出BUG,比如下面的程序如果头为空格 或者 尾为空格都会产生一个比正确大1的统计
#include <stdio.h>
int main(int argc,char *argv){
        int c,nl;
        nl=0;
        while((c=getchar())!=EOF){
                if(c==' '){
                        putchar(c);
                                while((c=getchar())==' '){
                        }   
                        nl++;
                }

        }
        nl++;
        printf("共有%d个单词\n",nl);
        return 1;
}



1.12
#include <stdio.h>
int main(int argc,char *argv){
        int c,nl;
        nl=0;
        while((c=getchar())!=EOF){
                if(c==' '){
                        putchar(c);
                                while((c=getchar())==' '){
    
                        }
                putchar('\n');
                }   

                putchar(c);    
        }
        return 1;
}


1.13
#include <stdio.h>

void print_table(int count[20]);

int main(int argc,char *argv){
        int c,nl;
        int count[20];

        int i=0;
        for(i=0;i<20;i++){
           count[i]=0;
        }
        int length=0;
        while((c=getchar())!=EOF){
                if(c==' '){
                        putchar(c);
                                while((c=getchar())==' '){
    
                        }
                count[length]++;    
                length=0;
                }
        length++;
        }
        print_table(count);
        return 1;
}


void print_table(int count[]){
        int i;
        for(i=0;i<20;i++){
                printf("长度为%d的单词出现了:",i);
                int j=0;
                for(j=0;j<count[i];j++){
                        printf("*");
                }
                printf("\n");
        }

1.14 忽略
1.15
#include <stdio.h>

float cal(float celsius){
        return celsius*(9.0/5.0)+32.0;
}
int main(int argc,char *argv){
float celsius;
scanf("%f",&celsius);
printf("%3.1f\n",cal(celsius));
return 1;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics