3.2 填空题
(267) 根据编码规范,所有代码都应____级以上的warning编译成功。
(268) 根据编码规范,所有的源文件应是可打印的______,在编辑器中定义 TAB 键自动用__个空格代替。
(269) 根据编码规范,文件名和目录的长度不要超过_____字符。
(270) 头文件应避免被重复引用,应使用_____________预处理块。
(271) 用 #include 格式来引用_________________。
(272) 用 #include "filename.h" 格式来引用__________________。
(273) 根据编码规范,声明函数原型时给出参数名称和类型,并且与实现此函数时的参数名称、类型保持一致,无参数的函数,用______声明。
(274) 根据编码规范,代码文件不要超过______行,一个函数的代码不要超过_____行, 每行不应超过______个字符。
(275) 一个程序中的空行数目最好占总代码行的_____,注释行数不应少于总代码行的______。
(276) 目录、文件的命名均不要超过_____个字符。
3.3 问答与设计
(277) 使用goto语句会有什么不良后果?
(278) 为什么要尽量避免函数带有"记忆"功能?
(279) 不设计多参数函数的目的是什么?
(280) 分别说明extern、static、auto变量的作用域范围。
(281) 什么是const指针?
(282) 什么时候应该使用const修饰符?用const修饰常量有什么好处?
(283) 什么时候应该使用register修饰符?
(284) 什么时候应该使用volatile修饰符?
(285) 一个变量可以同时被说明为const和volatile吗?
(286) 什么时候应该使用类型强制转换(typecast)?
(287) 什么时候不应该使用类型强制转换(typecast)?
(288) 怎样判断一个数字型变量可以容纳的最大值?
(289) 对不同类型的变量进行算术运算会有问题吗?
(290) 请回答下面关于标识符命名规则的问题:
a. 可以用下划线开头吗?
b. 可以用数字开头吗?
c. 大小写字母表示的意义一样吗?
d. 长度可以超过32个字符吗?
e. 可以使用系统关键字吗?
(291) 较长的变量名会影响程序的速度、大小或效率吗?
(292) 使用注释会影响程序的速度、大小或效率吗?
(293) 使用空白符会影响程序的速度、大小或效率吗?
(294) 请说明变量的命名规则。
(295) 请说明函数命名。
(296) 请说明如何命名常量和宏。
(297) 请说明如何命名用户定义类型。
(298) 使用大括号的正确方法是什么?
(299) 使用#define命令定义宏常量的好处有哪些?
(300) 全局函数的命名应该使用"前缀_动作+名词+属性(参数)" (动宾词组)的规则,局部函数的命名去掉前缀。"前缀"用来说明什么?
(301) 变量的命名应该使用"前缀_名词"或者"前缀_形容词+名词"规则。"前缀"用来说明什么?
(302) 分析比较下面代码的执行效率:
a. for (row=0; row<100; row++)
{
for (col=0; col<5; col++)
{
sum = sum + a[row][col];
}
}
b. for (col=0; col<5; col++)
{
for (row=0; row<100; row++)
{
sum = sum + a[row][col];
}
}
(303) 分析比较下面代码的执行效率:
a. for (i=0; i {
if (condition)
{
DoSomething();
}
else
{
DoOtherthing();
}
}
b. if (condition)
{
for (i=0; i {
DoSomething();
}
}
else
{
for (i=0; i {
DoOtherthing();
}
}
(304) 分析比较下面代码的执行效率:
a. for (i = 0; i < MAX_ADD_NUMBER; i++)
{
nSum += i;
nBackSum = nSum ; // 备份和
}
b. for (i = 0; i < MAX_ADD_NUMBER; i++)
{
nSum += i ;
}
nBackSum = nSum ; // 备份和
(305) 不要把参数作为局部变量使用的原因是什么?
(306) const 有什么用途?(请说明三种)
(307) 尽量不要省略函数返回值的类型,原因是什么?
(308) 为什么要在头文件而不是程序文件中声明"extern"?
(309) 请指出下面代码的错误并改正。
// module1.h
int a = 5; // 在模块1的.h文件中定义int a
// module1 .c
#include "module1.h" // 在模块1中包含模块1的.h文件
// module2 .c
#include "module1.h" // 在模块2中包含模块1的.h文件
// module3 .c
#include "module1.h" // 在模块3中包含模块1的.h文件
(310) 请分析下面代码的有效性:
while (c == '\t' || c = ' ' || c == '\n')
c = getc(f);
(311) 整理下面代码,使其符合编码规范:
int a = 5, b = 7, c;
c = a+++b;
(312) 如何优化下面代码:
void main(void)
{
int i, value[100];
for (i = 0; i < 100; i++)
{
value[i] = i;
}
}
(313) 如何优化下面代码:
main(void)
{
register int nCounter;
int values[100];
int a = 1, b = 1, c = 2;
for (nCount = 0; nCount < 100; nCounter++)
{
values[nCounter] = (a * b) + c + nCounter;
}
return 0;
}
(314) 如何优化下面的代码:
void func1(int i, int j)
{
int k=20;
int a,b,c;
a=i*j/k;
b=i*j/k;
c=i*j/k;
};
(315) 如何优化下面的代码:
#define uchar unsigned char
#define uint unsigned ini
#define LEN 20
void fun1(int num)
{
uchar i;
uint mem[LEN]
for (i = 0; i < num*4+2; j++)
{
mem[i]=0;
}
}
(316) 如何优化下面的代码:
#define uchar unsigned char
#define uint unsigned int
#define LEN
uchar array1[LEN];
uchar array2[LEN];
void func1()
{
uchar I;
uint sum=0;
for(i=0;i {
sum = sum + array1[i] + array2[i];
}
}
(317) 如何优化下面代码:
puts (char *s)
{
register int t;
for (t = 0; s[t]; t++)
{
putch(s[t]);
}
}
(318) 为什么不能用取址运算符"&"来获取register变量的地址?
(319) 为什么结构中的位域要尽可能相邻?
(320) 为什么要禁用GOTO语句?
(321) 变乘法运算为递归加法运算是强度削弱吗?说明原因。
(322) 设计方案输出文本文件 input.txt 中的非空格字符
阅读(645) | 评论(0) | 转发(0) |