第1周:程序设计与C语言

第1周编程练习

1、输出“Hello World”

第2周:计算

1 变量随堂测验

1、给定: int a,b; 以下哪些scanf的使用是正确的?
    A、scanf("%d", &a); scanf("%d", &b);
    B、scanf("%d %d", &a, &b);
    C、scanf("%d, %d", &a, &b);
    D、scanf("%d %d", a, b);

2、以下哪些是有效的变量名?
    A、main
    B、4ever
    C、monkey-king
    D、__int

3、给定: int a,b; scanf("%d %d", &a, &b); 则以下哪些输入方式是正确的?
    A、1 2
    B、1,2
    C、1(回车)2
    D、1、2

4、给定以下代码段: int a,b=0; 则a的初始值是0

2 数据类型随堂测验

1、写出下式的运算结果: 10/3.0*3 (如果认为结果是浮点数,请以小数点后一位小数来表示)

2、写出下式的运算结果: 10/3*3.0 (如果认为结果是浮点数,请以小数点后一位小数来表示)

3 表达式随堂测验

1、写出以下代码执行后,t1和t2的值,以空格隔开: int a=14; int t1 = a++; int t2 = ++a;

2、写出以下表达式的结果,结果之间间隔一个空格: 6 + 5 / 4 - 2 2 + 2 * (2 * 2 - 2) % 2 / 3 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10

第2周编程练习

1、逆序的三位数

第3周:判断与循环

1 判断随堂测验

1、以下语句是否可以通过编译: if ( 1<=n<=10 );

2、以下语句是否表示n属于[1,10]: if ( 1<=n<=10 );

3、写出程序的输出结果: int i,j,k; i=5; j=10; k=1; printf("%d", k>i<j);

4、写出程序的输出结果: int i,j,k; i=2;j=3; k = i*j==6; printf("%d\n", k);

5、写出程序的输出结果: int i,j,k; i=3;j=2;k=1; printf("%d", i<j == j<k);

2 循环随堂测验

1、以下哪个循环和其他三条循环不等价(假设循环体都是一样的)?
    A、for ( i=0; i<10; i++ ) {...}
    B、for ( i=0; i<10; ++i ) {...}
    C、for ( i=0; i++<10; ) {...}
    D、for ( i=0; i<=9; i++ ) {...}

2、while循环的条件满足的时候循环继续,而do-while的条件满足的时候循环就结束了

3、以下代码片段执行结束后,变量i的值是多少?int i =10; while ( i>0 ) { i /=2; }

4、以下代码片段执行结束后,变量i的值是多少?int i = 1; do { i += 5; } while (i<17);

5、以下代码段的输出是什么?for ( int i=10; i> 1; i /=2 ) { printf("%d ", i++); }

第3周编程练习

1、时间换算

2、分队列

第5周:循环控制

2 多重循环随堂测验

1、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) continue; sum += i; } printf("%d\n", sum);

2、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) break; sum += i; } printf("%d\n", sum);

第5周编程练习

1、素数和

2、念整数

第4周:进一步的判断与循环

3 多路分支随堂测验

1、写出程序的输出:int i=1; switch ( i%3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); }

4 循环的例子随堂测验

1、以下哪种运算能从变量x中取得十进制最低位的数字
    A、x /10
    B、x % 10
    C、x * 10
    D、10 / x

2、当需要累加一些值的时候,用来记录累加结果的变量应该被初始为:

第4周编程练习

1、奇偶个数

2、数字特征值

第6周:数组与函数

3 函数的参数和变量随堂测验

1、以下哪句不是正确的函数原型?
    A、int f();
    B、int f(int i);
    C、int f(int);
    D、int f() {}

2、以下哪个函数的定义是错误的?
    A、void f() {}
    B、void f(int i) { return i+1; }
    C、void f(int i) {}
    D、int f() { return 0; }

3、对于不返回值而且只有一个int类型的参数的函数,以下哪些函数原型是正确的?
    A、void f(int x);
    B、void f();
    C、void f(int);
    D、void f(x);

