三、填空题
1.如果希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,就应该指定它为 ,用 进行声明。
2. 结构化程序设计方法中,程序有三种基本结构,即: , 和 。
3.若int i=8,j=9;float x=123.456;printf(''x=%8.3f,j=%-4d\\n'',x,j);结果为: 。 4.设C环境下一个int型数据占用2个字节,设int a[4]={1,2,3,4},*p=a;其中a=2000;则*p= ,p+1= ,*(p+2)= 。
5.在C语言中,表示逻辑“假”值用 。
6.设C环境下一个int型数据占用2个字节,设int a[5]={5,4,3,2,1},*p=a;其中a=2000;则 *p= ,p+3= ,*(p+2)= 。
7.用户定义函数体部分一般分为 和 两部分。 8.用下列for循环将大写字母逆序输出(即从Z到A),其语句为:
for(i=0;i<26;i++) ;
9.C语言中函数的参数分为 和 。
10.用户自己建立的由不同类型数据组成的组合型的数据结构称为 类型,它的名字是由一个关键字 和 组合而成。
11.建立并运行C 程序的最简步骤为_ , 和 。
12.转义字符“\\n”表示 。
13.直接或间接调用自身的函数称为 函数。
14.int*p和int**p;含义分别是 和 。
15.语句printf(\,123);将输出: 。 16.转义字符“\\n”表示 。
17.C语言中,表示逻辑“真”用: 表示,逻辑“假”用: 表示。 18.表达式12345==12345/3*3的值为__ __。
19.若有定义:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是 。 20.已知int a=4,b=20,x=3;则:
(1)a+x*(int)(2.5/0.7)的值为: 。 (2)(a+3)/3+a%b的值为: 。 (3)x*=5+4的值为: 。
21.用数组元素作实参时,向形参变量传递的是 ,而用数组名作函数实参时,向形参传递的是 。
22.int a=10,b=15,c=1,d=2,e=0,则下列表达式的运行结果是: (1) !e (2) c==b>e (3) (b==10)&&(a==10) (4) (a+5==b)||((c=b+a)>(d=c+b)) 23.表达式4>10?(5>3?(4,2):3):(6,7)的值为 。 24.在C语言中,逻辑“真”值用 表示。
25.strcat(ch1,ch2)的功能是: 。 26.strlen(\的值为 27.若有定义:double x[3][5]; 则数组中行下标的下限为 ,列下标的上限为
28.写出i小于0或大于10时为真的表达式: 。
29.一个函数由两部分组成,即: 和 。
30.数组元素的相关性表现在它们具有相同的 和 。 31.以下程序实现输出x,y,z三个数中的最大者,请在【】内填入正确内容。
#include int x=4,y=6,z=7; int【① 】; if (【② 】) u=x; else u=y; if (【③ 】) v=u; else v=z; printf (\ } 32.在C语言中用 代表“假”,用 代表“真”。但只要 则都认为是“真”。 33.用来引用特定数组元素的数字称为 。 34.一个C程序总是从 开始执行的。 1?2111?2+2+2+??+2求π的近似值,35.下面程序的功能是用公式直到最后一 n6123项的值小于10 ?6为止。请填空。 #include #include long i=1; 【① 】pi=0; while (i*i<=1e+6) {pi=【② 】; i++; } pi=sqrt(6.0*pi); printf(\} 36.若所用变量已正确定义,写出下列FOR循环的次数为: 。 a=2,b=10; for (i=b;i>=a;i--,a++) printf(\ 37.用下列for循环将大写字母逆序输出(即从Z到A),其语句为: for(i=0;i<26;i++) ; 38.一个源文件可以包含一个或者若干个函数。在函数内定义的变量是 ,而在函数之外定义的变量称为 。 变量是全局变量。 39.C语言中根据数据的组织形式,可以将文件分为 和 。 40.要把一个外部变量只限制于被本文件使用,而不被其他文件引用,必须在定义这个外部变量时加一个 。 41.写出下列程序段的运行结果: 。 s=7; while(--s) s-=2; printf(\ 42.C语言规定:在每一个字符串的结尾加上一个 ,以便系统据此判断字符是否结束。 43.break语句只能用在 语句或 语句中。 44.Continue语句只能用在___ __语句中。 45.结构化程序设计方法中,程序有三种基本结构,即: , 和 。 46.设有int a,b;当执行输入函数scanf(“%d:%d”,&a,&b);时正确的输入是 。(给a输入5,给b输入8)。 四、问答题 1.请阅读下面的程序: #include {int cal(int a,int b,char op); int x,y,z,result; char op1,op2; scanf(\ if(op1=='+'&&op2=='*') result=cal(x,cal(y,z,op2),op1); else result=cal(cal(x, y, op1),z, op2); printf(\ return 0; } int cal(int a,int b,char op) { if(op=='*') return(a*b); else return(a+b); } 问题1:当输入2+3*5时,上述程序将输出 。 问题2:把op1= ='+' && op2= ='*' 中的 op1,op2对调后,当输入为2+3*5时,上述程序将输出 。 2.试阐述'x'和\的区别。 3.写出以下程序的运行结果。 #include \int main() { struct stu_list { int num; char *name; }sl={34, \ printf (\ return 0; } 该程序的运行结果为: 4.假设有以下程序段: int a[10]; ?? a[10]=3; ?? 试分析两个a[10]的区别。 五、阅读程序题 1. 以下程序的执行结果是 。 #include int func(int a,int b); int k=4,m=1,p; p=func(k,m); printf(\ p=func(k,m); printf(\ return 0; } func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } 2. 该程序运行结果为: #include \ int main() { int a[5]={1,2,3,4,5},*p,i; p=a; printf(\ p++; printf(\ return 0; } 3.以下该程序运行结果为: #include \int main () { int a[5]={5,4,3,2,1},*p,i; p=a; printf (\ p++; printf (\ return 0; } 4. 阅读以下程序 #include \main() { char c; c=getchar(); switch(c) { case 'a': case 'A':printf(\ case 'b': case 'B':printf(FORTRAN\\n\ case 'c': case 'C':printf(\ default:printf(\ return 0; } 请回答:输入d,回车,运行结果为: