Download presentation
Presentation is loading. Please wait.
1
复习题
2
在C语言中,下列表达式的值最大的是______.
A.sizeof(‘a’) B.sizeof(97) C.sizeof(“aaaa”) D.sizeof(97.0) D
3
假设a=2, b=‘2’, s=“2”,下列逻辑表达式中值为1(真)的是_______.
A.(s[1]>‘a’) || ~(a+b) B.(b>a) && (s[2]=‘\0’) C.!(s+1 && b-a) D.!a>b && ~(a>b) A
4
变量a=1, b=‘1’, c=1.0, d=“1”,下列运算不能进行的是_______.
A.b/a-- B.~a|!b C.c^++a D.d+a-b C
5
设char a[]="0123456789abc"; int i=0, j=10;执行下列哪一条语句所得到的结果和其他三项不同_______.
A.for ( ; i<=j; i++, --j) a[i]=a[j]; B.for ( ; i<=j; ) a[i++]=a[j--]; C.while ( i++ <= --j ) a[i]=a[j]; D.do { a[i]=a[j]; } while(++i < --j); C
6
下面四个选项中,均非浮点数正确表示的选项是_______.
A. 160. e3 B. e C. -e e3 D. e e5 D
7
若有函数声明void f(int. p);及int a[][3]={{1},{2},{3}},
若有函数声明void f(int *p);及int a[][3]={{1},{2},{3}}, *c[3]={a[0], a[1],a[2]}; 则使得函数调用正确的是_______. A.f(a) B.f(c) C.f(*a) D.以上都不是 C
8
char s1[20]="China",s2[20]="for"; if(strcmp(s1,s2))
以下程序段的输出结果是_______. char s1[20]="China",s2[20]="for"; if(strcmp(s1,s2)) printf("%s\n", strcat(s2,s1)); else printf("%d\n",strlen(s1)); A. B.5 C.Chinafor D.forChina B
9
假设a=5,b=1,在执行 t = a-b ? (b-a ? a<<2|b : b<<2|a) : a>>b|2之后,t的值为_______.
C.6 D.1 A
10
若整型变量x=2,则表达式1<x<<x<4的值为__________. 1
11
已知unsigned short m = 65539; 则执行语句
printf("%d", m); 后的输出结果是__________. 3 65539 = 0x10003
12
以下程序的输出是__________. #include<stdio.h> #define F "first %s"
#define D "string" void main( ) { char string[ ] = "character"; printf( F, D ); } first string
13
可将a按照保留两位小数的百分率形式输出,例如 a = 0.32049 就应输出32.05%(注意需有百分号).
假设a是一个float变量,语句: printf(____________); 可将a按照保留两位小数的百分率形式输出,例如 a = 就应输出32.05%(注意需有百分号). “%.2f%%”,a*100
14
运行以下代码段,则输出结果中有__________个“#”.
static int a[10] = {1*10}, i=0; while (a[i++]) printf("#"); 1
15
下列程序段的输出是__________. 7 int c=0,k; for (k=1;k<3;k++) switch (k) {
default: c+=k; case 2: c++; case 4: c+=2; } printf("%d\n",c); 7
16
下列程序段的输出是__________. int n=2,k=0; while( k++ && ++n>2 );
printf("%d %d\n",k,n); 1 2
17
以下程序段运行的结果是__________.
int i,j,sum; for(i=11;i>=1;i-=3){ for(j=1;j<=i;j+=2); sum+=i*j, sum=i+j; } printf("%d\n",sum); 12
18
对于以下代码段,若输入“12e-0x34.56”(不含引号),则输出结果是___________.
float f; char c; int d; scanf("%f%c%d", &f, &c, &d); printf("%.2f%c%d", f, c, d); 12.00x34
19
下列程序段的输出结果是__________.
char s[]="xyz", *ps=s; while (*ps++); ps--; for(ps--; ps-s>=0; ps--) printf("%s#",ps); z#yz#xyz#
20
假设所有变量均为整型,则表达式 的值是__________. -24 关于运算符++/-- 执行 y和z的值是__________.
x=3, y=4, x++, y+=y-=x*=y 的值是__________. -24 执行 x=3, y=x*=x++, z=x; y和z的值是__________. 9 10 关于运算符++/-- 1)作用在变量之前(前缀),优先级最高(单目运算符之列) 2)作用在变量之后(后缀),优先级最低(低于赋值,高于逗号)
21
下面下列程序的输出是_______. 6 #include<stdio.h> int t = 2;
int fun ( int v, int *u ) { static int t = 1; t += 2**u - v; return t; } void main( ) int u = 4, v = 3; t += fun( u, &v ); printf("%d", fun( t, &u ) ); 6
22
如果输入为:AAA22Bb#44dD,那么下面程序的运行结果是______________.
#include <stdio.h> void main() { char s[32], oldc='\0', cc; int n = 0; while( (cc=getchar())!='\n' ) { if( cc==oldc ) continue; else if( cc=='#' ) break; else if( cc>='a' && cc<='z' || cc>='A' && cc<='Z' ) s[n++] = oldc = cc; } s[n] = '\0'; printf("%s\n",s); ABb
23
假定文本文件abc.txt中包含以下4行内容: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
则运行下列程序后,将输出________。 #include <stdio.h> #include <math.h> void convert(int *p[], int k) { int i, j, t; for(i=0; i<k/2; i++) { for(j=0; j<k; j++) { t = p[i][j]; p[i][j] = p[k-1-i][j]; p[k-1-i][j] = t; }
24
main() { FILE *fp; int x, i, j, k, n=0, *p, **pp; fp = fopen("abc.txt", "r"); while(!feof(fp)){ fscanf(fp, "%d ", &x); n++; } fclose(fp); fp=fopen("abc.txt", "r"); k = sqrt(n); pp = (int **) malloc(k * sizeof(int *)); for(i=0; i<k; i++) pp[i] = (int *) malloc(k * sizeof(int)); for(j=0; j<k; j++) fscanf(fp, "%d ", pp[i]+j); fclose(fp); convert(pp, k); for(i=0; i<k; i++) printf("#%d", *(*(pp+i)+i) ); #13#10#7#4
25
下面程序读入一个无符号整数,然后调用函数convert将其表示为十六进制,并输出。
#include <stdio.h> void main() { char str[32]; unsigned int n; printf("输入一个正整数: "); scanf("%u", &n); __________ (5)___________; printf("%d的十六进制为:%s\n", n, str); }
26
void convert(unsigned int value, char
void convert(unsigned int value, char *s) { static table[] = “___(1)___"; char temp, *tail = ___(2)____; do { *tail++ = table [value%16]; ______ (3)_______ ; } while( value ); *tail-- = '\0'; /* 颠倒字符串s的顺序 */ while( s<tail ) { temp = *s; *s++ = *tail; ______(4)_____ ; }
27
程序填空答案 (1) ABCDEF (2) s (3) value = value/16 (4) *tail-- = temp (5) convert(n, str)
28
以下程序先读取文件input.txt中的字符串,然后对字符串进行排序,再把已排序的字符串中重复的字符删除,最后输出结果。例如,文件input.txt中保存的字符串为"abracadabra",则程序输出"abcdr"。其中函数sort()使用冒泡法从小到大排序,函数delete()删除已排序的字符串中重复的字符。 #include <stdio.h> #include <stdlib.h> #include <string.h> void xchg(char p[]) { char t; t = p[0]; p[0] = p[1]; p[1]=t; }
29
char * sort(char s[]) { int i, j, n; n = strlen(s); for(i = n - 1; i>=1; i--) for(j=0; j<i; j++) if(s[j] > s[j+1]) xchg( (6) ); } return s; void delete(char *s) { char *p, b='\0'; int i=0, j=0; p = (char *) malloc( strlen(s)+1 ); while(*(s+i) != '\0') if( (7) ) i++; continue; } b = *(s+i); *(p + j++) = *(s + i++); *(p+j) = '\0'; (8) ; free(p);
30
void main() { FILE. fp; char a[100]; if((fp=fopen("input
void main() { FILE *fp; char a[100]; if((fp=fopen("input.txt","r")) == NULL) printf("File open error!\n"); exit(0); } (9) ; delete( (10) ); puts(a); if(fclose(fp)) printf("Can not close the file!\n"); exit(0);
31
程序填空答案 (6) s+j 或 &s[j] (7) *(s+i) == b 或 s[i] == b (8) strcpy(s, p) (9) fscanf(fp,"%s",a) (10) sort(a)
32
End
Similar presentations