现附上第六章答案,由于嵌套引用较繁琐,故瑕疵较多,欢迎指正交流
//6.16.1
//6.16.1储存26个小写字母
# include <stdio.h>
int main(void)
{
int i;
int k;
char ch[26];
for (i = 0,k = 1; i < 26;)
{
printf("enter the %d character\n", k++);
scanf("%c", &ch[i++]);
getchar(); //清楚缓冲区的回车符
}
for (i = 0, k = 1; i < 26;)
printf("%c", ch[i++]);
return 0;
}
//6.16.2
//6.16.2按格式打印字符$
# include <stdio.h>
int main(void)
{
char c = '$';
int i,j;
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= i; j++)
printf("%c", c);
printf("\n");
}
return 0;
}
//6.16.3
//6.16.3
# include <stdio.h>
int main(void)
{
char c = 'F';
int i, j;
for (i = 1; i <= 6; i++)
{
for (j = 1; j <= i; j++, c--)
printf("%c", c);
printf("\n");
c = 'F';
}
return 0;
}
//6.16.4
//6.16.4嵌套循环
# include <stdio.h>
int main(void)
{
char ch = 'A';
int i;
int j;
for (i = 1; i <= 6; i++)
{
for (j = 1; j <= i; j++)
printf("%c", ch++);
printf("\n");
}
return 0;
}
//6.16.5
//6.16.5金字塔型 输入的字母不局限于A
# include <stdio.h>
int main(void)
{
char bh;//确定输入的字符和打印行数
char ch = 'A';//利用A依次打印其他字符
int i;//规范行数
int j;//规范空格数
int k;//规范升序打印字母
int l;//规范降序打印字母
int rows;//确定行数
printf("Please enter a character\n");
scanf("%c", &bh);
rows = (int)(bh - 'A' + 1);//行数计算
ch = ch - 1; //去除自增符号带来的影响
for(i = 1; i <= rows ; i++ )
{
for (j = 1; j <= rows - i; j++)
printf(" ");
for (k = 1; k <= i; k++)
printf("%c", ++ch);
ch = ch - 1;//去除自增符号带来的影响
for (l = 1; l <= i - 1; l++)
printf("%c", ch--);
printf("\n");
}
return 0;
}
//6.16.6
//6.16.6输入上下限
# include <stdio.h>
int main(void)
{
int lower, higher;
printf("Please enter a lower number\n");
scanf("%d", &lower);
printf("Please enter a higher number\n");
scanf("%d", &higher);
printf("n square cube \n");
for (; lower <= higher; lower++)
{
printf("%-9d%-9d%-9d\n", lower, lower * lower, lower * lower * lower);
}
return 0;
}
//6.16.7
//倒序打印单词
# include <stdio.h>
int main(void)
{
char mit[20];
int i,j;
i = 0;
printf("请输入一个单词:\n");
scanf("%s", &mit);
printf("%s\n", mit);
for (j = strlen(mit) - 1; j>=0; j-- )
printf("%c", mit[j]);
return 0;
}
//6.16.8
//6.16.8输入浮点数
# include <stdio.h>
int main(void)
{
float a1;
float a2;
printf("Please enter two float numbers\n");
while(scanf("%f %f", &a1, &a2) == 2)
printf("result: %f\n", (a1 - a2)/(a1 * a2));
printf("q to quit\n");
}
return 0;
}
//6.18.9
//6.16.9修改练习八
# include <stdio.h>
float a3(float a1, float a2);
int main(void)
{
float a1,a2;
float a4;
printf("Please enter two float numbers\n");
while(scanf("%f %f", &a1, &a2) == 2)
{
a4 = a3(a1, a2);//返回值即是函数a3return回来的数
printf("result: %f\n", a4);
printf("q to quit\n");
}
return 0;
}
float a3(float a1, float a2)
{
float b;
b = (a1 - a2)/(a1 * a2);
return b;
}
//6.18.10
//输入一个上限整数和一个下限整数,计算中间所有整数平方和
# include <stdio.h>
int main(void)
{
int i, j, k;//k作为中间媒介
int sum;
printf("Please enter lower and integer limits:");
scanf("%d %d", &i, &j);
while(i < j)
{
k = j - i + 1;
for(sum = 0; i <= j; i++)
{
sum = sum + i * i;
}
printf("The sums of the squares from %d to %d is %d\n",(j - k +1)*(j - k + 1) , j * j, sum);
printf("Enter next set of limits: ");
scanf("%d %d", &i, &j);
}
printf("Done");
return 0;
}
//6.18.11
//读入8个整数,倒序打印
# include <stdio.h>
int main(void)
{
int num[8];
int i, j, k;//k帮助用户识别输入到第几个数
for (i = 0, j = 8, k = 1; i < j; i++)
{
printf("Please enter the %d number\n", k++);
scanf("%d", &num[i]);
getchar();
}
i -= 1; //去除上一个for循环时多加的1
for (; 0 <= i; i--)
printf("%d ", num[i]);
return 0;
}
//6.18.12
//6.18.2
# include <stdio.h>
# include <math.h>
int main(void)
{
int i,j;
float sum1 = 0;
float sum2 = 0;
printf("Please enter the higher number\n");
scanf("%d", &j);
for (i = 1;i <= j;i++)
{
sum1 += 1.0/i;
sum2 += -(1.0/ i * pow(-1,i));
}
printf("The sum1 is %f\n", sum1);
printf("The sum2 is %f\n", sum2);
return 0;
}
//sum1不收敛,sum2收敛于0.7左右
//6.18.13
//6.18.13
# include <stdio.h>
# include <math.h>
int main(void)
{
int num[8];
int i;
for (i = 0; i < 8; i++)
{
num[i] = pow(2,i);
}
i =0;
do
{
printf("num[%d] = %d\n", i, num[i]);
i++;
}while(i < 8);
return 0;
}
//6.18.14
//6.18.14
# include <stdio.h>
int main(void)
{
double num1[8];
double num2[8];
double sum = 0;
int i, k;
for(i = 0, k = 1; i < 8; i++)
{
printf("Please enter the %d number\n", k++);
scanf("%lf", &num1[i]);
getchar();
}
for(i = 0; i < 8; i++)
{
sum = sum + num1[i];
num2[i] = sum;
}
for(i = 0; i < 8; i++)
{
printf("num1[%d] = %lf", i, num1[i]);
}
printf("\n");
for(i = 0; i < 8; i++)
{
printf("num2[%d] = %lf", i, num2[i]);
}
return 0;
}
//6.18.15
//6.16.15倒序排列
# include <stdio.h>
# include <string.h>//提供strlen()函数
int main(void)
{
char ch[255];
int i;
int k;
printf("Please enter the line character\n");
scanf("%s", ch);
k = strlen(ch) - 1;//数组后有个占位符/0
for (i = 0; i <= k; k--)
printf("%c", ch[k]);
return 0;
}
//6.18.16
//6.18.16
# include <stdio.h>
# define ORIGIN 100
int main(void)
{
float interest1 = 0.1;
float interest2 = 0.05;
float daphne = 100;
float deirdre = 100;
int i;
for (i = 1; deirdre <= daphne; i++)
{
daphne = ORIGIN + ORIGIN * interest1 * i;
deirdre= deirdre + deirdre * interest2;
}
i = i - 1;//for循环后i会多自增1
printf("the %d year Deirdre(%f) more than Daphne(%f)", i, deirdre, daphne);
return 0;
}
//6.18.17
//6.18.17
# include <stdio.h>
# define LUCK 100
# define interest 0.08
int main(void)
{
int years;
float balance;
balance = LUCK;
for (years = 1; balance > 0; years++)
{
balance = balance + balance * interest;
balance = balance - 10;
}
years = years - 1;
printf("the %d year", years);
return 0;
}
//6.18.18
//6.18.18
# include <stdio.h>
# define begin 5
int main(void)
{
int i = begin;
int j;
for (j = 1; i < 150; j++)
{
i = i - j;
i = i * 2;
}
j = j - 1;
printf("the %d week", j);
return 0;
}
如有意见,欢迎交流