目录
a[0]~a[9]这10个变量分别存储0、1、4、9、16、25、36、49、64、81:
从键盘输入5个0~9的数,然后输出0~9中那些没有出现过的数:
第五章 好戏在后面
第10节 逻辑挑战12:你好坏,关机啦
“-s”表示关机,“-r”表示重新启动,“-a”表示取消关机,“-t 50”表示在50秒后关机。
启动关机程序与6次猜数问题结合:
#include<time.h>
int main()
{
int a, b, sum;
sum = 6;
srand((unsigned)time(NULL));
a = rand() % 100;
while (1)
{
sum--;
scanf("%d", &b);
if (b > a)
printf("大了,还剩下%d次机会,请继续\n", sum);
if (b < a)
printf("小了,还剩下%d次机会,请继续\n", sum);
if (b == a)
{
printf("恭喜你,答对了!\n");
break;
}
if (sum == 0)
{
printf("没有机会了,系统将在50秒后关机\n");
system("shundown -s -t 50");
break;
}
}
return 0;
}
输出结果:
50
大了,还剩下5次机会,请继续
25
小了,还剩下4次机会,请继续
33
小了,还剩下3次机会,请继续
37
大了,还剩下2次机会,请继续
34
小了,还剩下1次机会,请继续
35
小了,还剩下0次机会,请继续
没有机会了,系统将在50秒后关机
第六章 天啊!一大串数正在接近
第2节 申请100个房子怎么办
a[0]~a[9]这10个变量分别存储0、1、4、9、16、25、36、49、64、81:
int main()
{
int a[10], i;
for (i = 0; i <= 9; i++)
{
a[i] = i * i;
}
for (i = 0; i <= 9; i++)
{
printf("%d ", a[i]);
}
return 0;
}
输出结果:
0 1 4 9 16 25 36 49 64 81
第3节 100个数的逆序
5个数的逆序:
int main()
{
int a[5], i;
for (i = 0; i <= 4; i++)
{
scanf("%d", &a[i]);
}
for (i = 4; i >= 0; i--)
{
printf("%d ", a[i]);
}
return 0;
}
输出结果:
9
4
3
6
7
7 6 3 4 9
第4节 逻辑挑战13:陶陶摘苹果
陶陶能够摘到的苹果的数目:
int main()
{
int h, a[10], i, sum;
for (i = 0; i <= 9; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &h);
sum = 0;
for (i = 0; i <= 9; i++)
{
if (a[i] <= h + 30)
sum++;
}
printf("%d", sum);
return 0;
}
输出结果:
134
187
142
100
153
124
196
142
155
136
120
6
第5节 逻辑挑战14:一个萝卜一个坑
从键盘输入5个0~9的数,然后输出0~9中那些没有出现过的数:
int main()
{
int a[10], i, t;
for (i = 0; i <= 9; i++)
a[i] = 0;
for (i = 1; i <= 5; i++)
{
scanf("%d", &t);
a[t] = 1;
}
for (i = 0; i <= 9; i++)
if (a[i] == 0)
printf("%d ", i);
return 0;
}
输出结果:
1
9
7
5
3
0 2 4 6 8
将输入的5个数(0~9)按照从小到大的顺序排序:
int main()
{
int a[10], i, j, t;
for (i = 0; i <= 9; i++)
a[i] = 0;
for (i = 1; i <= 5; i++)
{
scanf("%d", &t);
a[t]++;
}
for (i = 0; i <= 9; i++)
for (j = 1; j <= a[i]; j++)
printf("%d ", i);
return 0;
}
输出结果:
3
4
9
7
5
3 4 5 7 9
输入n个0~1000的整数按照从小到大排序:
int main()
{
int a[1001], i, j, t, n;
for (i = 0; i <= 1000; i++)
a[i] = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &t);
a[t]++;
}
for (i = 0; i <= 1000; i++)
for (j = 1; j <= a[i]; j++)
printf("%d ", i);
return 0;
}
输出结果:
10
1 10 100 1000 2 20 200 3 30 300
1 2 3 10 20 30 100 200 300 1000
第6节 逻辑挑战15:选择排序
将5个数(1~99)从小到大排序:
int main()
{
int a[6], i, t, j;
for (i = 1; i <= 5; i++)
scanf("%d", &a[i]);
for (i = 1; i <= 4; i++)
{
for (j = i + 1; j <= 5; j++)
{
if (a[i] > a[j])
{
t = a[i]; a[i] = a[j]; a[j] = t;
}
}
}
for (i = 1; i <= 5; i++)
printf("%d ", a[i]);
return 0;
}
输出结果:
77 12 98 45 14
12 14 45 77 98
第7节 二维数组
int a[3][4];
这面这行语句的作用是定义一个二维数组,它有3行4列,分别是a[0]行、a[1]行和a[2]行。
“两个for循环嵌套”来为这个二维数组赋值:
int main()
{
int a[3][4], i, j, x;
x = 0;
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 3; j++)
{
a[i][j] = x;
x++;
}
}
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 3; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
输出结果:
0 1 2 3
4 5 6 7
8 9 10 11
第8节 剩下的一些东西
3行5列的二维数组初始化前两行:
int main()
{
int a[3][5] = { {1, 2, 3},{4, 5} }, i, j;
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 4; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
输出结果:
1 2 3 0 0
4 5 0 0 0
0 0 0 0 0