26 return 0; }
150. 下列程序段中,有错误的是___.
int f() { int x; scanf(\x+5; }
int f2() { return (x>1?printf(\
int main() { float a=2.6 , b; b=max(2.1,3.6)=a++; printf(\ void change(int x, int y) { int t; t=x; x=y; y=t; } 151. 有如下程序: #include long f(int n) {
if(n>2) return (f(n-1) + f(n-2)); else return (2); }
void main() {
printf(\}
该程序的输出结果是___.4
152以下程序运行后,输出结果是___.35 #include fun(int a, int b) { int c; c=a*b; return c; }
void main() {
int x=3, y=4,z=5, k; k=fun((x--, y++, x+y), z--); pirntf(\}
153. C编译系统对文件包含命令#include \的处理通常是在___.编译处理之前
154. 在文件包含预处理的定义中,#include后的文件名用<>括起来时,寻找被包含文件的方式是___.系统的标准方式搜索
155. 下面对宏定义的描述,不正确的是___.
宏替换并不检查替换后的源程序的语法错误 宏名不存在类型的问题,它的参数也不存在类型问题 宏替换不占用程序运行时间
带参数宏在展开的时候,先求出实参表达式的值,然后再代入形参,并计算求值 156. 下面的叙述中,错误的是___.
#include命令可以包含扩展名为\的文件
27
#include <…>中可以包括路径
#include \是一个正确的文件包含命令 使用#include <…>比#include \节省编译时间
157在宏定义#define PI 3.14159中,用宏名PI代替一个___.字符串 158. 下列叙述中,正确的是___.
引用带参数宏时,实际参数的类型应与宏定义时的形式参数类型相一致 宏名必须用大写字母表示
宏替换不占用运行时间,只占用编译时间 在程序的一行上可以出现多个有效的宏定义
159. 设有宏定义命令:#define SUM 2+3,则表达式5+SUM*5的值为___.22 160. 设有以下宏定义,则执行语句x=2*(N+Y(5+1));后,x(设x为整型)的值是___.48 #define N 3
#define Y(n) ((N+1)*n)
161. 下列程序运行结果是___.8 #include #define N 2 #define M N+1
#define NUM (M+1)*M/2 int main( ) {
int i,n=0;
for(i=1;i<=NUM;i++) n++;
printf(\return 0; }
162. 对于基类型相同的两个指针变量之间,不能进行的运算是___.+ 163. 若有定义float *p, m;,则以下正确的表达式为___. p=&m
164. 若有定义:char *p1, *p2, *p3, *p4, ch; 则不能正确赋值的程序语句为___. p1=&ch; scanf(\
p2=(char *)malloc(1); scanf(\ *p3=getchar(); p4=&ch; *p4=getchar();
165. 若有以下定义,且0<=i<10,则对数组元素的错误引用是___. a(p-a) int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p, i; p=a;
166. 若有以下定义,且0<=i<10,则对数组地址的正确表示是___. &p[i] int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p, i; p=a;
167. 已知p,p1为指针变量,a为数组名,i为整型变量,下列语句不正确的是___. p=&I p=p1 p=&a[i] p=10 168. 若有定义:int a[10], *p=a; 则p+5表示___.元素a[5]的地址 169. 如有定义:int b[]={1, 2, 3, 4}, y, *p=b+1; 执行y=*p++后,y的值为___.2 170. 以下对指针变量的操作中不正确的是___. int a=5, *p; p=a; 171. 若有以下语句,则&a[2]-p的值为___.2 int a[3], *p=a; 172. 若有程序段: int b[4], *p, *q; p=&b[1]; q=&b[3];
则q-p表示的意义是___. p与q之间数据个数
173. 若有定义char d[15], *p=d;,则以下正确的赋值语句是___. d[0]=\ d=\
28
*p=\ p=\ 174. 若有定义int b[3][4];,则对数组元素b[2][3]不正确的引用是___. *(b[2]+3) *(*(b+2)+3) (*(b+2))[3] *(b+2)[3]
175. 若有定义int m[2][3], (*p)[3]=m;,且0<=i<2,0<=j<3,则以下不正确的引用数组元素m[i][j]的方式是___. *(p[i]+j) *(*(p+j)+j) (*(p+i))[j] *((&p+i)+j) 176. 若有程序段 int **p, *q[5]; p=q;
则以下不正确的叙述是___. 执行语句p=q;后p指向q[0] p+3就是q[3]的地址 **(p+3)与*q[3]等价 q与p都不是指针常量
177. 下面结构体数组的定义,错误的是___.
struct student { int num; char name[10]; float score; }; struct { int num; char name[10]; float score; } stu[30];
struct student { int num; char name[10]; float score; } stu[30]; struct stu[30] { int num; char name[10]; float score; };
178. 若有如下定义,则能打印出字母M的语句是___. printf(\ struct pe {
char name[9]; int age;
}ca[4]={{\
179. 若有以下语句和说明,下面程序在VC++6.0环境中的输出结果为___12 void main() {
struct{char a[10]; int b;}x; printf(\}
180. 设有如下语句___.可用T定义结构体变量 typedef struct S { int g; char h; }T;
181. 如有以下定义 struct person {
char name[9]; int age; };
struct person class[10]={\根据上述定义,能输出字母M的是___. printf(\
29
182. 设有如下定义: struct sk { int a; float b; }data; int *p;
若要使p指向data的a域,正确的赋值语句是___. p=&data.a;
183. 下面程序的输出结果是___. 26 30 11 struct t { int x; int *y;
184. 一个整数2000,在内存中占2个字节.如果按ASCII码形式输出,则占的字节数是___.4 185. 在C语言中,文件存取的基本单位是___.字节
186. 在C语言中,从文件中将数据读到内存中称为___.输入
187. 以下正确的打开与关闭文件命令是___. fopen(fp, \
188. 以读写方式打开一个已存在的文本文件fd.dat,下面fopen函数正确的调用方式是___. FILE *fp; fp=fopen(\
189. C语言中的文件类型只有___. ASCII文件和二进制文件两种 190. C语言中文件的存取方式是___.可以顺序存取,也可以随机存取
191. 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为___.0 192. 下列关于C语言数据文件的叙述中正确的是___.
文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
193若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是___. fopen(\
}*p;
int d[4] ={5,10,15,20} ;
struct t x[4]={25,&d[0],30,&d[1],35,&d[2],40,&d[3]}; int main() { p=x;
printf(\printf(\printf(\return 0; }