第一周:从问题到C语言程序设计

1.1 计算机的问题求解方法随堂测验

1、算法的描述方法除了自然语言之外,还包括:
    A、流程图
    B、NS流程图
    C、伪代码
    D、程序语言

2、结构化程序设计方法包含三种基本结构:
    A、顺序结构
    B、选择结构
    C、循环结构
    D、跳转结构

3、goto语句很方便,应该随意使用

4、程序设计包括以下五个步骤: (1)确定问题可计算; (2)建立问题的数学模型; (3)设计算法和数据结构; (4)选择合适的计算机语言编写程序; (5)调试运行程序分析结果。 这种说法正确吗?

5、算法的特征包括:有穷性,确定性,有效性,有零或多个输入,有一或多个输出。这种说法正确吗?

6、计算复杂度包括【 】复杂度和空间复杂度。

第二周:数据计算实现与顺序结构程序设计(一)

2.1 算术运算的C程序实现随堂测验

1、以下程序的输出结果是____。 #include main( ) { int x=10, y=10; printf("%d %d\n", x--, --y); }
    A、10 10
    B、9 9
    C、9 10
    D、10 9



2.2 关系运算的C程序实现随堂测验

1、已知:x=10,y=2; 表达式x-5<=x+y的值是____
    A、0
    B、1
    C、11
    D、9



第二周作业

1、已知:char a;int b;float c;double d;执行语句 c=a+b+c+d;后,变量c的数据类型是____
    A、float
    B、int
    C、char
    D、double



2、已知 int i=5;执行语句 i+=++i;i的值是____
    A、12
    B、10
    C、11
    D、其他答案都不对



3、已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是____
    A、5
    B、0
    C、1
    D、6



4、下列可以正确表示字符型常数的是____
    A、'\t’
    B、"a"
    C、"\n"
    D、297



5、字符串"\\\065a,\n"的长度是____
    A、5
    B、8
    C、7
    D、6



6、把算术表达式 表示为一个C语言表达式,正确的写法是____
    A、–(31.6*a*8+1.0/7)*12
    B、–(31.6a*8+1/7)*12
    C、–(31.6a*8.0+1.0/7.0)*12
    D、–31.6*a*8+1.0/7*12



7、温度华氏和摄氏的关系是: C=5(F-32)/9。已知:float C,F;由华氏求摄氏的正确的赋值表达式是____
    A、C=5*(F-32)/9
    B、C=5/9(F-32)
    C、C=5/9*(F-32)
    D、三个表达式都正确



8、已知int i=10;表达式“20-0<=i<=9”的值是____
    A、1
    B、0
    C、19
    D、20



9、已知:int x,y;double z;则以下语句中错误的函数调用是____
    A、scanf ("%x%o%6.2f",&x,&y,&z)
    B、scanf ("%d,%lx,%le",&x,&y,&z)
    C、scanf ("%2d%d%lf",&x,&y,&z)
    D、scanf ("%x%*d%o",&x,&y)



10、已知” int a=5,b=5,c;”,则执行表达式” c=a=a>b”后变量 a 的值为____
    A、0
    B、1
    C、4
    D、5



第三周:数据计算实现与顺序结构程序设计(二)

2.3 逻辑运算的C程序实现随堂测验

1、表示算术关系12≤x≤y的C语言表达式为 。
    A、(12 <= x)|| ( x <= y )
    B、(12 != x)| ( x != y )
    C、(12 <= x)& ( x <= y )
    D、(12 <= x)&& ( x <= y )



2.4 位运算的C程序实现随堂测验

1、假设a和b都是16位二进制整数,它们的值分别是: a: 1010,1001,0101,0111 b: 0110,0000,1111,1011 则c=(a>>2)|~b运算后,c的二进制表示为 。



2.5 几种很个别的运算随堂测验

1、已知int i,a; 执行语句"i=(a=2*3,a*5),a+6;"后,变量i的值是 。
    A、6
    B、12
    C、30
    D、36



2.6 混合运算及数据类型转换随堂测验

1、已知:char w; int x; float y; double z; 则表达式 w*x+z-y结果的类型是 。



2.7 顺序结构程序实例随堂测验

1、[4]
    A、x1,x2
    B、x1;x2
    C、&x1,&x2
    D、&x1;&x2



