1.下列程序的功能是输出a数组中小写字母的个数,请为横线处选择合适的程序
#include <stdio.h>
main()
{ char a[]="123abc";
int i,num=0;
for(i=0;_________;i++)
if(a[i]>='a'&&a[i]<='z') num++;
printf("%d\n",num);
}
解析:a[i]!=’\0’
字符串在内存种会以字符数组形式存储,而为了方便获得字符串实际长度系统自动在字符串加‘\0’作为末尾
2.C 语言允许函数类型缺省定义,此时函数值隐含的类型是
解析:int
C中:如果函数未指定返回值类型,则默认为int
如果函数没有指定参数列表,则默认可以接受任意多个参数
3.下面程序的输出的是
#include <stdio.h>
void main()
{
int x=7,y=3;
printf("%d\n",y=x/y);
}
解析:2
对于/
如果实数运算。结果为双精度实数
如果整数运算,结果为整数,舍去小数部分
有负数参与舍去的方向不固定
4.i为整型变量,则以下循环语句的循环次数是
for(i=2;i<2;)
printf(“%d”,i--);
解析:0次
for语句的执行流程描述如下:
(1) 计算表达式1的值;
(2) 计算表达式2的值,若表达式的值为真(或非0),则执行循环体;
(3) 计算表达式3的值;
(4) 再次计算表达式2的值,并重复以上过程;
(5) 直到表达式2的值为假(或为0),则结束该循环。
5.在C语言中,关于静态变量的说法,正确的是
- 静态变量和常量的作用相同
- 函数中的静态变量,在函数退出后不被释放
- 静态变量只可以赋值一次,赋值后则不能改变
- 静态全局变量的作用域为一个程序的所有源文件
解析:
常量与变量的区别
常量:在程序中不能改变的量
变量:在程序中可以改变的量
个人理解:
变量先有内存空间后有值
常量先有值后有内存空间
6.已知一运行正常的程序中有这样两个语句:int p1,*p2=&a; p1=b; 由此可知,变量a和b的类型分别是
解析:int和int
指针的基类型与指向的元素的类型相同
7.经过下列的语句 int j,a[10],*p;定义后,则 :p=p+2;合法。这句话是否正确?
解析:错误
p没有指向,是一个野指针,会被随机分配一个地址
语法没问题,但不知道指向哪里?没什么意义
8.设有char **s1 = “ABCDE”, *s2=“ABCDE”,*s3=s1;,下列表达式中值等于true的是
- strcmp(s1,s2)
- strcmp(s1,s3)==1
- strcmp(s2,s3)==-1
- strcmp(s1,s3) ==0
解析:
strcmp是库函数用来比较字符串
如果两个参数相同返回0
第一个参数大返回1
第二个参数大返回-1
9.以下能正确定义数组并正确赋初值的语句是
- int N=5,b [N] [N];
- int a[1] [2]={{1},{3}};
- int c[2] []={{1,2},{3,4}};
- int d[3] [2]={{1,2},{34}};
解析:
对于二维数组的定义
元素个数不能为变量
元素是以0为起始,在B中一维只有一个
一维元素个数可以省略,二维不可以
10.下列定义数组的语句中正确的是
-
c_cpp #define size 10 char str1[size],str2[size+2];
-
c_cpp char str[];
-
c_cpp int num['10'];
-
c_cpp int n=5; int a[n][n+2];
解析:
数组的定义
不能以变量作为元素个数且只有在确定元素个数时省略标识个数