第四章

因为比较简单,所以分类的话我给它弄到了小白学C语言那里了

编程计算1+3+5+······+101的值,并输出计算结果。

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
int i, sum = 0;
for (i = 1;i <= 101;i = i + 2)
sum = sum + i;
printf("sum=%d\n", sum);
return 0;
}

要求:输出100~200之间的不能被3整除的数。

编程思路:

对100到200之间的每一个整数进行检查,如果不能被3整除,输出,否则不输出。无论是否输出此数,都要接着检查下一个数(直到200为止)。

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
int n;
for (n = 100;n <= 200;n++) {
if (n % 3 == 0) continue;
printf("%d ", n);
}
return 0;
}

输出以下4*5的矩阵。

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 12 16 20

解题思路:

可以用循环的嵌套来处理此问题,用外循环来输出一行数据,用内循环来输出一列数据,按矩阵的格式(每行5个数据)输出。

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>

int main()
{
int i,j,n;
for(i=1;i<=4;i++){
printf("\n");
for(j=1;j<=5;j++){
printf("%d ",i*j);
}}
return 0;
}

第五章

对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main()
{
int i, a[10];
for (i = 0;i < 10;i++)
a[i] = i;
for(i = 9;i >= 0;i--)

printf("%d ", a[i]);
printf("\n");

return 0;
}

有10个地区的面积,要求对它们按由小到大的顺序排列。

解题思路:

排序的规律有两种:一种是“升序”,从小到大;另一种是“降序”,从大到小

把题目抽象为:“对n个数按升序排序”

采用起泡法排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
void input(int a[]);
void output(int c[]);
void bidaxiao(int a[]);
int main()
{
int i, a[10];
input(a);
bidaxiao(a);
output(a);
return 0;
}
//功能:对a[10]赋值
void input(int a[])
{
int i;
for (i = 0;i < 10;i++)
{
printf("请输入第%d个数据:", i + 1);
scanf_s("%d", &a[i]);
}

}
//功能:对a[10]进行输出
void output(int c[])
{
int i;
for (i = 0;i < 10;i++)
printf("%d \t", c[i]);
}
//功能:将数组的数进行大小比较
void bidaxiao(int a[])
{
int i,t,n=9,b=1;
do {
for (i = 0;i < 10;i++)
{
if (a[i] > a[i + 1])continue;
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
n--;
b++;
} while (n >= 0);
}

有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

解题思路:

采用“打擂台算法”

先把a[0][0]的值赋给变量max

max用来存放当前已知的最大值

a[0][1]与max比较,如果a[0][1]>max,则表示a[0][1]是已经比过的数据中值最大的,把它的值赋给max,取代了max的原值

以后依此处理,最后max就是最大的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
void input(int a[][4]);
void output(int b[][4]);
int bidaxiao(int a[][4]);
void find(int c, int a[][4]);
int main()
{
int a[3][4],c;
input(a);
output(a);
bidaxiao(a);
c = bidaxiao(a);
find(c, a);
printf("请珍惜我的成果哦,感谢你的使用");
return 0;
}

//函数功能:对数组进行赋值
void input(int a[][4])
{
int i, j;
for (i = 0;i < 3;i++) //行下标遍历
{
for (j = 0;j < 4;j++)//列下标遍历
{
printf("请给第%d行第%d列的数赋值\n", i + 1, j + 1);
scanf_s("%d", &a[i][j]);
}
printf("\n");
}
}

//函数功能:对数组进行输出
void output(int b[][4])
{
int i = 0, j = 0;
printf("你输入的数组为:\n");
for (i = 0;i < 3;i++) //行下标遍历
{
for (j = 0;j < 4;j++)//列下标遍历
{
printf("%d\t", b[i][j]);
}
printf("\n");
}
}

//找出最大的那个数的值
int bidaxiao(int a[][4])
{
int b = a[0][0], i, j;
for (i = 0;i < 3;i++)
{
for (j = 0;j < 4;j++)
{
if (b < a[i][j])
{
b = a[i][j];
}
}
}
printf("最大的那个数位为:%d\n", b);
return b;
}

//找出最大数的行列数
void find(int c,int a[][4])
{
int i, j;
for (i = 0;i < 3;i++)
{
for (j = 0;j < 4;j++)
{
if (c != a[i][j])continue;
printf("数组中最大的数%d所在的行数为%d,列数为%d\n", c, i+1, j+1);
}
}
}

输出一个菱形图。

解题思路:

定义一个字符型的二维数组,用“初始化列表”进行初始化

用嵌套的for循环输出字符数组中的所有元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main()
{
int a[3][4],i,j;
for (i = 0;i < 3;i++)
{
for (j = 0;j < 4;j++)
{
scanf_s("%c", &a[i][j]);
}
}
for (i = 0;i < 3;i++)
{
for (j = 0;j < 4;j++)
{
printf("%c\t", a[i][j]);
}
}
return 0;
}
更新于

请我喝[茶]~( ̄▽ ̄)~*

罗梓丰 微信支付

微信支付

罗梓丰 支付宝

支付宝