题目
11 13 7A. a) B. b) C)c) D)d) C. )。 D. int x=3; E. in() F. ( int i; G. or(i=1;i ) incre() tic int x=1; x*=x+1; printf(" %d",x); } 3 3 2 2 2 6 2 5 )。 [],int n) (int i,t; or(i=0;i [i];a[i]=a[n-1-i];a[n-1-i]=t;) } in() [10]=(1,2,3,4,5,6,7,8,9,10); int i,s=0; reverse(b,8); [i]; ",s); } 22 10 C)34 D)30 )。 h> r p[][10],int n) r t[20]; int i,j; or(i=0;i or (j=i+1;j [i],p[j])<0) [i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } in() r p[][10]=("abc","aabdfg","abbd","dcdbe","cd");int i; ",strlen(p[0])); } 6 4 5 3 7.2 填空题 语言中,除主函数外,其子函数分为 标准库函数、自定义函数 两类。 7.2.2 变量在程序使用中,其作用域[1]可分为 全局 变量和 局部 变量。 7.2.3 以下函数用以求x的y次方,请补充填空。 ouble fun ( double x , int y ) ( int i; double z; or ( i=1 ; i <=y ; i + + ) z= z*x ; return z; ) 7.2.4 以下程序的功能是计算,请补充填空。 long f(int n) ( int i; long s; s= 1 ; or(i=1; i<=n; i++) s= s*i ; return s; in() { long s; int k,n; nf("%d",&n); s= 0 ; or(k=0; k<=n; k++) s=s+ f(k) ; printf("%d",s)); ) 习题八 8.1 选择题 char s[4][5]=( "abcd") char s[5]=(‘a’,‘b’,‘c’,‘e’,‘f’); char *s; s="abcd"; D) char *s=; scanf(“%s”,s); ) int A[“a”]; int A[3,5]; int A[ ][ ]; D) int *A[3]; [4][5], (*cp)[5]; p=c; cp+1 B) *(cp+3) C) *(cp+1)+3 D) *(*cp+2) ) h> in() ( int **k, *j, i=100; j=&i; k=&j; ", **k); ) 运行错误 100 i的地址 j的地址 8.4.5 设有如下的程序段[2]: r str[ ]="Hello"; r *ptr;ptr=str; ) 'o' '0' 不确定的值 'o'的地址 ; 。 *p=&a;scanf("%ld",p); p=(long *)malloc(8);scanf("%ld",p); scanf("%ld",p=&a); scanf("%ld",&a); ) sss(s, t) r *s, *t; hile((*s)&&(*t)&&(*t++==*s++)); return(*s-*t);} 求字符串的长度 比较两个字符串的大小 将字符串s复制到字符串t中 将字符串s接续到字符串t中 ) h> sub(x,y,z) int x, y, *z; ( *z=y-x; ) in() , , ; ; sub(7,a,&b); sub(a,b,&c); ", a,b,c); } 5,2,3 -5,-12,-7 -5,-12,-17 5,-2,-7 r*x) r *y=x; hile(*y++); return(y-x-1); } 编辑程序 驱动程序 C) 诊断程序 D) 编译程序[3] 。 C语言比其他语言高级 C语言可以不用编译就能被计算机识别执行 C语言以接近英语国家的自然语言[4]和数学语言作为语言的表达形式 C语言出现的最晚,具有其他语言的一切优点 。 C程序中注释部分可以出现在程序中任意合适的地方 花括号“(”和“)”只能作为函数体的定界符 构成C程序的基本单位是函数,所有函数名都可以由用户命名 分号是C语句之间的分隔符,不是语句的一部分 。 C语言的源程序[5]不必通过编译就可以直接运行 C语言中的每条可执行语句最终都将被转换成二进制[6]的机器指令[7] C源程序经编译形成的二进制代码可以直接运行 C语言中的函数不可以单独进行编译 语言编写的代码程序(B)。 可立即执行 是一个源程序 经过编译即可执行 经过编译解释才能执行 )。 在C语言中,main函数必须位于程序的最前面 C语言的每行中只能写一条语句 C语言本身没有输入输出语句 在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 语言关键字的选项是( A )。 define getc include while IF char scanf go se pow 语言关键字的选项是(B)。 auto switch signed if 求字符串的长度 比较两个字符串的大小 将字符串x复制到字符串y 将字符串x连接到字符串y后面 8.2 填空题 8.2.1 在指针的概念中,“*”表示的含义是所指对象的内容,而“&”表示的含义是 取变量的地址 。 P ,而&*p表示的含义是 P 。 8.2.3 统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。 h> h> in( ) [26],i; r c,*pc=&c; [i]=0; r()) !='#') /*统计从终端输入的大写字母个数*/ [*p-65]+=1; or(i=0; i<26; i++) /*输出大写字母和该字母的个数*/ [i]) printf(“%c: %d”, i+‘A’, num[i] ); } x函数求数组中值最大的元素在数组中的下标,请补充填空。 h> x (int *s ,int t ,int *k ) ( int p; or(p=0,*k=p;p [p] > s[*k] ) __*k=p______; ) in() [10] , i , k ; nf("%d",&a[i]); x ( a,10,&k ); " , k , a[k] ); } 数组中的所有素数的和,函数isprime用来判断自变量是否为素数,请补充填空。 h> in() ,sum=0; nter 10 num:"); nf("%d",&a[i]); or(i=0;i<10;i + + ) if(isprime(*(p+i)) = = 1) +i)); sum+= a[i] /或者 *(a+i) 或者 *(p+i) ; } /*打印素数*/ The sum=%d",sum); /*打印所有素数的和*/ } isprime(int x) ( int i; or(i=2;i<=x/2;i + + ) if(x%i = = 0) return (0); return 1 ; ) 8.2.6 在下列程序中,其函数的功能是比较两个字符串的长度,比较的结果是函数返回较长的字符串的地址。若两个字符串长[8]度相同,则返回第一个字符串的地址。 h> r * fun ( char *s, char *t) r *ss=s, *tt=t; hile((*ss)&&(*tt)) ( ss++; tt++; ) if (*tt) return tt; lse return ss ; } in( ) r a[20],b[10],*p=a,*q=b; ets(p); ets( q ); ",fun (p, b )); } 8.3 写出以下程序的运行结果 8.4.1 in( ) [ ]=(2,4,6,8),*p=a,i; [i]=*p++; ",a[2],*(- -p)); } 运行结果: 6,8 8.4.2 h> in( ) ,b,c; int x=4,y=6,z=8; int p1=&x,p2=&y,*p3; =p1==&x; =3*(-*p1)/(*p2)+7; =*(p3=&z)=*p1*(*p2); ",a,b,c); } 运行结果: 1,5,24 8.4.3 h> in( ) [ ]=(2,4,6,8,10),*p,**k; ; k=&p; printf("%d ",*(p++)); ",**k); } 运行结果: 24 8.4.4 h> in( ) [3][4]=(2,4,6,8,10,12,14,16,18,20,22,24); [4]=a,i,j,k=0; or(i=0;i<3;i++) or(j=0;j<2;j++)) k+=*(*(p+i)+j); ",k); } 运行结果: 66 8.4.5 h> in( ) ( int k=0,sign,m; r s[ ]=“-12345”; [k]==‘+’||s[k]==‘-’) [k++]==‘+’?1:-1; [k]>=‘0’&&s[k]<=‘9’;k++) [k]-‘0’; rintf("Result=%d",sign*m); ) Result=-12345 8.4.6 若有5门课程的成绩是:90.5, 72, 80, 61.5, 55,则程序运行结果是多少,其函数执行什么功能。 h> , int n ) ( int i; t sum=0; or(i=0; i [i]; return(sum/n); ) in() t score[30]=(90.5, 72, 80, 61.5, 55), aver; ver = fun( score, 5 ); Average score is: %5.2f", aver); } verage score is: 71.80 函数功能:求5门课程平均分 8.4.7 若输入字符串"-1234",则程序运行结果是多少,其程序执行什么功能。 h> h> r *p) ( long nn=0; int ss=1; if((*p)=='-'){ p++; ss=-1;) if((*p)=='+') p++; hile(*p) nn=nn*10-48+(*p++); return(nn*ss); } in() /* 主函数 */ r s[6]; long n; nter a string:") ; ets(s); n = fun(s); ",n); } 运行结果: -1234 程序功能:输入一个字符串,并将其转换为数字 8.4.8 下列程序功能是将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642。请改正程序中的错误,使它能得出正确的结果。 h> void fun (long s, long *t) ( int d; long sl=1; *t = 0; hile ( s > 0) { d = s%10; if (d/2==0) / 改为:if(d%2==0) { *t=d* sl+ *t; sl *= 10; ) = 10; /改为:s/=10; } } in() ( long s, t; nf("%ld", &s); un(s, &t); t is: %ld", t); ) M行M列整数方阵求两条对角线上各元素之和。请改正程序中的错误,使它能得出正确的结果。 h> M 5 [ ][ ]) /改int fun(int n,int x[][M]) [M]; M ; i++ ) /改for(p=x,i=0;i [ i ][ i ]+p[ i ][ n-i-1 ]; return( sum ); } in( ) [M][M]=({1,2,3,4,5),(4,3,2,1,0),(6,7,8,9,0),(9,8,7,6,5),(3,4,5,6,7)}; The sum of all elements on 2 diagnals is %d.",fun( M, a )); } 习题9 9.1 选择题 PI 3.14159 中,宏名PI代替的是一个( D )。 常量[9] 单精度数 双精度[10]数 字符串 NEW(X)的宏,产生它的参数的负值,正确的语句是( C )。 #define NEW(X) -x #define NEW(X) x #define NEW(X) (-x) #define NEW(X) (-x); BSVAL(X)的宏,产生它的参数的绝对值,正确的语句是( D )。 #define ABSVAL(X) (-x) #define ABSVAL(X) (x<0 ? –x:x) #define ABSVAL(X) (x>0 ? x:-x) #define ABSVAL(X) ((x)<0 ?(-x):(x)) 。 #define PI=3.14159 include "string.h" #include math.h; #define s(r) r*r )。 MIN(x,y) (x)<(y)?(x):(y) in( ) ( int i=10,j=15,k; MIN(i,j); ",k); ) 10 15 C) 100 D) 150 )。 宏替换只是字符替换 宏名无类型 宏名必须用大写字母表示 宏替换不占用运行时间 N+Y(5+1));”后,z值为( C )。 N 3 Y(n) ((N+1)*n) 42 15 48 出错 ine F(n) 2*n ,则表达式F(4+2)的值是( B )。 12 B) 10 C) 22 D)20 )。 可以把define和if定义为用户标识[11]符(即宏名或常量符号名) 可以把define定义为用户标识符,但不能把if定义为用户标识符 可以把if定义为用户标识符,但不能把define定义为用户标识符 define和if都不能定义为用户标识符 )。 预处理命令行必须位于C源程序的起始位置 在C语言中,预处理命令行都以“#”开头 每个C程序必须在开头包含预处理命令行:#include C语言的预处理不能实现宏定义和条件编译的功能 9.2 编程题 9.2.1 写出下列程序的运行结果,并上机予以验证。 LETTER 0 in( ) r str[20]= "C Language",c; int i=0; [i])!= '0' ) ( i=i+1; LETTER ' &&c<='z' ) =c-32; #else ' &&c<='Z') =c+32; #endif printf("%c",c); ) } 运行结果: nguage 9.2.2 写出下列程序的运行结果,并上机予以验证。 EXCH(a,b) ( int t;t=a;a=b;b=t;) in( ) ( int x=5,y=9; XCH(x,y); ",x,y); 运行结果: x=9,y=5 9.2.3 写出下列程序的运行结果,并上机予以验证。 PR(x) printf("%d,",x) in( ) [ ]={1,3,5,7,9,11,13,15),*p=a+5; or(i=3;i;i--) h( i ) se 1: se 2: PR(*p++);break; se 3: PR(*(--p)); } } 运行结果: 9,9,11 习题10 10.1 填空题 语言允许定义由不同数据项[12]组合的数据类型[13],称为 结构 。 语言的构造类型。 10.1.3 结构体变量成员的引用方式是使用 · 运算符。 10.1.4 结构体指针变量成员的引用方式是使用 -> 运算符。 10.1.5 若有定义: struct num ( ; int ; float f ; )n=(1,3,5.0); struct num *pn=&n ; *(++pn->b)的值是 12 , 表达式(*pn).a+pn->f的值是 6.00000 。 语言可以定义共用体类型,其关键字为 union 。 语言允许用 typedef 声明新的类型名来代替已有的类型名。 10.1.8 链表[14]中,每个结点[15]包括两个部分:一个是存储数据元素的 数据域 ,另一个是存储下一个结点地址的 指针域 。 10.1.9 相比于线性表[16]顺序结构,链表比较方便 插入 和 删除 操作。 lloc 、 calloc 、 free 。 10.2 选择题 10.2.1 有如下说明语句,则下面叙述不正确的是 。 struct stu ( ; float ; )stutype; struct是结构体类型的关键字 struct stu是用户定义的结构体类型 stutype是用户定义的结构体类型名 a和b都是结构体成员名 10.2.2 以下对结构类型变量的定义中不正确的是 。 #define STUDENT struct student struct student STUDENT ( { int num; t age ; float age; )std1 ; }std1; struct ( struct { t age ; t age ; )student; } std1 ; struct student std1 ; 10.2.3 当定义一个结构体变量时,系统分配给它的内存是 。 各成员所需内存量的总和 结构中第一个成员所需内存量 成员中占内存量最大的容量 结构中最后一个成员所需内存量 10.2.4 已知学生记录描述为: struct student ( r name[20]; char sex; struct { r; int month ; int day ; h ; ) s ; h”应是“1985年10月1日”,则下面正确的赋值方式是 。 year=1985 birth.year=1985 h.month=10 y=1 irth.day=1 s.year=1985 s.birth.year=1985 h.month=10 num typedef union struct nf type 。 必须为字母 必须为下划线 必须为字母或下划线 可以是字母、数字和下划线中任一种字符
11 13 7A. a) B. b) C)c) D)d) C. )。 D. int x=3; E. in() F. { int i; G. or(i=1;i } incre() tic int x=1; x*=x+1; printf(" %d",x); } 3 3 2 2 2 6 2 5 )。 [],int n) {int i,t; or(i=0;i [i];a[i]=a[n-1-i];a[n-1-i]=t;} } in() [10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8); [i]; ",s); } 22 10 C)34 D)30 )。 h> r p[][10],int n) r t[20]; int i,j; or(i=0;i or (j=i+1;j [i],p[j])<0) [i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } in() r p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i; ",strlen(p[0])); } 6 4 5 3 7.2 填空题 语言中,除主函数外,其子函数分为 标准库函数、自定义函数 两类。 7.2.2 变量在程序使用中,其作用域[1]可分为 全局 变量和 局部 变量。 7.2.3 以下函数用以求x的y次方,请补充填空。 ouble fun ( double x , int y ) { int i; double z; or ( i=1 ; i <=y ; i + + ) z= z*x ; return z; } 7.2.4 以下程序的功能是计算,请补充填空。 long f(int n) { int i; long s; s= 1 ; or(i=1; i<=n; i++) s= s*i ; return s; in() { long s; int k,n; nf("%d",&n); s= 0 ; or(k=0; k<=n; k++) s=s+ f(k) ; printf("%d",s)); } 习题八 8.1 选择题 char s[4][5]={ "abcd"} char s[5]={‘a’,‘b’,‘c’,‘e’,‘f’}; char *s; s="abcd"; D) char *s=; scanf(“%s”,s); ) int A[“a”]; int A[3,5]; int A[ ][ ]; D) int *A[3]; [4][5], (*cp)[5]; p=c; cp+1 B) *(cp+3) C) *(cp+1)+3 D) *(*cp+2) ) h> in() { int **k, *j, i=100; j=&i; k=&j; ", **k); } 运行错误 100 i的地址 j的地址 8.4.5 设有如下的程序段[2]: r str[ ]="Hello"; r *ptr;ptr=str; ) 'o' '\0' 不确定的值 'o'的地址 ; 。 *p=&a;scanf("%ld",p); p=(long *)malloc(8);scanf("%ld",p); scanf("%ld",p=&a); scanf("%ld",&a); ) sss(s, t) r *s, *t; hile((*s)&&(*t)&&(*t++==*s++)); return(*s-*t);} 求字符串的长度 比较两个字符串的大小 将字符串s复制到字符串t中 将字符串s接续到字符串t中 ) h> sub(x,y,z) int x, y, *z; { *z=y-x; } in() , , ; ; sub(7,a,&b); sub(a,b,&c); ", a,b,c); } 5,2,3 -5,-12,-7 -5,-12,-17 5,-2,-7 r*x) r *y=x; hile(*y++); return(y-x-1); } 编辑程序 驱动程序 C) 诊断程序 D) 编译程序[3] 。 C语言比其他语言高级 C语言可以不用编译就能被计算机识别执行 C语言以接近英语国家的自然语言[4]和数学语言作为语言的表达形式 C语言出现的最晚,具有其他语言的一切优点 。 C程序中注释部分可以出现在程序中任意合适的地方 花括号“{”和“}”只能作为函数体的定界符 构成C程序的基本单位是函数,所有函数名都可以由用户命名 分号是C语句之间的分隔符,不是语句的一部分 。 C语言的源程序[5]不必通过编译就可以直接运行 C语言中的每条可执行语句最终都将被转换成二进制[6]的机器指令[7] C源程序经编译形成的二进制代码可以直接运行 C语言中的函数不可以单独进行编译 语言编写的代码程序(B)。 可立即执行 是一个源程序 经过编译即可执行 经过编译解释才能执行 )。 在C语言中,main函数必须位于程序的最前面 C语言的每行中只能写一条语句 C语言本身没有输入输出语句 在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 语言关键字的选项是( A )。 define getc include while IF char scanf go se pow 语言关键字的选项是(B)。 auto switch signed if 求字符串的长度 比较两个字符串的大小 将字符串x复制到字符串y 将字符串x连接到字符串y后面 8.2 填空题 8.2.1 在指针的概念中,“*”表示的含义是所指对象的内容,而“&”表示的含义是 取变量的地址 。 P ,而&*p表示的含义是 P 。 8.2.3 统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。 h> h> in( ) [26],i; r c,*pc=&c; [i]=0; r()) !='#') /*统计从终端输入的大写字母个数*/ [*p-65]+=1; or(i=0; i<26; i++) /*输出大写字母和该字母的个数*/ [i]) printf(“%c: %d”, i+‘A’, num[i] ); } x函数求数组中值最大的元素在数组中的下标,请补充填空。 h> x (int *s ,int t ,int *k ) { int p; or(p=0,*k=p;p [p] > s[*k] ) __*k=p______; } in() [10] , i , k ; nf("%d",&a[i]); x ( a,10,&k ); " , k , a[k] ); } 数组中的所有素数的和,函数isprime用来判断自变量是否为素数,请补充填空。 h> in() ,sum=0; nter 10 num:"); nf("%d",&a[i]); or(i=0;i<10;i + + ) if(isprime(*(p+i)) = = 1) +i)); sum+= a[i] //或者 *(a+i) 或者 *(p+i) ; } /*打印素数*/ The sum=%d",sum); /*打印所有素数的和*/ } isprime(int x) { int i; or(i=2;i<=x/2;i + + ) if(x%i = = 0) return (0); return 1 ; } 8.2.6 在下列程序中,其函数的功能是比较两个字符串的长度,比较的结果是函数返回较长的字符串的地址。若两个字符串长[8]度相同,则返回第一个字符串的地址。 h> r * fun ( char *s, char *t) r *ss=s, *tt=t; hile((*ss)&&(*tt)) { ss++; tt++; } if (*tt) return tt; lse return ss ; } in( ) r a[20],b[10],*p=a,*q=b; ets(p); ets( q ); ",fun (p, b )); } 8.3 写出以下程序的运行结果 8.4.1 in( ) [ ]={2,4,6,8},*p=a,i; [i]=*p++; ",a[2],*(- -p)); } 运行结果: 6,8 8.4.2 h> in( ) ,b,c; int x=4,y=6,z=8; int p1=&x,p2=&y,*p3; =p1==&x; =3*(-*p1)/(*p2)+7; =*(p3=&z)=*p1*(*p2); ",a,b,c); } 运行结果: 1,5,24 8.4.3 h> in( ) [ ]={2,4,6,8,10},*p,**k; ; k=&p; printf("%d ",*(p++)); ",**k); } 运行结果: 24 8.4.4 h> in( ) [3][4]={2,4,6,8,10,12,14,16,18,20,22,24}; [4]=a,i,j,k=0; or(i=0;i<3;i++) or(j=0;j<2;j++)) k+=*(*(p+i)+j); ",k); } 运行结果: 66 8.4.5 h> in( ) { int k=0,sign,m; r s[ ]=“-12345”; [k]==‘+’||s[k]==‘-’) [k++]==‘+’?1:-1; [k]>=‘0’&&s[k]<=‘9’;k++) [k]-‘0’; rintf("Result=%d",sign*m); } Result=-12345 8.4.6 若有5门课程的成绩是:90.5, 72, 80, 61.5, 55,则程序运行结果是多少,其函数执行什么功能。 h> , int n ) { int i; t sum=0; or(i=0; i [i]; return(sum/n); } in() t score[30]={90.5, 72, 80, 61.5, 55}, aver; ver = fun( score, 5 ); Average score is: %5.2f", aver); } verage score is: 71.80 函数功能:求5门课程平均分 8.4.7 若输入字符串"-1234",则程序运行结果是多少,其程序执行什么功能。 h> h> r *p) { long nn=0; int ss=1; if((*p)=='-'){ p++; ss=-1;} if((*p)=='+') p++; hile(*p) nn=nn*10-48+(*p++); return(nn*ss); } in() /* 主函数 */ r s[6]; long n; nter a string:") ; ets(s); n = fun(s); ",n); } 运行结果: -1234 程序功能:输入一个字符串,并将其转换为数字 8.4.8 下列程序功能是将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642。请改正程序中的错误,使它能得出正确的结果。 h> void fun (long s, long *t) { int d; long sl=1; *t = 0; hile ( s > 0) { d = s%10; if (d/2==0) // 改为:if(d%2==0) { *t=d* sl+ *t; sl *= 10; } \= 10; //改为:s/=10; } } in() { long s, t; nf("%ld", &s); un(s, &t); t is: %ld", t); } M行M列整数方阵求两条对角线上各元素之和。请改正程序中的错误,使它能得出正确的结果。 h> M 5 [ ][ ]) //改int fun(int n,int x[][M]) [M]; M ; i++ ) //改for(p=x,i=0;i [ i ][ i ]+p[ i ][ n-i-1 ]; return( sum ); } in( ) [M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}}; The sum of all elements on 2 diagnals is %d.",fun( M, a )); } 习题9 9.1 选择题 PI 3.14159 中,宏名PI代替的是一个( D )。 常量[9] 单精度数 双精度[10]数 字符串 NEW(X)的宏,产生它的参数的负值,正确的语句是( C )。 #define NEW(X) -x #define NEW(X) x #define NEW(X) (-x) #define NEW(X) (-x); BSVAL(X)的宏,产生它的参数的绝对值,正确的语句是( D )。 #define ABSVAL(X) (-x) #define ABSVAL(X) (x<0 ? –x:x) #define ABSVAL(X) (x>0 ? x:-x) #define ABSVAL(X) ((x)<0 ?(-x):(x)) 。 #define PI=3.14159 include "string.h" #include math.h; #define s(r) r*r )。 MIN(x,y) (x)<(y)?(x):(y) in( ) { int i=10,j=15,k; MIN(i,j); ",k); } 10 15 C) 100 D) 150 )。 宏替换只是字符替换 宏名无类型 宏名必须用大写字母表示 宏替换不占用运行时间 N+Y(5+1));”后,z值为( C )。 N 3 Y(n) ((N+1)*n) 42 15 48 出错 ine F(n) 2*n ,则表达式F(4+2)的值是( B )。 12 B) 10 C) 22 D)20 )。 可以把define和if定义为用户标识[11]符(即宏名或常量符号名) 可以把define定义为用户标识符,但不能把if定义为用户标识符 可以把if定义为用户标识符,但不能把define定义为用户标识符 define和if都不能定义为用户标识符 )。 预处理命令行必须位于C源程序的起始位置 在C语言中,预处理命令行都以“#”开头 每个C程序必须在开头包含预处理命令行:#include C语言的预处理不能实现宏定义和条件编译的功能 9.2 编程题 9.2.1 写出下列程序的运行结果,并上机予以验证。 LETTER 0 in( ) r str[20]= "C Language",c; int i=0; [i])!= '\0' ) { i=i+1; LETTER ' &&c<='z' ) =c-32; #else ' &&c<='Z') =c+32; #endif printf("%c",c); } } 运行结果: nguage 9.2.2 写出下列程序的运行结果,并上机予以验证。 EXCH(a,b) { int t;t=a;a=b;b=t;} in( ) { int x=5,y=9; XCH(x,y); ",x,y); 运行结果: x=9,y=5 9.2.3 写出下列程序的运行结果,并上机予以验证。 PR(x) printf("%d,",x) in( ) [ ]={1,3,5,7,9,11,13,15},*p=a+5; or(i=3;i;i--) h( i ) se 1: se 2: PR(*p++);break; se 3: PR(*(--p)); } } 运行结果: 9,9,11 习题10 10.1 填空题 语言允许定义由不同数据项[12]组合的数据类型[13],称为 结构 。 语言的构造类型。 10.1.3 结构体变量成员的引用方式是使用 · 运算符。 10.1.4 结构体指针变量成员的引用方式是使用 -> 运算符。 10.1.5 若有定义: struct num { ; int ; float f ; }n={1,3,5.0}; struct num *pn=&n ; *(++pn->b)的值是 12 , 表达式(*pn).a+pn->f的值是 6.00000 。 语言可以定义共用体类型,其关键字为 union 。 语言允许用 typedef 声明新的类型名来代替已有的类型名。 10.1.8 链表[14]中,每个结点[15]包括两个部分:一个是存储数据元素的 数据域 ,另一个是存储下一个结点地址的 指针域 。 10.1.9 相比于线性表[16]顺序结构,链表比较方便 插入 和 删除 操作。 lloc 、 calloc 、 free 。 10.2 选择题 10.2.1 有如下说明语句,则下面叙述不正确的是 。 struct stu { ; float ; }stutype; struct是结构体类型的关键字 struct stu是用户定义的结构体类型 stutype是用户定义的结构体类型名 a和b都是结构体成员名 10.2.2 以下对结构类型变量的定义中不正确的是 。 #define STUDENT struct student struct student STUDENT { { int num; t age ; float age; }std1 ; }std1; struct { struct { t age ; t age ; }student; } std1 ; struct student std1 ; 10.2.3 当定义一个结构体变量时,系统分配给它的内存是 。 各成员所需内存量的总和 结构中第一个成员所需内存量 成员中占内存量最大的容量 结构中最后一个成员所需内存量 10.2.4 已知学生记录描述为: struct student { r name[20]; char sex; struct { r; int month ; int day ; h ; } s ; h”应是“1985年10月1日”,则下面正确的赋值方式是 。 year=1985 birth.year=1985 h.month=10 y=1 irth.day=1 s.year=1985 s.birth.year=1985 h.month=10 num typedef union struct nf type 。 必须为字母 必须为下划线 必须为字母或下划线 可以是字母、数字和下划线中任一种字符
题目解答
答案
标准库函数 、 自定义函数 <=y z*x 1 s*i 0 f(k) 所指对象的内容 取变量的地址 P P c( 或者 *pc) num[i] * k = p a a[i] // 或者 *(a+i) 或者 *(p+i) 1 fun ss q 6,8 1,5,24 24 66 Result=-12345 Average score is: 71.80 求 5 门课程平均分 -1234 : 输入一个字符串,并将其转换为数字 // 改为: if( d%2 ==0) // 改为: s /= 10; // 改 int fun(int n,int x[][ M ]) // 改 int i,j,sum=0, (*p)[M ]; // 改 for(p= x ,i= 0 ;i