你该逆袭了
红色标注的是:错误的答案
蓝色标注的是:正确的答案
绿色标注的是:做题时有疑问的地方
橙色标注的是:答案中需要着重注意的地方
练习题
一、复习题
1、
我的答案:
2
2、
我的答案:
int 类型:36 18 9 4 2 1
double 类型:会一直执行 value /= 2命令,程序无法结束。
3、
我的答案:
x > 5;
(scanf("%lf", &x) == 0);
5 == x;
4、
我的答案:
(scanf("%d", &x) == 1);
x != 5;
x >= 20;
5、
我的答案:错误
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
int list[10] = {
0 }; //中括号
for (i = 1; i <= 10; i++) //分号
{
list[i] = 2 * i + 3;
for (j = 1; j >= i; j++)
{
printf(" %d", list[j]);
}
printf("\n");
}
return 0;
}
正确答案:
当 i 值为 1 时,嵌套循环的内层循环将会是无限循环,且该 for 循环使用 >= 在逻辑上错误。
for (j = 1; j >= i; j++) //错误
//应该改成
for (j = 1; j <= i; j++)
6、
我的答案:
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
char output = 0;
for (i = 0; i < 8; i++)
{
j = 0;
for (j = 0; j < 8; j++)
{
printf("%c ", '$');
}
putchar('\n');
}
return 0;
}
标准答案:
行数使用外层循环控制,行内数据通过内层循环控制打印。
7、
我的答案:
Hi! Hi! Hi! Bye! Bye! Bye! Bye! Bye!
ACGM
8、
我的答案:错误
Go west,young man!
Hp xftu-zpvoh!nbo"
Go west, young man!
$o west, young man!
正确答案:
错误原因:没有仔细审题,while(ch != ‘g’)
Go west,youn!
Hp!xftu-!zpvo
Go west, young
$o west, youn
9、
我的答案:
31|32|33|30|31|32|33|
***
1
5
9
13
***
2 6
4 8
8 10
***
======
=====
====
===
==
10、
我的答案:
mint
10
double
ii
11、
我的答案:
#include <stdio.h>
#define SIZE 8
int main()
{
int by_twos[SIZE] = {
0 };
int index = 0;
for (index = 0; index < SIZE; index++)
{
by_twos[index] = 2 * index;
}
for (index = 0; index < SIZE; index++)
{
printf("%d ", by_twos[index]);
}
printf("\n");
return 0;
}
12、
我的答案:
long name(int x) //返回类型一定要是 long
{
*****;
return long类型的值;
}
13、
我的答案:考虑非常不到位
long mit(int x)
{
long y = 0;
y = x * x;
return y;
}
正确答案:有我想不到的注意点
函数的参数为 int 类型,为了确保返回值为 long 类型,必须使用类型转换,且数值等于该参数的平方。处理方法有很多,其中更加安全的方式如下。
long square(int num)
{
return ((long)num) * num;
}
这样能够保证在计算平方之前就已经将类型转换为 long 类型,返回值为 long 类型。
下面的代码(也就是我的答案)则不够安全,主要原因在于计算平方时使用 int 类型,对于较大的数值,会产生 int 类型的越界,截断结果。转换为 long 类型后,结果依然是截断后的错误数据。
long square(int num)
{
return (long)(num * num); //不安全!
}
14、
我的答案:
1:Hi!
K = 1
k is 1 in the loop
Now k is 3
K = 3
k is 3 in the loop
Now k is 5
k = 5
k is 5 int the loop
Now k is 7
k = 7
二、编程练习
1、
我的答案:
#include <stdio.h>
#define COUNT 26
int main()
{
char c = 'a';
int n = 0;
char shuzu[26] = {
0 };
for (c = 'a', n = 0; c < 'a' + COUNT; c++, n++)
{
shuzu[n] = c;
}
for (n = 0; n < COUNT; n++)
{
printf("%c ", shuzu[n]);
}
printf("\n");
return 0;
}
标准答案:
程序需要两个循环,第一个循环初始化并存储小写字母,第二个循环用来打印数组的元素。
#include <stdio.h>
int main()
{
char alphabet[26] = {
0 };
int i = 0;
char c = 'a';
for (i = 0; i < 26; i++,c++)
{
alphabet[i] = c;
}
for (i = 0; i < 26; i++)
{
printf("%c ", alphabet[i]);
}
return 0;
}
2、
我的答案:
#include <stdio.h>
#define COUNT 5
int main()
{
int n = 0;
int m = 0;
for (n = 0; n < COUNT; n++)
{
for (m = 0; m < n + 1; m++)
{
printf("$");
}
printf("\n");
}
return 0;
}
标准答案:
外层循环控制打印的行数,内层循环控制打印的行内内容。
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 5; i++) //外层循环 控制 行数
{
for (j = 0; j < i; j++