Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1208137
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: 嵌入式

2009-12-19 09:14:16

5.2    填空题
(372)    设已定义char s[] = "\"Name\\Address\"\n";则字符串s所占的字节数是_______。
(373)    若有定义语句:char s[100],d[100]; int j=0, i=0;且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)
while([i])

d[j] = _________;
j++;
}
d[j]=0;
(374)    若想通过以下输入语句使a中存放字符串"1234",b中存放字符"5",则输入数据的形式应该是________。
Char a[10],b;
Scanf("a=%sb=%c", a, %b);
(375)    对于以下递归函数f,调用 f (3) 的返回值是_____。
f(int n)
{   
return((n>0) ? 2*f(n-1)+f(n-2) : -1);
}
(376)    以下函数调用语句中含有___个实参。
func((exp1,exp2),(exp3,exp4,exp5));
(377)    下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值);否则输出-1。请完成下面程序。
#include
#include
main()
{
    char c='a',t[50];
    int n,k,j;
    gets(t);
    n = _______;
    for (k=0;k    {
    if((_______){j=k;break;}
        else j-=1;
        printf("%d", j);
   }
}
(378)    下面程序的功能是在三个字符串中找出最小的。请填空。
#include
#inculde
 
main()
{
    char s[20],str[3][20];
    int i;
    for (i=0; i<3; i++) gets(str[i]);
    strcpy(s, _______);
    if (strcmp(str[2],s)<0) strcpy(s,str[2]);
    printf("%s\n", ________);
}
(379)    下面程序段的运行结果是___
char ch[] = "600";
int a, s=0;
for (a=0; ch[a]>='0' && ch[a]<='9'; a++)
{
s=10*s+ch[a]-'0';
}
printf("%d",s);
(380)    下列程序段的输出结果____。
int m;
int f(int x)

static int k = 0;
x-=k++;
return x;
}
m = f(f(3));
printf("%d ", m);
(381)    下列程序段的输出是_____。
# include 
int f(int m)                      
{   
static int k=0; 
    int s=0;            
    for(; k<=m; k++) s++;
    return s;
}
void main( )
{  int s1, s2;
   s1 = f(5);
   s2 = f(3);
   printf("%d %sn", s1, s2);
}
(382)    补充下面程序:
函数
    void f(char s[ ], char t[ ])
    {   
int k=0;
        while (s[k] = t[k]) 
 k++; 
    }
等价于:
    void f(char *s, char *t)
    {     
while (_____);
    }
(383)    下程序段的输出是_____。
#include 
void  fun()
{
static int a = 5;
a++;
printf("a=%d\n", a);
}
main()
{
for (int i=0; i<2; i++)
fun();
}
 
5.3    问答与设计
(384)    指出下面的函数的错误。
int square(volatile int *ptr) 

   return *ptr * *ptr; 
}
(385)    什么是递归(recursion)?怎样使用递归?
(386)    什么时候说明函数?
(387)    为什么要说明函数原型?
(388)    一个函数可以有多少个参数?
(389)    什么是内部函数?
(390)    如果一个函数没有返回值,是否需要加入return语句?
(391)    说明为什么要禁止函数直接或间接调用自己?
(392)    exit()和return有什么不同?
(393)    怎样把数组作为参数传递给函数?
(394)    在程序退出main()函数之后,还有可能执行一部分代码吗?
(395)    什么时候用一条switch语句比用多条if语句更好?
(396)    switch语句必须包含default分支吗?
(397)    switch语句的最后一个分支可以不要break语句吗?
(398)    空循环(null loops)和无穷循环(infinite loops)有什么区别?
(399)    continue和break有什么区别?
(400)    什么是重复处理(iterative processing)?
(401)    在C语言中表示真和假的最好方法是什么?
(402)    请修改以下代码:
include studio.h
main{}
/* this program prints the number of weeks in a year. /*
(
    int s
    s:=52;
    print(There are s weeks in a year");
(403)    函数名可以作实参吗?如果可以,请举例说明;如果不可以,请说明原因。
(404)    如何定义和说明可变参数的函数?
(405)    如将求3次方函数a=pow(a,3.0);改为a=a*a*a;能够优化代码,说明原因。
(406)    写函数htoi( s ),把由十六进制数字组成的字符串(前面可能包含0 x或0 X)转换成等价的整数值。字符串中允许的数字为: 0 ~ 9,a ~ f、以及A ~ F。
(407)    重写squeeze(s1, s2)函数,把字符串s1中与字符串s2中字符匹配的各个字符都删除掉。
(408)    编写函数any(s1, s2),它把字符串s2中任一字符在字符串s1中的第一次出现的位置作为结果返回。如果s1中没有包含s2中的字符,那么返回-1。
(409)    编写一个函数setbits(x, p, n, y),返回对x做如下处理得到的值: x从第p位开始的n位被置为y的最右边n位的值,其余各位保持不变。
(410)    编写一个函数invert(x, p, n),返回对x做如下处理得到的值: x从第p位开始的n位被求反(即,1变成0,0变成1),其余各位保持不变。
(411)    编写一个函数rightrot (x, n),返回将x向右循环移动n位所得到的值。
(412)    在求反码时,表达式x &= ( x - 1 )用于把x最右边的值为1的位删除掉。请解释一下这样做的道理。用这一方法重写b i t c o u n t函数,使之执行得更快一点。
(413)    使用条件表达式重写用于将大写字母转换成小写字母的函数low e r。
(414)    编写函数escape (s, t),将字符串t拷贝到字符串s中,并在拷贝过程中将诸如换行符与制表符等等字符转换成诸如\ n与\ t等换码序列。使用s w i t c h语句。再编写一个具有相反功能的函数,在拷贝过程中将换码序列转换成实际字符。
(415)    写函数expand(s1, s2),将字符串s 1中诸如a-z一类的速记等号在字符串s 2中扩展成等价的完整列表a b c..x y z。允许处理大小写字母和数字,并可以处理诸如a - b - c与a - z 0 - 9与- a -z等情况。正确安排好前导与尾随的"-"
(416)    修改i t o a函数使之改为接收三个变元。第三个变元是最小域宽。为了保证转换得的数(即字符串表示的数)有足够的宽度,在必要时应在数的左边补上一定的空格。
(417)    编写一个函数ungets(s),用于把整个字符串推回到输入中。ungets函数要使用buf与bufp吗?它可否仅使用ungetch函数?
(418)    定义宏swap(t, x, y),用于交换t类型的两个变元(使用分程序结构)。
(419)    请比较一下值调用与引用调用的相同点和不同点。
(420)    在函数调用时,实参与形参有哪几种对应关系?
(421)    用递归方法求N的阶乘。
(422)    对于以下递归函数f,计算f(3)的值。
int f(int k)

return(k<0 ? (k*=2): f(k-2)+k);
}
(423)    请编写函数 sum(number),返回正整数number的各位数字之和(number是长整型)。如sum(654321)=21 。
阅读(1557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~