#include <stdio.h>
#include <string.h>
#include <math.h>
/* 6-1 */
#define SIZE (26)
void main(void)
{
int i;
char string[SIZE];
for ( i = 0; i < SIZE; i+=1)
{
string[i] = 'a' + i;
}
for ( i = 0; i < SIZE; i++)
{
printf("%c", string[i]);
}
printf("\n");
return ;
}
/* 6-2 */
void main(void)
{
int row, i;
for (row=0; row < 5; row++)
{
for (i = 0; i <= row; i++)
printf("$");
printf("\n");
}
return ;
}
/* 6-3 */
void main(void)
{
int row, j;
char ch;
for (row = 0; row < 6; row++)
{
for (j = 0, ch = 'F'; j <= row; j++, ch--)
{
printf("%c", ch);
}
printf("\n");
}
return ;
}
/* 6-4 */
void main(void)
{
char ch = 'A';
int row, i;
for (row = 0; row < 6; row++ )
{
for (i = 0; i <= row; i++)
{
printf("%c", ch);
ch++;
}
printf("\n");
}
return ;
}
/* 6-5 */
void main(void)
{
int row, blank, len, j;
char ch, temp;
printf("Please enter an uppercase letter:");
scanf("%c", &ch);
/* 计算输入的字母到A共有多少个字母 */
len = ch - 'A' + 1;
for (row = 0; row < len; row++)
{
/* 打印空格 */
for (blank = row; blank < len; blank++)
printf(" ");
temp ='A' - 1;
/* 升序打印 */
for (j = 0; j <= row; j++ )
printf("%c", ++temp);
for (j = 0; j < row; j++)
printf("%c", --temp);
printf("\n");
}
return ;
}
/* 6-6 */
#define SQUARE(x) ((x)*(x))
#define CUBE(x) ((x)*(x)*(x))
void main(void)
{
int lower, upper;
printf("Please enter the lower number:");
scanf("%d", &lower);
printf("Please enter the upper number:");
scanf("%d", &upper);
printf(" n square n cube n\n");
for (; lower <= upper; lower++)
{
printf("%5d%7d%9d\n", lower, SQUARE(lower), CUBE(lower));
}
return ;
}
/* 6-7 */
void main(void)
{
char str[20], rev_str[20];
int i, len;
printf("Please enter the string:");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len; i++)
{
rev_str[i] = str[len - i - 1];
}
/* 要给rev_str字符最后加上字符串结束符,否则只是字符数组 */
rev_str[len] = '\0';
printf("The reverse word is :%s\n", rev_str);
return ;
}
/* 6-8 */
void main(void)
{
float x, y;
float diff, multiply;
printf("Please enter two float number(input type : xxx,yyy)(q to quit):");
while (scanf("%f,%f", &x, &y) == 2)
{
diff = x - y;
multiply = x * y;
printf("x - y = %f\n", diff);
printf("x * y = %f\n", multiply);
printf("(x-y) / (x*y) = %f\n", diff / multiply);
printf("Please enter next two float number(input type : xxx,yyy)(q to quit):");
scanf("%f,%f", &x, &y);
}
return ;
}
/* 6-9 */
float div_value(float x, float y);
void main(void)
{
float a, b, div;
printf("Please enter two float number(input type : xxx,yyy)(q to quit):");
while (scanf("%f,%f", &a, &b) == 2)
{
div = div_value(a, b);
printf("(x-y) / (x*y) = %f\n", div);
printf("Please enter next two float number(input type : xxx,yyy)(q to quit):");
scanf("%f,%f", &a, &b);
}
return ;
}
float div_value(float x, float y)
{
float diff, multiply;
diff = x - y;
multiply = x * y;
printf("x - y = %f\n", diff);
printf("x * y = %f\n", multiply);
return (diff / multiply);
}
/* 6-10 */
int square(int x);
void main(void)
{
int lower, upper;
int value, i,ret;
int sum;
printf("Enter lower and upper integer limits:");
ret = scanf("%d %d", &lower, &upper);
while ((ret == 2) && (lower < upper))
{
for (sum = 0,i = lower; i <= upper; i++)
{
value = square(i);
sum += value;
}
printf("The sums of the squares from %d to %d is %d\n", square(lower), square(upper), sum);
printf("Enter next set of limits:");
ret = scanf("%d %d", &lower, &upper);
}
printf("Done.\n");
return ;
}
int square(int x)
{
int a;
a = x * x;
return a;
}
/* 6-11 */
#define SIZE 8
void main(void)
{
int num[SIZE];
int i;
printf("Please enter 8 integer numbers:");
for (i = 0; i < 8; i++)
{
scanf("%d", &num[i]);
}
for (i = 7; i >= 0; i--)
{
printf("%d ", num[i]);
}
printf("\n");
return ;
}
/* 6-12 */
void main(void)
{
int i;
float sum = 0.0;
int n;
printf("Please enter the iteration time:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
sum += (1.0 / i);
}
printf("The sum is %.1f when iterated %d times.\n", sum, n);
return ;
}
void main(void)
{
int i;
float sum = 0.0;
int n;
double j;
printf("Please enter the iteration time:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
j = pow(-1, i+1); /* 进行幂运算,返回的是double类型 */
sum += (int)j * (1.0 / i);
}
printf("The sum is %.1f when iterated %d times.\n", sum, n);
return ;
}
/* 6-13 */
#define SIZE 8
void main(void)
{
int num[SIZE];
int i;
for (i = 0; i < SIZE; i ++)
{
num[i] = pow(2,i);
}
i = 0;
do
{
printf("%d ", num[i]);
i++;
}while(i < SIZE);
return ;
}
/* 6-14 */
#define SIZE 8
void main(void)
{
double num1[SIZE];
double num2[SIZE];
int i, cnt;
for (i = 0; i < SIZE; i++)
{
printf("Please enter num[8] array's %dth number:", i + 1);
scanf("%lf", &num1[i]);
num2[i] += num1[i];
}
for (i = 0; i < SIZE; i++)
{
printf("%.1lf ", num1[i]);
}
printf("\n");
for (i = 0; i < SIZE; i++)
{
printf("%.1lf ", num2[i]);
}
printf("\n");
return ;
}
/* 6-15 */
void main(void)
{
char ch[255];
int i = -1;
printf("Please enter the sentence:");
do
{
i++;
scanf("%c", &ch[i]);
}while(ch[i] != '\n');
for (; i > 0; i--)
{
printf("%c ", ch[i -1]);
}
return ;
}
/* 6-16 */
void main(void)
{
double daphne = 100;
double deirdre = 100;
double D_increase;
int year = 0;
do
{
year++;
daphne += 100 * 0.1;
D_increase = deirdre * 0.05;
deirdre += D_increase;
}while(deirdre < daphne);
printf("After %d years, Deirdre's money: %.2lf is beyond daphne's money:%.2lf\n", year, deirdre, daphne);
return ;
}
/* 6-17 */
void main(void)
{
double money = 100;
double m_increase;
int year = 0;
do
{
year++;
m_increase = money * 0.08;
money += m_increase - 10;
}while(money > 0);
printf("After %d years, money will run out.\n", year);
return ;
}
/* 6-18 */
int friend_increase(int n);
void main(void)
{
int week = 0;
int friends;
int total_friends = 5;
do
{
week++;
friends = total_friends - week;
total_friends = friend_increase(friends);
}while(total_friends < 150);
printf("After %d week, Babund's friend will beyond Dunbar's number(almost 150 people).\n", week);
return ;
}
int friend_increase(int n)
{
int a;
a = 2 * n;
return a;
}
《C Primer Plus》第六版第六章课后题
最新推荐文章于 2024-03-19 00:15:45 发布