2、[3]
    A、(-b-q)/(2*a)
    B、-b-q/2*a
    C、(-b-q)/2a
    D、(-b-q)/2*a



3、请选择正确的语句来完善程序,完成如下的功能: 求一元二次方程 的根。 #include int main() { float a, b, c, x1, x2, q; printf("Please input a, b, c\n"); scanf("%f,%f,%f",&a,&b, [1] ); q=sqrt( [2] ); x1=(-b+q)/(2*a); x2= [3] ; printf("x1=%.0f, x2=%.0f\n", [4] ); } [1]
    A、c
    B、&c
    C、%c
    D、f



4、[2]
    A、b*b-4*a*c
    B、4*a*c-b*b
    C、b^2-4ac
    D、4ac-b^2



第四周:选择结构的程序设计

3.1 程序中的路径选择实现随堂测验

1、执行下列程序段后,x、y和z的值分别是 int x=10,y=20,z=30; if(x>y) z=x;x=y;y=z;
    A、10,20,30
    B、20,30,30
    C、20,30,10
    D、20,30,20



3.2 路径中的再选择——嵌套判断随堂测验

1、if语句的控制条件 。
    A、只能用关系表达式
    B、只能用关系表达式或逻辑表达式
    C、只能用逻辑表达式
    D、可以用任何表达式



3.3 复杂判断问题的C程序设计随堂测验

1、下面的程序片段所表示的数学函数关系是 y=-1; if (x!=0) { if (x>0) y=1;} else y=0;
    A、
    B、
    C、
    D、



3.4 多分支问题的C程序设计随堂测验

1、若a和b均是整型变量,以下正确的switch语句是
    A、A. switch (a/b) { case 1: case 3.2: y=a+b; break ; case 0: case 5: y=a-b; }
    B、B. switch (a*a+b*b); {case 3: case 1: y=a+b; break ; case 0: y=b-a; break;}
    C、C. switch a { default : x=a+b; case 10 : y=a-b;break; case 11 : y=a*d; break; }
    D、D. switch(a+b) {case 10: x=a+b; break; case 11: y=a-b; break;}



3.6 选择结构的程序实例随堂测验

1、以下程序的输出结果是____ main( ) { int w=4,x=3,y=2,z=1; if(x>y&&!(z==w))printf(”%d\n”,(w x?w:z>y?z:x)); }
    A、1
    B、2
    C、3
    D、4



2、if (!k) a=3;语句中的!k可以改写为 ,使其功能不变。



3、以下程序的输出是 main( ) { int a=0, b=0, c=0; if (a=b+c) printf (”*** a=%d\n”, a); else printf (”$$$ a=%d\n”, a); }



第四周作业

1、下面程序的输出是 #include main ( ) { int x=1, y=0, a=0, b=0; switch ( x ) { case 1: switch ( y ) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; } printf ("a=%d,b=%d\n", a, b ); }
    A、a=2,b=1
    B、a=1,b=1
    C、a=1,b=0
    D、a=2,b=2



2、以下程序的输出结果是 main( ) { float x=2,y; if (x<0) y=0; else if (x<5&&!x) y=1/(x+2); else if (x<10) y=1/x; else y=10; printf(”%f\n”,y); }
    A、0.500000
    B、0.000000
    C、0.250000
    D、10.000000



3、若下列程序执行后t的值为4,则执行时输入a,b的值范围是 #include ”stdio.h” main( ) { int a, b, s=1, t=1; scanf (”%d, %d”, &a, &b); if (a>0) s+=1; if (a>b) t+=s; else if(a==b) t=5; else t = 2*s; printf (”s=%d, t=%d\n”, s,t); }



4、下列程序段当a的值为014和0x14时的执行结果分别是 if ( a=0xA | a >12 ) if ( 011&10==a ) printf (”%d!\n”,a); else printf (”Right!%d\n”,a); else printf (”Wrong!%d\n”,a);

第五周:循环结构的程序设计(一)

4.1 需要重复执行的程序随堂测验

