本文涉及字符宽度,暂不做讲解,不懂留言
仅代表个人看法
如有侵权请说明
题目1:请画出例 5.6 中给出的3个程序段的流程图。
程序如下1、
#include <stdio.h>
int main()
{
int i, j, n = 0;
for (i = 1; i <= 4; i++)
for (j = 1; j <= 5; j++, n++)
{
if (n % 5 == 0)
printf("\n");
printf("%d\t", i * j);
}
printf("\n");
return 0;
}
2、
#include <stdio.h>
int main()
{
int i, j, n = 0;
for (i = 1; i <= 4; i++)
for (j = 1; j <= 5; j++, n++)
{
if (n % 5 == 0)
printf("\n"); //控制在输出5个数据后换行
if (i == 3 && j == 1)
break; //遇到第3行第1列,结束内循环
printf("%d\t", i * j);
}
printf("\n");
return 0;
}
3、#include <stdio.h>
int main()
{
int i, j, n = 0;
for (i = 1; i <= 4; i++)
for (j = 1; j <= 5; j++, n++)
{
if (n % 5 == 0)
printf("\n"); //控制在输出5个数据后换行
if (i == 3 && j == 1)
continue; //遇到第3行第1列,终止本次内循环
printf("%d\t", i * j);
}
printf("\n");
return 0;
}

题目2:请补充例 5.7 程序,分别统计当" fabs(t)>=1e-6"和"fabs(t)>=1e-8" 时执行循环体的次数。
解:
根据本题要求,分别统计当 fabs(t)>=1e-6 和 fabs(t)>=1e-8 时,执行循环体的次数。
(1)采用fabs(t)>=le-6作为循环终止条件的程序补充修改如下∶
#include <stdio.h>
#include <math.h>
int main()
{
int sign = 1, count = 0;
double pi = 0.0, n = 1.0, term = 1.0;
while (fabs(term) >= 1e-6)
{
pi = pi + term;
n = n + 2;
sign = -sign;
term = sign / n;
count++;
}
pi = pi * 4;
printf("pi=%10.8f\n", pi);
printf("count=%d\n", count);
return 0;
}
采用fabs(t)>= 1e-8作为循环终止条件的程序,
#include <stdio.h>
#include <math.h>
int main()
{
int sign = 1, count = 0;
double pi = 0.0, n = 1.0, term = 1.0;
while (fabs(term) >= 1e-8)
{
pi = pi + term;
n = n + 2;
sign = -sign;
term = sign / n;
count++;
}
pi = pi * 4;
printf("pi=%10.8f\n", pi);
printf("count=%d\n", count);
return 0;
}
题目3:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
解:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int p, r, n, m, temp; printf("请输入两个正整数n.m∶"); scanf("%d,%d,", &n, &m); if (n < m) { temp = n; n = m; m = temp; } p = n * m; while (m != 0) { r = n % m; n = m; m = r; } printf("它们的最大公约数为∶%d\n", n); printf("它们的最小公倍数为∶%d\n", p / n); return 0; }

