6.2
编写一个嵌套循环,按下面的格式打印字符:
$
$$
$$$
$$$$
$$$$$
#include <stdio.h>
int main(void)
{
int i = 0;
while (i++ < 5)
{
int j = 0;
while (j++ < i)
{
printf("$");
}
printf("\n");
}
return 0;
}
6.3
编写一个嵌套循环,按下面的格式打印字符
F
FE
FED
FEDC
FEDCB
FEDCBA
#include <stdio.h>
int main(void)
{
int i = 0;
while (i++ < 6)
{
int j = 0;
char ch = 'F';
while (j++ < i)
{
printf("%c", ch--);
}
printf("\n");
}
return 0;
}
6.5
编写一个程序,输入一个字母后打印一个金字塔
如:输入A,打印:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
#include <stdio.h>
int main(void)
{
int i = 0;
char ch;
printf("Enter a word:>");
scanf_s("%c", &ch, 1);
while (i++ < 5)
{
int j = 1, k = 5;
int c = ch;
while (k > i)
{
putchar(' ');//这个循环打印每行的空格
k--;
}
while (j < i)
{
printf("%c", c++);//打印前半段
j++;
}
while (j > 0)
{
printf("%c", c--);//打印后半段
j--;
}
printf("\n");
}
return 0;
}
6.6
使用 for 循环打印一个表格,一行打印一个整数、该数的平方、该数的立方,用户输入表格的上下限
#include <stdio.h>
int main(void)
{
int a, b, c;
printf("请输入下限:>");
scanf_s("%d",&b);
printf("请输入上限:>");
scanf_s("%d",&a);
for(c = b; c < a + 1; c++)
{
printf("%5d %5d %5d\n", b, b * b, b * b * b);
b++;
}
return 0;
}
6.7
把一个单词倒序排列
#include <stdio.h>
#include <string.h>
int main(void)
{
int start, end;
char word[10];
printf("Enter a word:>");
scanf_s("%s", word, 10);
end = strlen(word) - 1;
for (start = 0; start < end + 1; start++)
{
printf("%c",word[end - start]);
}
return 0;
}
6.8 & 6.9
输入两个浮点数,用函数输出两数相减除以两数之积
#include <stdio.h>
float compute(float a, float b)
{
float c;
if (a > b)
{
return (a - b) / (a * b);
}
else
{
return (b - a) / (a * b);
}
}
int main(void)
{
float a, b;
while (1)
{
printf("Enter two floating-point number:>");
scanf_s("%f %f", &a, &b);
printf("the outcome is: %f\n", compute(a, b));
}
return 0;
}
6.10
输入上限和下限,打印此范围内所有整数的平方和,如:
Enter lower and upper integer limits:(5) (9)
The sums of the squares from 25 to 81 is 255
Enter next set of limits:(3) (25)
The sums of the squares from 9 to 625 is 5520
Enter next set of limits:(5) (5)
Done
#include <stdio.h>
int main(void)
{
int lower, upper, time, i, sum;
printf("Enter lower and upper integer limits:>");
scanf_s("%d %d", &lower, &upper);
while (lower < upper)
{
i = lower;
sum = 0;
for (time = lower; time < (upper + 1); time++)
{
sum += (i * i);
i++;
}
printf("The sums of the squares from %d to %d is %d\n", lower * lower, upper * upper, sum);
printf("Enter next set of limits:>");
scanf_s("%d %d", &lower, &upper);
}
printf("Done\n");
return 0;
}
6.11
编写一个程序,在数组中读入8个整数,按倒序打印这8个整数
#include <stdio.h>
int main(void)
{
int arr[8] = { 0 };
int i = 0;
printf("Enter eight numbers:>");
scanf_s("%d %d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6], &arr[7]);
printf("The numbers:");
for (i = 8; i > 0; i--)
{
printf("%d ", arr[i - 1]);
}
return 0;
}
6.12
计算两个无限数列:
1.0+1.0/2.0+1.0/3.0+1.0/4.0+……
1.0-1.0/2.0+1.0/3.0-1.0/4.0+……
求计算到100项、1000项、10000项的结果
#include <stdio.h>
int main(void)
{
float n, sum;
sum = 0;
for (n = 0; n < 100; n++)
{
sum += 1 / (n + 1);
}
printf("The first is(100): %f\n", sum);
sum = 0;
for (n = 0; n < 100; n++)
{
if ((int)n % 2 == 0)
{
sum += 1 / (n + 1);
}
else
{
sum -= 1 / (n + 1);
}
}
printf("The second is(100): %f\n", sum);
sum = 0;
for (n = 0; n < 1000; n++)
{
sum += 1 / (n + 1);
}
printf("The first is(1000): %f\n", sum);
sum = 0;
for (n = 0; n < 1000; n++)
{
if ((int)n % 2 == 0)
{
sum += 1 / (n + 1);
}
else
{
sum -= 1 / (n + 1);
}
}
printf("The second is(1000): %f\n", sum);
sum = 0;
for (n = 0; n < 10000; n++)
{
sum += 1 / (n + 1);
}
printf("The first is(10000): %f\n", sum);
sum = 0;
for (n = 0; n < 10000; n++)
{
if ((int)n % 2 == 0)
{
sum += 1 / (n + 1);
}
else
{
sum -= 1 / (n + 1);
}
}
printf("The second is(10000): %f\n", sum);
return 0;
}
6.13
创建一个有8个元素的数组,用for为元素赋值为2的前8次幂,用do while显示出来
#include <stdio.h>
int main(void)
{
int n;
int arr[8] = { 0 };
arr[0] = 2;
for (n = 1; n < 8; n++)
{
arr[n] = 2 * arr[n - 1];
}
n = 0;
do
{
printf("%d ", arr[n]);
n++;
} while (n < 8);
return 0;
}
6.14
编写一个程序,创建两个有8个元素的double类型数组,第一个数组元素值由用户输入,第二个数组的值由第一个数组的值相加得来,如:第二个数组第3个元素的值=第一个数组前3个元素的和,第二个数组第4个元素的值=第一个数组前4个元素的和……
#include <stdio.h>
int main(void)
{
double arr1[8] = { 0 };
double arr2[8] = { 0 };
int i,j, k;
printf("Enter eight numbers:>");
scanf_s("%lf %lf %lf %lf %lf %lf %lf %lf", &arr1[0], &arr1[1], &arr1[2], &arr1[3], &arr1[4], &arr1[5], &arr1[6], &arr1[7]);
for (i = 0; i < 8; i++)
{
for (j = 0; j < i + 1; j++)
{
arr2[i] += arr1[j];
}
}
for (k = 0; k < 8; k++)
{
printf("%lf ", arr1[k]);
}
printf("\n");
for (k = 0; k < 8; k++)
{
printf("%lf ", arr2[k]);
}
printf("\n");
return 0;
}
6.15
输入一个字符串(char),倒序打印出来
#include<stdio.h>
int main(void)
{
char str[256];
int i = 0;
printf("Enter the string:>");
do
{
scanf_s("%c", &str[i], 1);
i++;
} while (str[i - 1] != '\n');
while (i > 0)
{
printf("%c", str[i - 1]);
i--;
}
return 0;
}
6.16
A以10%的单利息投资了100刀(每年利息=原始投资*10%),B以5%的复合利息投资了100刀(每年利息=当前余额*5%),多少年后B的投资额会超过A
#include <stdio.h>
int main(void)
{
float A = 100, As = 100, B = 100;
int y = 0;
while (B <= As)
{
y++;
As += A * 0.1;
B += B * 0.05;
}
printf("%d\n", y);
return 0;
}
6.17
CL得到了100万美刀,存入年利率8%的银行,每年末取出10万刀,多少年后取出
#include <stdio.h>
int main(void)
{
float CL = 1000000;
int y = 0;
while (CL > 0)
{
y++;
CL += CL * 0.08;
CL -= 100000;
}
printf("%d\n", y);
return 0;
}
6.18
Dr.R一开始有5个朋友,第一周他少了1个朋友,剩下的朋友数量翻倍;第二周少了2个朋友,剩下的朋友数量翻倍;第N周少了N个朋友,剩下的朋友数量翻倍。计算第几周他的朋友超过了150位
#include <stdio.h>
int main(void)
{
int R = 5;
int w = 0;
while (R < 150)
{
w++;
R = (R - 1) * 2;
}
printf("%d\n", w);
return 0;
}