1、下列程序执行的结果是 a=1;b=2;c=3; while(a    A、1,2,0
    B、2,1,0
    C、1,2,1
    D、2,1,1

4.2 至少要执行一次的循环随堂测验

1、指出程序结束之时,j、i、k的值分别是 main( ) { int a=10,b=5,c=5,d=5,i=0,j=0,k=0; for (;a>b;++b) i++; while (a>++c) j++; do k++; while (a>d++); }
    A、j=5,i=4,k=6;
    B、i=5,j=4,k=6;
    C、j=6,i=5,k=7;
    D、j=6,i=6,k=6;

2、下列程序段 x=3; do{ y = x--; if ( !y ) { printf(”x”); continue; } printf(”#”); } while(1<=x<=2);
    A、输出 ##
    B、输出 ##x
    C、是死循环
    D、有语法错

4.3 已知循环次数用for语句随堂测验

1、下面程序的功能是计算1-3+5-7+ …… -99+101的值。 ① main() { int i,t=1,s=0; for(i=1;i<=101;i+=2) { ① ; s=s+t; ② ; } printf(”%d\n”,s}; }
    A、t = i * t
    B、t = i * (t+1)
    C、t = (i+1)* t
    D、t = (i-1) * t

2、②
    A、t = s
    B、t = -s
    C、t = s > 0 ? -1 : 1
    D、t = s < 0 ? -1 : 1

3、for语句的三个表达式都是必须的。

4.4 循环控制——简单循环应用随堂测验

1、下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。 ① main() { float x,amax,amin; scanf(”%f”,&x); amax=x; amin=x; while( ① ) { if(x>amax) amax=x; if( ② ) amin=x; scanf(”%f”,&x); } printf(”\namax=%f\namin=%f\n”,amax,amin); }
    A、x >= 0
    B、x <= 0
    C、x > 0
    D、x < 0

2、②
    A、x <= amin
    B、x > amin
    C、x < amin
    D、x >= amin

第五周编程作业

1、锻炼身体吧

2、寻找特殊偶数

3、求最小 m 值

第六周:循环结构的程序设计(二)

4.5 循环的嵌套随堂测验

1、下面程序的输出结果是 #include int main( ) { int i,j; float s; for(i=6;i>4;i--) {s=0.0; for(j=i;j>3;j--)s=s+i*j;} printf(”%f\n”,s); }
    A、135.000000
    B、90.000000
    C、45.000000
    D、60.000000



4.6 break与continue随堂测验

1、下列说法中正确的是
    A、break 可以用在任何选择和循环结构与居中
    B、break 可以用在switch结构和任何循环结构中
    C、continue可以用在switch结构和任何循环结构中
    D、continue的功能是结束当前所在的循环



第六周作业

1、求取满足式 的n,正确的语句是____
    A、for(i=1,s=0;(s=s+i*i)<=1000;n=i++)
    B、for(i=1,s=0;(s=s+i*i)<=1000;n=++i)
    C、for(i=1,s=0;(s=s+i*++i)<=1000;n=i)
    D、for(i=1,s=0;(s=s+i*i++)<=1000;n=i)



2、下面的for语句 for(x=0,y=10;(y>0)&&(x<4);x++,y-- )
    A、循环执行4次
    B、是无限循环
    C、循环次数不定
    D、循环执行3次



3、已知int i=1; 执行语句while (i++<4) ;后,变量i的值为
    A、5
    B、3
    C、4
    D、6



4、下面程序的输出结果是____ main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<-3;j++) { if(j%2) continue; x++; } x++; } printf(”x=%d\n”,x); }
    A、x=4
    B、x=8
    C、x=6
    D、x=12



5、假定从键盘上输入“3.6,2.4 <回车> ”,下面程序的输出是____ #include main() { float x,y,z; scanf(”%f,%f”,&x,&y); z=x/y; while(1) { if(fabs(z)>1.0) { x=y; y=z; z=x/y; } else break; } printf(”%f\n”,y); } 注:fabs()是浮点数绝对值函数。
    A、1.600000
    B、1.500000
    C、2.000000
    D、2.400000



第六周编程作业

1、数字正方型



2、空心字符菱形



3、邮票组合



4、火锅火锅和火锅



第七周:数组(一)

5.2 一维数组的定义和引用随堂测验

1、下面程序的输出结果是____。 #include main( ) { int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf(”%d\n”,k); }
    A、20
    B、21
    C、22
    D、23



5.2 一维数组的定义和引用随堂测验