4、以下程序的输出是什么?void swap(int a, int b); int main() { int a = 5; int b = 6; swap(a,b); printf("%d-%d\n", a, b); return 0; } void swap(int a, int b) { int t = a; a = b; b = t; }

第一次单元测验

1、以下哪个选项是判断ch是否为大写字母的正确形式?
    A、ch >= 'A' && ch <='Z'
    B、ch <= 'Z' && ch >= 'A'
    C、'A' <= ch <= 'Z'
    D、ch >= 'A' || ch <= 'Z'
    E、ch >='A' AND ch <='Z'
    F、ch BETWEEN 'A' AND 'Z"

2、以下代码片段的输出是: int j=4; for ( int i=j; i<=2*j; i++ ) { switch ( i/j ) { case 0: case 1: printf(“*”); break; case 2: printf(“#”); } }
    A、****#
    B、****##
    C、***#
    D、*#
    E、****

3、下列程序段输出结果为: int x=1, y=012; printf(“%d”,y*x++);
    A、10
    B、12
    C、20
    D、24

4、下面程序段的输出结果是? int k; while(k!=0) k=k-1; printf(“%d”, k);
    A、0
    B、无论k的初值如何,最终都会减到0的。
    C、因为k没有初值,所以结果不确定
    D、1
    E、因为没有给k赋初值,因此程序不能通过编译

5、以下表达式x&&1 用在if的条件中时,和哪个是等价的:
    A、x!=0
    B、x
    C、x==0
    D、x==1
    E、x!=1

6、以下哪个不是C语言的关键字?
    A、include
    B、if
    C、while
    D、int
    E、for

7、对于以下代码: unsigned short sht = 0; sht --; 执行后,sht的值是?
    A、65535
    B、2的16次方-1
    C、-1
    D、32767
    E、65536

8、以下哪个直接量是十进制的124?
    A、0174
    B、0x7C
    C、124
    D、0x124
    E、0124
    F、124d

9、对于以下代码: int i=6; if ( i<= 6 ) printf("hello\n");; else printf("bye-bye\n");; 哪句话是对的?
    A、无法编译
    B、不能通过编译
    C、打印出"hello"
    D、打印出"bye-bye"
    E、打印出"hello bye-bye"

10、在代码: while ( !e ) 中,!e等价于:
    A、e == 0
    B、e != 1
    C、e!=0
    D、e == 1

11、下列可用于C语言程序标识符的一组是(名字间以逗号分隔):
    A、For, _abc, IF
    B、_if, _123, file
    C、void, d, WORD
    D、For, -abc, IF
    E、2_a, xyz, b1_s
    F、void,_2a, 2a

12、对for(表达式1;;表达式3) 可理解为
    A、for(表达式1;1;表达式3)
    B、for(表达式1;true;表达式3)
    C、for(表达式1; 表达式1;表达式3)
    D、for(表达式1; 表达式3;表达式3)
    E、for(表达式1;0;表达式3)

13、对于以下代码: int i,j=6; 以下哪句话是对的?
    A、i不会被初始化,而j是6
    B、i和j的初始值都是6
    C、i被初始为0,而j是6
    D、不能通过编译

14、对于以下代码: char ch = -1; printf("%d\n", ch); 输出结果是?
    A、-1
    B、255
    C、ASCII码表中255那个位置的字符
    D、编译错误,因为赋值的时候类型不一致
    E、编译错误,因为赋值的时候不能把负数赋给char
    F、运行错误,因为%d和ch的类型不匹配

15、对于以下代码: int i; scanf("%d", &i); i %= 4; 执行后,i会有几种可能性?
    A、7
    B、0
    C、1
    D、2
    E、3
    F、不好说

16、对于以下代码: int i=6; do { printf("%d", i--); } while (0); 哪句话是对的?
    A、打印出6
    B、打印出5
    C、因为while(0),无法编译
    D、打印不出东西

17、对于以下代码: int i; for ( i=0; i<10; i++) printf("%d", i); for循环结束后,i的值是多少?
    A、10
    B、9
    C、11
    D、i没有确定的值
    E、i不存在

18、以下哪个for语句是错误的?
    A、for (i=0;j=0; i<10; i++ );
    B、for (i=0;i<10);
    C、for (i=0; i++ );
    D、for (;;);
    E、for (i=0; i<10; i--);
    F、for (i=0; i<10, j<10; i++);
    G、for (int i=0; i<10, j<10; i++);

19、表达式ch =‘B’+‘8’-‘3’表示的字符是:

20、以下代码的输出是 _____. int x=0, y=0, z=0; z = (x==1) && (y=2); printf("%d ", y);

21、以下代码段的结果是: int i=10; long long t = sizeof(i++); printf("%d", i);

22、表达式(double)(10/4*4) 的结果是_____

23、以下代码的输出是 : int i,x,y; i=x=y=0; do { ++i; if ( i%2 ) x+=i, i++; y +=i++; } while ( i<=7 ); printf("%d %d %d", i, x, y);

第6周编程练习

1、高精度小数

第7周:数组运算

1 数组运算随堂测验

1、若有定义: int a[2][3]; 则以下选项中不越界的正确的访问有:
    A、a[2][0]
    B、a[2][3]
    C、a[1>2][0]
    D、a[0][3]

2、以下程序片段的输出结果是:int m[][3] = {1,4,7,2,5,8,3,6,9,}; int i,j,k=2; for ( i=0; i<3; i++ ) { printf("%d", m[k][i]); }
    A、369
    B、不能通过编译
    C、789
    D、能编译,但是运行时数组下标越界了

3、假设int类型变量占用4个字节,定义数组 int x[10] = {0,2,4}; 则x在内存中占据几个字节?

4、若有: int a[][3] = {{0},{1},{2}}; 则 a[1][2] 的值是?

第7周编程练习

1、多项式加法

2、鞍点

第8周:指针与字符串

1 指针随堂测验

1、对于:int a[] = {5, 15, 34, 54, 14, 2, 52, 72}; int *p = &a[5]; 则: p[-2]的值是?
    A、编译出错,因为数组下标越界了
    B、运行出错,因为数组下标越界了
    C、54
    D、2

2、如果:int a[] = ; int *p = a; 则以下哪些表达式的结果为真?
    A、p == a[0]
    B、p == &a[0]
    C、*p == a[0]
    D、p[0] == a[0]

3、以下变量定义: int* p,q; 中,p和q都是指针。

4、对于:int a[] = {5, 15, 34, 54, 14, 2, 52, 72}; int *p = &a[1]; 则: p[2]的值是?

第8周编程练习

1、单词长度

2、GPS数据处理

期末考试

期末试卷

1、以下哪个表达式表示“当 x 的取值在 [-10, 0] 的范围内,结果为真,否则为假”
    A、x>=-10&&x<=0
    B、x<=0&&x>=-10
    C、!(x<-10||x>0)
    D、-10 <=x<=0
    E、-10 <x<0
    F、x in [-10, 0]

2、若变量已正确定义,执行 scanf("%d%c%f", &op1, &op, &op2); 输入什么之后,op1的值为1,op的值为’*’,op2的值为2.0.
    A、1*2
    B、1* 2
    C、1*2.0
    D、1*2.
    E、1* 2.
    F、1 *2
    G、1 *2.0
    H、1 *2.
    I、1 * 2
    J、1 * 2.0
    K、1 * 2.

3、下面的这个循环的循环次数是 for(int i=0,j=10; i=j=10; i++,j--) ;
    A、无限次
    B、编译错误
    C、10次
    D、1次

4、以下哪句不能编译?
    A、if ( a==b ) else printf("no");
    B、if ( a==b ); else printf("no");
    C、if ( a==b ) {} else printf("no");
    D、if ( a==b ) printf("no");

5、循环语句while (!x&&!y)中的循环条件表达式等价于
    A、!(x || y)
    B、!(x!=0||y!=0)
    C、x=0 && y=0
    D、!(x==0 || y==0)
    E、!(x==0 && y==0)

6、以下哪个循环并非重复5次?
    A、int i; for (i=0; i<=5; i++) {}
    B、int i; for (i=0; i<5; i++) {}
    C、int i; for (i=1; i<=5; i++) {}
    D、int i; for (i=1; i<6; i++) {}

7、对于 int x, y; 语句 if (x < 0) y = -1; else if (!x) y = 0; else y = 1;等价于
    A、y=0; if (x!=0) if(x>0) y=1; else y=-1;
    B、if (x>=0) y=0; if(x) y=1; else y=-1;
    C、y=0; if (x>=0) if(x) y=1; else y=-1;
    D、if (x != 0) if (x > 0) y = 1; else y = -1;

8、对于以下代码: int i=6; do { printf("%d", i--); } while (0); 哪句话是对的?
    A、打印出6
    B、通不过编译
    C、打印出5
    D、打印不出东西

9、要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确实现此功能的函数是
    A、void funa(int *x , int *y) { *x=*x+*y;*y=*x-*y;*x=*x-*y; }
    B、void funa(int *x , int *y) { int t = *x; *x = *y; *y = t; }
    C、void funa(int *x , int *y) { int *p; *p=*x;*x=*y;*y=*p; }
    D、void funa(int x , int y) { int t; t=x;x=y;y=t; }
    E、int funa(int *x , int *y) { *x=*y;*y=*x; }

10、语句while(x%3) a++;中的表达式x%3等价于_______.
    A、x%3!=0
    B、x%3==0
    C、x%3==1
    D、x%3==2

11、下列数组定义,不正确的是 _______.
    A、int x[2][]={1,2,4,6};
    B、int a[1][3];
    C、int x[2][2]={1,2,3,4};
    D、int m[][3]={1,2,3,4,5,6};

12、对for(表达式1;;表达式3)可理解为_______.
    A、for(表达式1;1;表达式3)
    B、for(表达式1; 表达式1;表达式3)
    C、for(表达式1; 表达式3;表达式3)
    D、for(表达式1;0;表达式3)

13、对于以下代码: char ch = -1; printf("%hhd\n", ch); 输出结果是?
    A、-1
    B、255
    C、65535
    D、32768
    E、因为类型不匹配导致运行时刻错误
    F、因为类型不匹配导致编译错误

14、以下哪句不是正确的函数原型?
    A、int f(int i) {};
    B、int f(i);
    C、int f();
    D、int f(int);
    E、int f(int i);
    F、int f(void);

15、给定以下原型: void f(double dd); 和如下变量定义: double a; 哪个函数调用是不能被编译的?
    A、f(&a);
    B、f(1.0);
    C、f(1);
    D、f(1u);
    E、f(1.0f);
    F、f(a);
    G、f(sizeof(a));

16、以下哪个不是C语言的关键字?
    A、define
    B、main
    C、then
    D、printf
    E、scanf
    F、goto
    G、if
    H、typedef
    I、struct
    J、while
    K、do
    L、auto
    M、else
    N、switch
    O、case
    P、return

17、对于以下代码:int i; for ( i=0; i<10; i++) printf("%d", i); for循环后,i的值是多少?
    A、10
    B、9
    C、11
    D、没有确定的值
    E、i不再存在了

18、以下哪个for语句是不能编译的?
    A、for (i=0;j=0; i<10; i++ );
    B、for (i=0,j=0; i<10; i++; j++ );
    C、for ();
    D、for (;;);
    E、for ( i=0; j<10; j++ );
    F、for (i=0; i<10, j<10; i++);
    G、for (i=0; i<10; i--);

19、假设字符变量ch中存放有大写英文字母,将其转换为相应的小写英文字母的表达式是
    A、ch=ch+32
    B、ch+=32
    C、ch=ch+'a'-'A'
    D、ch+='a'-'A'
    E、ch=tolower(ch)
    F、ch=ch-'A'+'a'
    G、ch-='A'-'a'
    H、toupper(ch)
    I、tolower(ch)
    J、ch=ch-32
    K、ch-=32
    L、ch = ch-'a'-'A'
    M、ch -= 'a'-'A'

20、有以下定义: double a,b,c; 则以下哪个表达式与a/b/c不等价?
    A、a/(b/c)
    B、(a/b)/c
    C、a/(b*c)
    D、a/c/b

21、以下哪个循环能编译?
    A、for ( i=10 ; i++; ) {}
    B、for ( i=10 ; i<100 ) {}
    C、for ( i=10 ; i++ ) {}
    D、for ( i=10 ,i<100, i++ ) {}

22、有函数原型为void f(int, int *);,主函数中有变量定义:int a=2, *p=&a; 则下列函数调用正确的是
    A、f(*p, &a);
    B、f(a, p);
    C、f(*p, p);
    D、f(a, &a);
    E、f(a, *p);
    F、f(a, &p);
    G、f(*p, a);
    H、f(p,a);

23、以下哪个是无效的C语言变量名?
    A、4ever
    B、int
    C、struct
    D、main
    E、printf
    F、_a

24、以下哪个函数是不能编译的?
    A、void f(int i) { return i; }
    B、int f() { }
    C、int f() { return 0; }
    D、void f() { }
    E、int f(void) { return 0; }

25、给定函数原型如下: int* f(int *p); 而另有变量定义如下: int i; 哪个对函数的调用是错误的?
    A、f(&(i+6));
    B、f(&i);
    C、*f(&i) = 6;
    D、int* p = f(&i);

26、对于以下代码: char ch = -1; printf("%d\n", ch); 输出结果是?
    A、-1
    B、255
    C、未定义的输出
    D、编译错误
    E、运行时刻异常

27、对于以下代码: void f() { int i,j=6; } 以下哪句话是对的?
    A、i不会被初始化,而j是6
    B、i和j的初始值都是6
    C、i被初始为0,而j是6
    D、不能通过编译

28、对于以下代码: int i=6; if ( i<= 6 ) printf("hello\n");; else printf("bye-bye\n");; 哪句话是对的?
    A、通不过编译
    B、打印出"hello"
    C、打印出"bye-bye"
    D、打印出"hello bye-bye"

29、语句if (4/5 > 3/4) a=1; else a=0; 运行后,a的值是

30、表达式 !!"2010-01-27"的值为(以1表示真,0表示假)

31、现有 int x=0,y=4; 则表达式 -10<x&&y<0 的结果是

32、表达式 (double)(10/4*4) 的结果是: (如果认为结果是浮点数,请以小数点后一位小数来表示)

33、若有 int x = 5; 则 ! x<10 的结果(以整数表达)是

34、若变量已正确定义并赋值,则表达式(-10<x<0)的值为

35、表达式(double)(10/4)的值为 (如果认为结果是浮点数,请以小数点后一位小数来表示)

36、假设sizeof(int)的值为4,对数组定义:int a[3][6];则sizeof( a[0] )的值为______。

37、若int a = 6, b = 0, c = 3;,则表达式 a && b || b - c的结果是(以1表示真,0表示假)

38、下列程序段输出_______。int fun(int x) { return (x<3?1:(fun(x-1)+2*fun(x-2))); } int main() { printf("%d",fun(4)+fun(5)); }

39、以下代码段的输出是:char a[20]="cehiknqtw"; char *s="fbla",*p; int i, j; for(p=s; *p; p++) { j=0; while (*p>=a[j] && a[j]!='\0') j++; for(i=strlen(a); i>=j; i--) a[i+1] = a[i]; a[j]=*p; } printf("%s", a);

40、下列代码段的输出结果是:char s[]="Zhejiang"; s[strlen(s)/2-1]=0; printf("%lu#%s#",strlen(s),s);

41、以下代码段的输出是:int number, right_digit; number = 15292; if ( number ==0 ) { printf("0"); } else while ( number != 0 ) { right_digit = number % 10; printf("%i", right_digit); number /= 10; }

42、若有 int x = 5; 则 ! x<10 的结果(以整数表达)是

43、表达式'B'+'8'-'3'表示的字符是(请仅输入单个字符,不要加前后的引号等其他符号)

44、现有 int x=0,y=4; 表达式-10<x & y<0的结果是

45、以下代码的输出是 : void swap( int *pa, int *pb ) { int pt; pt = *pa, *pa = *pb, *pb = *pa; } int main(void) { int x=1, y=2; swap(&x, &y); printf("%d%d", x, y); }

46、表达式-17%4的结果是

期末考试编程题

1、最简分式