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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值