1、以下程序的功能:输入30个人的年龄,统计18岁、19岁、……、25岁各有多少人。填空,使程序正确。 main( ) { int i,n,age,a[30]=; for(i=0;i<30;i++) { scanf(”%d”,&age); __(1)__; } printf(”age number\n”); for(__(2)__;i++) printf(”%5d %6d\n”,i,a[i]); }
    A、(1)for(n=18;n<25;n++) { if (age==n) a[n]++; } (2)i=18;i<=25
    B、(1)for(n=18;n<=25;n++) { if (age==n) a[n]++; } (2)i=18;i<=25
    C、(1)for(n=18;n<25;n++) { if (age=n) a[n]++; } (2)i=18;i<=25
    D、(1)for(n=18;n<25;n++) { if (age==n) a[n]++; } (2)i=18;i<25



5.2 一维数组的定义和引用随堂测验

1、以下程序的功能: 在给定数组中查找某个数,若找到,则输出该数在数组中的位置,否则输出“can not found!”。填空,使程序正确。 main( ) { int i,n,a[8]={25,21,57,34,12,9,4,44}; scanf(”%d”,&n); for(i=0;i<8;i++) if(n==a[i]) { printf(”The index is %d\n”,i); __(1)__ ; } if(__(2)__) printf(”can not found!\n”); }
    A、(1) end (2) i==8
    B、(1) break (2) i==0
    C、(1) break (2) i==8
    D、(1) end (2) i==0



第七周编程作业

1、组成最大数



2、回文数



3、洗牌



4、子数整除



第八周:数组(二)

5.6 二维数组的输入输出随堂测验

1、以下正确的数组定义语句是____。
    A、int y[2][3] = {1,2,3,4,5,6};
    B、float x[3][ ] = {{1},{2},{3}};
    C、long s[2][3] = {{1},{1,2},{1,2,3}};
    D、double t[ ][3] = ;



2、若有说明: int a[ ][4];则a[i][j]前有____个元素。
    A、j*4+i
    B、i*4+j
    C、i*4+j-1
    D、i*4+j+1



5.7 二维数组的应用‍随堂测验

1、求出如下所示矩阵中各行元素之和,并以矩阵形式输出原矩阵及相应行元素之和。请填空,使程序正确。 #include "stdio.h" int main( ) { int i,j; static int a[3][4]={{3,5,6,0},{2,1,4,0},{8,7,1,0}}; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][3]+= __(1)__; for(i=0;i<3;i++) for( _(2)___ ) { printf(”%3d”,a[i][j]); if( _(3)___ ) printf( __(4)__ );} }



5.8 二维字符数组随堂测验

1、以下程序的输出是 ___。 main( ) {char a[2][5]={”6937”,”8254”}; int i,j,s=0; for ( i = 0; i < 2; i++ ) for ( j = 0; a[i][j]>’0’ && a[i][j]<=’9’; j+=2 ) s=10*s+a[i][j]-’0’; printf(”s=%d\n”,s); }
    A、6385
    B、69825
    C、63825
    D、693825



2、以下程序的功能:输入10个字符串,找出每个字符串的最大字符,并依次存入一维数组中,然后输出该一维数组。请填空使程序正确。 #include ”stdio.h” main( ) { int j,k; char a[10][80],b[10]; for(j=0;j<10;j++) gets(a[i]); for(j=0,j<10;j++) { _(1)___; for(k=1;a[j][k]!=’\0’;k++) if(b[j]



5.9 数组综合应用随堂测验

1、有一名室内装潢工程队的配料员,他很擅长采用“之”字型的方式铺大理石地砖,图案如下: 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 以下是生成这样图形的程序,请帮助补充完整: #include "stdio.h" int main() { int a[10][10],s=0,n,i=1,j=1,t=0; scanf("%d",&n); while (i 1) for(i=1;i<=n;i++) {printf("%2d",a[i-1][0]); for(j=2;j<=n;j++) printf("%3d",a[i-1][j-1]); ___(2)____;} else printf("1\n"); return 0; }



第八周编程作业

1、单词排序



2、寻找矩阵的鞍点



3、身份证的奥秘



4、安全的密码



期中考试

1、判断x是否英文字母的C语言表达式为()。 选择一项:
    A、( 'A' <= x ) & ( x <= 'Z' ) | ( 'a' <= x ) & ( x <= 'z' )
    B、( 'A' <= x ) || ( x <= 'Z') && ( 'a' <= x ) || ( x <= 'z' )
    C、( 'A' <= x ) && ( x <= 'Z' ) || ( 'a' <= x ) && ( x <= 'z' )
    D、( 'A' <= x) | ( x <= 'Z' ) & ( 'a' <= x ) & ( x <= 'z' )