题目4:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
include <stdio.h>
int main()
{
char c;
int letters = 0, space = 0, digit = 0, other = 0;
printf("请输人一行字符:\n");
while ((c = getchar()) != '\n')
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
letters++;
else if (c == ' ')
space++;
else if (c >= '0' && c <= '9')
digit++;
else
other++;
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n", letters, space, digit, other);
return 0;
}
题目5:求 Sn=a+aa+aaa+⋯+aa…a⏞n个a 之值,其中a是一个数字,n表示a的位数,n由键盘输入。例如:2+22+222+2222+22222 (此时 n=5)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, n, i = 1, sn = 0, tn = 0;
printf("a,n=:");
scanf("%d, %d", &a, &n);
while (i <= n)
{
tn = tn + a;
sn = sn + tn;
a = a * 10;
++i;
}
printf("a十aa十aa十...=%d\n", sn);
return 0;
}
题目6:求 ∑n=120n! (即求1!+2!+3!+4!+…+20!)。
#include <stdio.h>
int main()
{
double s = 0, t = 1;
int n;
for (n = 1; n <= 20; n++)
{
t = t * n;
s = s + t;
}
printf("1!+2!+...+20!=%22.15e\n", s);
return 0;
}
注意(s 不应定义为 int 型或 long 型,因为在使用 Turbo C 或 Turbo C++ 等编译系统时,int 型数据在内存占 2个字节,而整数的范围为-32768~32767,long 数据在内存占 4 个字节,整数的范围为 -21亿~21亿。用Visual C++ 6.0 时,int 型和 long 型数据在内存都占4 个字节,数据的范围为-21亿~21 亿。无法容纳求得的结果。今将 s 定义为 double 型,以得到更多的精度。在输出时,用 22.15e 格式,使数据宽度为 22,数字部分中小数位数为15位。 )-------参考谭浩强老师C语言程序设计(第五版)
题目7:求
∑k=1100k+∑k=150k2+∑k=1101k 。
#include <stdio.h>
int main()
{
int nl = 100, n2 = 50, n3 = 10;
double k, s1 = 0, s2 = 0, s3 = 0;
for (k = 1; k <= nl; k++)
{
s1 = s1 + k;
}
for (k = 1; k <= n2; k++)
{
s2 = s2 + k * k;
}
for (k = 1; k <= n3; k++)
{
s3 = s3 + 1 / k;
}
printf("sum=%15.6f\n", s1 + s2 + s3);
return 0;
}
题目8:输出所有的"水仙花数",所谓"水仙花数"是指—个 3位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为 153=13+53+33 。
#include <stdio.h>
int main()
{
int i, j, k, n;
printf("parcissus numbers are ");
for (n = 100; n < 1000; n++)
{
i = n / 100;
j = n / 10 - i * 10;
k = n % 10;
if (n == i * i * i + j * j * j + k * k * k)
printf("%d ", n);
}
printf("\n");
return 0;
}
结果:

题目9:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1,2,3,而 6=1+2+3 ,因此 6 是"完数"。编程序找出 1000 之内的所有完数,并按下面格式输出其因子
6 its factors are 1,2,3
方法一
#include <stdio.h>
#define M 1000
int main()
{
int k1, k2, k3, k4, k5, k6, k7, k8, k9, k10;
int i, a, n, s;
for (a = 2; a <= M; a++)
{
n = 0;
s = a;
for (i = 1; i < a; i++)
if (a % i == 0)
{
n++;
s = s - i;
switch (n)
{
case 1:
k1 = i;
break;
case 2:
k2 = i;
break;
case 3:
k3 = i;
break;
case 4:
k4 = i;
break;
case 5:
k5 = i;
break;
case 6:
k6 = i;
break;
case 7:
k7 = i;
break;
case 8:
k8 = i;
break;
case 9:
k9 = i;
break;
case 10:
k10 = i;
break;
}
}
if (s == 0)
{
printf("%d ,Its factors are", a);
if (n > 1)
printf("%d,%d", k1, k2);
if (n > 2)
printf(",%d", k3);
if (n > 3)
printf(",%d", k4);
if (n > 4)
printf(",%d", k5);
if (n > 5)
printf(",%d", k6);
if (n > 6)
printf(",%d", k7);
if (n > 7)
printf(",%d", k8);
if (n > 8)
printf(",%d", k9);
if (n > 9)
printf(",%d", k10);
printf("\n");
}
}
return 0;
}
方法二
#include <stdio.h>
int main()
{
int m, s, i;
for (m = 2; m < 1000; m++)
{
s = 0;
for (i = 1; i < m; i++)
if ((m % i) == 0)
s = s + i;
if (s == m)
{
printf("%d,its factors are", m);
for (i = 1; i < m; i++)
if (m % i == 0)
printf("%d ", i);
printf("\n");
}
}
return 0;
}
本文遵守Creative Commons协议,侵权必究
如有转载请说明出处
谢谢观看与点赞