Web前置课作业

Web前置课作业:

C语言练习

1. 判断char型变量c1是否为小写字母的正确表达式是()。

	 A、’a’<=c1<=’z’
	 B、(c1>=a)&&(c1<=z)
	 C、(‘a'>=c1)‖(‘z’<=c1)
	 D、(c1>=’a’)&&(c1<=’z’)
正确答案:D
【解析】
字符的比较其实是比较它们的ASCⅡ码值,在ASCⅡ码表中,小写字母字符
‘a'~’z’是连续的,其ASCⅡ码值是逐渐增1,故判断c1是否为小写字母,应判断c1l是否大于或等于字符’a’,并且小于或等于字符’z’。故正确答案是D。

2. 若 有 # define S(a,b) a*b 则 语 句area=S(3,2); area 的值为6。请问这句话的说法是否正确?

	 A、正确
	 B、错误
正确答案:A

3. 局部变量只对main函数起作用,而全局变量对所有函数起作用。

	 A、正确
	 B、错误
正确答案:B
【解析】
全局变量在静态函数中不能使用,局部变量不一定只在主函数里面,也可以在其他的功能函数里面

4. 以下叙述中正确的是()

	 A、用户自己定义的函数只能调用库函数
	 B、实用的C语言源程序总是由一个或多个函数组成
	 C、不同函数的形式参数不能使用相同名称的标识符
	 D、在C语言的函数内部,可以定义局部嵌套函数
正确答案:B
【解析】
 A 选项中, " 用户自己定义的函数只能调用库函数 " 描述是不正确的,也可以调用自定义函数;
 C 选项中,对于不同函数的形式参数可以使用相同名称的标识符; 
 D 选项中,关于函数的定义不可以嵌套 , 但函数的调用可以嵌套。
 因此 B 选项正确。

5. 下面关于typedef char *String_t; 和#define String_d char * 这两句在使用上的区别描述错误的是?

A、typedef char *String_t 定义了一个新的类型别名,有类型检查#define String_d char * 只是做了个简单的替换,无类型检查
B、前者在预编译的时候处理,后者在编译的时候处理
C、同时定义多个变量的时候有区别,主要区别在于这种使用方式String_t a,b; 
D、String_d c,d; a,b ,c 都是char*类型,而d 为char 类型
正确答案: C
【解析】
define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名。typedef int * int_ptr;与#define int_ptr int * 作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行简单的替换,而typedef不是简单替换 ,而是采用如同定义变量的方法那样来声明一种类型。也就是说;
#define int_ptr int *
int_ptr a, b; //相当于int * a, b; 只是简单的宏替换
typedef int* int_ptr;
int_ptr a, b; //a, b 都为指向int的指针,typedef为int* 引入了一个新的助记符

6. 如下函数的f(1)的值为()

int f(int n){
   
    static int i=1;
     if(n>=5)
         return n;
     n=n+i;
     i++;
     return f(n);
}
  A、5 		 
  B、6 		
  C、7 		
  D、8 	 
正确答案:C
【解析】
初始态:n=1,i=1
f(1)后:n=2,i=2
f(2)后:n=4,i=3
f(4)后:n=7,i=4
因此等于7

7. 在C语言中,定义一个返回值为指针的函数,以下函数定义错误的是()

A、
static char retarray[20];
  char *func(int n)
 {
   
 sprint(retarray,%d”,n);
 return retarray;
 }
B、
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值