2、二维数组a有3行7列,则在a[2][5]的位置在()。 选择一项:
    A、第2行,第5列
    B、第2行,第6列
    C、第3行,第5列
    D、第3行,第6列



3、下列说法中正确的是()。 选择一项:
    A、scanf函数不能得到空格字符
    B、getchar函数不能得到回车
    C、scanf函数不能得到回车字符
    D、getch不能得到回车字符



4、若变量已正确定义,以下错误的表达式是()。 选择一项:
    A、a+++b++
    B、a%(4.0)
    C、a/=b+c
    D、a=1/2*(x=y=20,x*3)



5、使用语句scanf(“%3f%3d”,&b,&a);输入数据时,输入为:123456(回车),那么正确的一组数据是()。 选择一项:
    A、a=123 b=456
    B、a=123.000000 b=456
    C、a=456 b=123.000000
    D、a=456.000000 a=123



6、若有说明:int a[3][4]; 则对 a 数组元素的非法引用是()。 选择一项:
    A、a[0][2*1]
    B、a[0][4]
    C、a[1][3]
    D、a[4-2][0]



7、以下程序是用选择法对10个整数按升序排序。 #define N 10 int main() { int i,j,k,t,a[N]; for(i=0;i<=N-1;i++) scanf("%d",&a[i]); for(i=0;i     A、a[j] > a[k]
    B、a[j] < a[k]
    C、a[j] = a[k]
    D、a[j] ==a[k]



8、以下程序是用冒泡法对10个整数按升序排序。 #define N 10 int main() { int i,j,k,t,a[N]; for(i=0;i<=N-1;i++) scanf("%d",&a[i]); for(i=0;i     A、a[j] < a[j+1]
    B、a[j] > a[j+1]
    C、a[j] = a[j+1]
    D、a[j] == a[j+1]



9、错误的转义字符是()。 选择一项:
    A、’\\’
    B、’\081’
    C、’\0’
    D、’\t’



10、把字符串“China bit”输入到字符数组a中的正确操作是()。 选择一项:
    A、scanf(“%s”,a)
    B、gets(&a)
    C、scanf(“%s”,&a)
    D、gets(a)



11、已知 int a=4 ,b=5,c=2; 则执行表达式“a||c++;” 后,c的值是()。 选择一项:
    A、2
    B、3
    C、4
    D、5



12、已有定义int i;float f1,f2; 执行scanf(“%2f.%3d.%f”,&f1,&i,&f2)时,输入“12.34.56.78↙”,则i,f1和f2的值应该是() 选择一项:
    A、输入格式有误
    B、f1=12.000000,i=34,f2不确定
    C、f1=12.000000,i=不确定;f2不确定
    D、f1=12.000000,i=34,f2=56.78



13、若有语句:if( )x=3; 想要让在a不等于0时,x=3这个语句得以执行,则括号内能正确表示这一关系的表达式为()。 选择一项:
    A、a<>0
    B、a=0
    C、a
    D、!a



14、字符串”a\324\031ff”的长度是: 选择一项:
    A、5
    B、2
    C、3
    D、6



15、已知 int i=1;char c='A';能表示'B'正确的语句是: 选择一项:
    A、c+1;
    B、c+'1';
    C、'A'+'1'
    D、A+1



16、已知int x; if( 0<=x<=9 )表达式为()。 选择一项:
    A、真
    B、假
    C、不确定
    D、确定,但取决于x的值



17、与s+=++i完全等价的语句是 选择一项:
    A、++i;s=s+i;
    B、s=s+i++;
    C、s=s+i;i++;
    D、s=++i;



18、若已定义char s[2][10];则下面表达式中代表s[1][2]地址的是: 选择一项:
    A、&s[1]+2
    B、&s[0]+1+2
    C、&s[1][1]+1
    D、&s[0][0]+12



19、对字符数组s赋值,不合法的一个是 选择一项:
    A、char s[20]={’B’,’e’,’i’,’j’,’i’,’n’,’g’}
    B、char s[]=”Beijing”
    C、char s[20];s=”Beijing”
    D、char s[20]={”Beijing”}



20、已有定义char c; ,下面正确的赋值语句是 选择一项:
    A、c=”123”
    B、c=’\xab’
    C、c="A"
    D、c=’123’