main(){ char c1='A',c2='Y'; printf(\"%d,%d\\n\3、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:( A 1) 4、下面关于语句执行情况的叙述中正确的是( A 循环体再执行一次)。 5、C语言中“*”称为(间址运算符)运算符。 6、C语言中char型数据在内存中占(1)个字节。 7、以下不合法的C语言标识符是(D a--b).8、当调用函数时,实参是一个数组名,则向函数传送的是 数组的首地址
设a和b均为float型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的(D 6.000000) 9、以下叙述错误的是(C C程序在书写时,有严格的缩进要求,否则不能编译通过)
10、若有char c[5]={'c','d','\\0','e','\\0'};则执行语句printf(\"%s\结果是( C cd)。
11、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是(D n=x++;print f(“%d/n”,n )。
12、在c语言程序中,从/*开始,到/*结束的部分称为()
13、下面程序的输出结果是(C 8 2 )。main( ){ int i, x[3][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<4;i+=2) printf(″%d″, x[i][1]);} 若k是int类型变量,且有以下for语句for(k=-1;k<0;k++) printf(“****\\n\"); 二、填空题
1、设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是9 。 2、字符串”a”的占内存长度是 2 字节。
假定指针p所指对象的值为25,p+1所指对象的值为42,则*p++的值为25。 3、C程序的基本组成单位是语句(说法错误) 4、strlen(“apple”)的值为5 。
5、下面正确的定义语句是(double y[][3]=0)
6、根据变量的作用域可将变量分为局部变量和全局变量,定义在函数内部的变量和函数的形参都是局部变量。
7、在C语言中,二维数组元素的内存中存放顺序是按行存放。 8、 已知定义:int a[10];则VC编译器中数组a占用内存的字节数是40 9、表达式sqrt(16)和pow(6,3)的值分别为4和216 。 10、C语言只有32个关键字和9种控制语句
11、在格式输入语句scanf中,用于double输入的格式是%lf 。
12、若z,i均为int类型,i的当前值为1,则为表达式z=i++,i++,i++求值后,z的值为2 13、设有int y[3][2]={5,4,6,7,8,9};则y[1][1]的值为7 。
14、根据定义和数据输入的方式,输入语句的正确形式为scanf("%f%f",&f1,&f2) 三、程序分析题
1、C语言有哪几种控制语句?并简述各控制语句的功能。
答:(1).顺序控制语句
顾名思义,所谓顺序结构,就是指按照语句在程序中的先后次序一条一条的顺次执行。顺序
控制语句是一类简单的语句,上述的操作运算语句即是顺序控制语句,包括表达式语句,输入/输出等。
表达式语句
任何一个表达式后面加上一个分号就构成了表达式语句(没有分号的不是语句)。表达式是指用运算符连接各个运算对象,合乎语法规则的式子。
常见的表达式语句有以下几种:空语句、赋值语句、函数调用语句。 转向语句:break语句、continue语句、return语句等等 (2.)选择控制语句
选择语句又称为分支语句,它通过对给定的条件进行判断,从而决定执行两个或多个分支中的哪一支。因此,在编写选择语句之前,应该首先明确判断条件是什么,并确定当判断结果为“真”或“假”时应分别执行什么样的操作(算法)。 2、阅读程序,写出运行结果 10 。
func(int x) { x=20; } main() { int x=10; func(x); printf(“%d”,x);
}
21. 阅读程序,写出运行结果7,8,7 。 Int *f(int*x,int *y)
{
If (*x<*y) return x; else return y; }
Main() {
Int a=7,b=8,*p,*q,*r; P=&a;q=&b; R=f(p,q);
Print f(“%d,%d,%d\\n,*p,*q,*r); 3、C语言中指针和数组有何区别和联系?
答:区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以就会觉得指针和数组名很像,但是必须要注意的是,数组名只是指针中的一种,它是指针中只指向栈区的且指针的移动范围是有限的,即数组长度。而且数组在定义之初就已经有了自己的内存,一般的指针如果未指向某一个内存块时,它是没有自己的内存的,即所谓的野指针。
联系:如上面所说,数组只是定义在栈区的一个连续变量,它的首地址就是一个指针。 总结:不仅数组有指针,所有变量都有指针,指针说白了就是内存中的地址,就像一个房间必须有一个房间号。在C/C++语言中定义一个指针,就是在栈区开辟一个内存空间用来存放它
指向的内存地址,然后给指针赋值,就是把地址值赋值给刚才开辟的内存空间,然后通过访问该内存中的地址值来间接访问该地址下存放的数据。如果该地址值指向的是一块静态存储区,如字符串常量等,当然就不可以修改指向的内容啦。 4、 用数组处理Fibonacci数列问题1,1,2,3,5,8,13,„„。
main() { int i;
int f[20];
(1) /*给数列赋初值*/ for(i=2;i<20;i++)
f[i]= f[i-1]+ f[i-2]; /* 计算后继元素值*/ for( (2) ;i<20;i++)
printf(“%12d”,f[i]);} /* 打印输出数列前20个数*/
(1)f[0]=f[1]=1 (2)i=0 一、 程序设计题
24.有三个整数a,b,c由键盘输入,输出其中最大的数 #includevoid main(){ int a,b,c;printf(\"输入三个数:\"); scanf (\"%d%d%d\if(a>b&&a>c)
printf(\"最大值为:%d\else if(b>a&&b>c)
printf(\"最大值为:%d\
else printf(\"最大值为:%d\
5、讨论static关键字在C语言中的作用,请从以下三个方面阐述 (1)static全局变量和普通的全局变量有什么区别
答:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态6、全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
(2)Static局部变量和普通局部变量有什么区别 答:把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,了它的使用范围。 (3)Static函数与普通函数有什么区别
答:static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 输入三角形的三边长,求三角形面积. #include#include void main() {float a,b,c,s,area;
printf(\"依次输入a,b,c(空格识别一个数):\");
scanf(\"%f%f%f,\ s=(float)0.5*(a+b+c);
area = (float)sqrt(s*(s-a)*(s-b)*(s-c)); printf(\"面积为:%f\ }
7求1*2*3*········*10的结果输出 答:#include main() {
int i,sum=1;
for(i=1;i<11;i++){ sum *= i }
printf(sum); }
8、编写一个排序子函数void sort(int x[],int n ),将X数组中的n个数据从小到大排序。 答:#include #include // 选择插入法排序void sort(int a[], int n){ int i, j, k, tmp; for (i = 0; i < n; i++) { for (j = 0; j < i; j++) if (a[i] < a[j]) break; // 找到待插位置 tmp = a[i]; // 临时变量记录待插的值 // 移出插入空间 for (k = i; k > j; k--) a[k] = a[k - 1]; // 插入 a[j] = tmp; }}int main(){ int *a, n, i; scanf(\"%d\输入数据数量 if (n > 0) { a = (int *)malloc(n * sizeof(int)); // 动态申请数组空间 // 输入数据 for (i = 0; i < n; i++) scanf(\"%d\排序 sort(a, n); // 输出排序后的结果 printf(\"After sorted the array is:\"); for (i = 0; i < n; i++) printf(\"%d \释放内存 } return 0;}