页码 |
|
131 | 打印Fibonacci序列前30个数 |
134、135 | 求2.38、3.142、5.674、8.257、6.44的平均值的2个程序 |
137 | 统计由标准输入得到的文件中各个数字字符出现的次数 |
138 | 求数组的各元素的平方和的2个程序 |
140 | 将数组元素翻转 |
143、144 | 字符串的复制的3个程序 |
145、146 | 读入一个文件,输出其中最长的一行的2个程序 |
151、152 | 计算矩阵乘积 |
151 | 求出任何n×5的数组中所有数据的平均值 |
返回 总目录
例:打印Fibonacci序列前30个数
#include <stdio.h>
int main (void) {
long fib[30];
int n;
fib[0] = 1;
fib[1] = 1;
for (n = 2; n < 30; n++)
fib[n] = fib[n-1] + fib[n-2];
for (n = 0; n < 30; n++) {
printf("%d", fib[n]);
putchar(n % 6 == 5 ? '\n'
: ' ');
}
return 0;
}
例:求2.38、3.142、5.674、8.257、6.44的平均值的2个程序
程序 1:
#include <stdio.h>
double a[5] = {2.38, 3.142, 5.674, 8.257, 6.44};
int main (void) {
int n;
double sum = 0.0;
for (n = 0; n < 5; n++)
sum += a[n];
printf("Average: %f\n", sum / 5);
return 0;
}
程序 2:
#include <stdio.h>
double a[] = {2.38, 3.142, 5.674, 8.257, 6.44};
#define NUM (sizeof(a) / sizeof(a[0]))
int main (void) {
int n;
double sum = 0.0;
for (n = 0; n < NUM; n++)
sum += a[n];
printf("Average: %f\n", sum / NUM);
return 0;
}
#include <stdio.h>
int main (void) {
int c, i, cs[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
while ((c = getchar()) != EOF)
if (c >= '0' &&
c <= '9')
cs[c - '0']++;
for (i = 0; i < 10; i++)
printf("%d ", cs[i]);
putchar('\n');
return 0;
}
程序 1:
double sqsum0(double a[]) {
double x = 0.0;
int i;
for (i = 0; i < LEN; i++)
/*符号常量 LEN 是数组的长度 */
x += a[i] * a[i];
return x;
}
程序 2:
double sqsum(double a[], int n) {
double x = 0.0;
int i;
for (i = 0; i < n; i++)
x += a[i] * a[i];
return x;
}
void rev(int a[], int n) {
int x, i, m = n/2;
for (i = 0; i < m; i++) {
x = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = x;
}
int main (void) {
int i, b[] = {1, 2, 3, 4, 5, 6, 7};
for (i = 0; i < 7; i++)
printf("b[%d] = %d\n", i,
b[i]);
rev(b, 7);
printf("After reversion:\n");
for (i = 0; i < 7; i++)
printf("b[%d] = %d\n", i,
b[i]);
return 0;
}
程序 1:
void str_copy (char s[], char t[]) {
int i = 0;
while (t[i] != '\0') {
s[i] = t[i];
i++;
}
}
程序 2:
void str_copy (char s[], char t[]) {
int i = 0;
while ((s[i] = t[i]) != '\0')
i++;
}
程序 3:
void str_copy (char s[], char t[]) {
int i = 0;
while (s[i] = t[i]) i++;
}
程序 1:
#include <stdio.h>
#define MAXLEN 1024
int getline(char line[], int limit);
void str_copy (char s[], char t[]);
int main (void) {
int n, max = 0; /* 记录当前行和最长行的长度 */
char line[MAXLEN], maxline[MAXLEN];
while ((n = getline(line, MAXLEN)) > 0)
if (n > max) {
max = n;
str_copy(maxline, line);
}
if (max > 0)
printf("%s\n", maxline);
return 0;
}
void str_copy (char s[], char t[]) {
int i = 0;
while ((s[i] = t[i]) != '\0')
i++;
}
int getline(char line[], int limit) {
int c, i = 0;
while (i < limit - 1 &&
(c = getchar()) != EOF && c != '\n') {
line[i] = c;
i++;
}
if (c == '\n') {
line[i] = '\n';
i++;
}
line[i] = '\0';
return i;
}
程序 2:
#include <stdio.h>
#define MAXLEN 1024
int getline(void);
void str_copy (void);
char line[MAXLEN], maxline[MAXLEN];
main (void) {
int n, max = 0; /* 记录当前行和最长行的长度 */
while ((n = getline()) > 0)
if (n > max) {
max = n;
str_copy();
}
if (max > 0)
printf("%s\n", maxline);
return 0;
}
void str_copy () {
int i = 0;
while ((maxline[i] = line[i]) != '\0')
i++;
}
int getline(void) {
int c, i = 0;
while (i < MAXLEN - 1 &&
(c = getchar()) != EOF && c != '\n') {
line[i] = c;
i++;
}
if (c == '\n') {
line[i] = '\n';
i++;
}
line[i] = '\0';
return i;
}
#include <stdio.h>
#define N 5
double A[N][N] = { ... ...}, B[N][N] = { ... ...},
C[N][N]; /* 数组A和B的实际数据需要填充 */
int main (void) {
int i, j, k;
double x;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
{
x = 0.0;
for (k = 0; k < N; k++)
x += A[i][k] * B[k][j];
C[i][j] = x;
}
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
printf("%f%c", C[i][j], j == N-1 ? '\n' :' ');
return 0;
}
double aaverage(double a[][5], int n) {
int i, j;
double sum = 0.0;
for (i = 0; i < n; i++)
for (j = 0; i < 5; j++)
sum += a[i][j];
return sum / (5 * n);
}