1-15
在一个复杂的实现中,可以抽出部分实现用函数封装;在要用的地方调用。
#include <stdio.h>
float celsius(float fahr)
{
return ((5.0/9.0)*(fahr-32.0));
}
main()
{
float fahr;
int lower, upper, step;
lower = 0;
upper = 300;
step = 20;
fahr = lower;
while (fahr<=upper) {
printf("%3.0f %.1f\n", fahr, celsius(fahr));
fahr += step;
}
}
打印知道的数,调用转换函数,思路清晰。
1-16
要写一个程序先把大概的过程构思出来,声明变量,函数,
#include <stdio.h>
#define MAXLINE 1000//输入最长行
int getline(char line[], int maxline);//输入行
void copy(char to[], char from[]);//保存最长行
main()
{
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];
max = 0;
while ((len =getline(line, MAXLINE)) > 0) {//行长大于0
printf("%d, %s\n", len, line);
if(len>max)//比较行长
{
max = len;
copy(longest, line);
}
}
if(max>0)//优化
printf("%s\n", longest);
return 0;
}
int getline(char s[], int lim)
{
int c, i, j;
j = 0;
for(i=0;(c=getchar()) != EOF && c != '\n'; i++)
{
if(i<lim-2)//优化
{
s[j] = c;
j++;
}
}
if(c == '\n')
{
s[j] = c;
j++;
i++;
}
s[j] = '\0';//字符串
return i;
}
void copy(char to[], char from[])
{
int i;
i = 0;
while((to[i]=from[i]) != '\0')//to[i]的值是否为'\n'
{
i++;
}
}
试着去写, 看别人怎么优化代码的。