大学MOOC 2020春C语言程序设计(郭萍)(哈尔滨工业大学)1449953163 最新慕课完整章节测试答案
第二讲 2月27日 星期四
文章目录
- 第二讲 2月27日 星期四
- 第三讲 3月3日 星期二
- 第四讲 3月10日 星期二
- 第五讲 3月12日 星期四
- 第六讲 3月17日 星期二
- 第七讲 3月24日 星期二
- 第八讲 3月26日 星期四
- 第九讲 3月31日 星期二
- 第十讲4月7日星期二
- 第十一讲 4月9日 星期四
- 第十二讲 4月14日 星期二
- 第1周——初识C语言从认识变量和常量开始
- 第2周——数字间的那些事儿,做点计算哈
- 第3周——从键盘中来,到键盘中去,开始输入和输出啦
- 第4周——无处不在的抉择
- 第5周——周而复始的循环之道
- 第6周——函数分工与合作的艺术
- 第7周——《盗梦空间》的逻辑探寻递归的奥秘
- 第8周—— 一堆数据来了,你准备好了吗
- 第9周——指针C语言世界中所向披靡的“金箍棒”
- 第10周——字符串C语言世界中的大力水手
- 第11周——指针的孪生兄弟
- 第12周——海陆空齐上阵又来了一堆数据
- 第13周——原来内存也可以这么玩,我是指针我怕谁
- 第14周——结构设计的艺术
- 第15周——学会保存你的数据
- C语言测试
- 开学了 第一讲 2月25日 星期二
- 结课考试
交通学院 第2讲 随堂测试
1、单选题:
有如下的语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为2,c的值为3,从键盘输入数据的正确形式是
选项:
A: 1,3,2
B: a=1,b=3,c=2
C: 1,2,3
D: a=1,b=2,c=3
答案: 【 a=1,b=2,c=3】
2、填空题:
已知字符B的ACSII码值为66,下面程序的执行结果是:#include<stdio.h>main(){ char ch=’A’; printf(“%c %dn”,ch,ch);}
答案: 【 A 65】
3、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>main(){ char c1 = ‘a’, c2 = ‘b’ , c3 = ‘c’; printf(“a%cb%cc%cn”, c1, c2, c3);}
答案: 【 aabbcc】
4、填空题:
阅读程序,给出程序的执行结果#include <stdio.h>main(){ int a = 12, b = 3; float x = 18.5, y = 4.5; printf(“%fn”, (float)(a * b) / 2); printf(“%dn”, (int)x /(int)y);}
答案: 【 18.000000
4】
5、填空题:
#include <stdio.h>main(){ int a, b; printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d,b=%d,a+b=%dn",a,b,a+b);}当输入123456时,程序的执行结果是:
答案: 【 a=12,b=56,a+b=68】
建筑环境 第2讲 随堂测试
1、单选题:
有如下的语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为2,c的值为3,从键盘输入数据的正确形式是
选项:
A: 32
B: 1,3,2
C: a=1,b=2,c=3
D: a=1,b=3,c=2
答案: 【 a=1,b=2,c=3 】
2、填空题:
已知字符A的ACSII码值为65,下面程序的执行结果是:#include<stdio.h>main(){ char ch=’B’; printf(“%c %dn”,ch,ch);}
答案: 【 B 66】
3、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>main(){ char c1 = ‘a’, c2 = ‘b’ , c3 = ‘c’; printf(“a%cb%cc%cn”, c1, c2, c3);}
答案: 【 aabbcc】
4、填空题:
阅读程序,给出程序的执行结果#include <stdio.h>main(){ int a = 12, b = 3; float x = 18.5, y = 4.5; printf(“%fn”, (float)(a * b) / 2); printf(“%dn”, (int)x /(int)y);}
答案: 【 18.000000
4】
5、填空题:
#include <stdio.h>main(){ int a, b; printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d,b=%d,a+b=%dn",a,b,a+b);}当输入12345a时,程序运行结果是:
答案: 【 a=12,b=5,a+b=17】
第三讲 3月3日 星期二
交通学院 第3讲 随堂测试
1、多选题:
若有定义:int x=0;以下表示真的表达式有:
选项:
A: !x
B: x==0
C: x
D: x=1
答案: 【 !x;
x==0;
x=1】
2、判断题:
若a=3,b=2,c=1,则表达式 a>b>c 的值是假。
选项:
A: 正确
B: 错误
答案: 【 正确】
3、填空题:
阅读程序,给出程序的执行结果:#include <stdio.h>main(){ int n=0; while( n++ < 4 ); printf(〝n=%dn〞,n); printf(〝program over!〞);}
答案: 【 n=5
program over!】
建筑环境 第3讲 随堂测试
1、多选题:
若有定义:int x=1;下面哪些表达式表示真:
选项:
A: x!=0
B: x
C: !x
D: x==1
答案: 【 x!=0;
x;
x==1】
2、判断题:
若a=3,b=2,c=1,则表达式 a>b>c 的值是真。
选项:
A: 正确
B: 错误
答案: 【 错误】
3、填空题:
阅读程序,给出程序的执行结果:#include <stdio.h>main(){ int n=0; while( n++ < 3 ); printf(〝n=%dn〞,n); printf(〝program over!〞);}
答案: 【 n=4
program over!】
第四讲 3月10日 星期二
交通学院 第4讲 随堂测试
1、单选题:
#include <stdio.h>main(){ int k=1;char c='A'; do { switch(c++) { case 'A': k++; break; case 'B': k--; break; case 'C': k+=2; break; case 'D': k=k%2;break; case 'E': k=k*2;break; default: k=k/3; } k++; }while(c<'F'); printf("k=%d",k);}程序执行结果为:
选项:
A: k=1
B: k=15
C: k=12
D: 以上结果都不对
答案: 【 以上结果都不对】
2、单选题:
下列程序段执行后k值为。 int k=0,i,j; for(i=0;i<5;i++) for(j=0;j<3;j++) k=k+1 ;
选项:
A: 15
B: 3
C: 5
D: 8
答案: 【 15】
3、单选题:
设已定义i和k为int类型变量,则以下for循环语句 for(i=0,k=-1; k=1; i++,k++) printf( "* * * *n");
选项:
A: 判断循环结束的条件不合法
B: 是无限循环
C: 循环一次也不执行
D: 循环只执行一次
答案: 【 是无限循环】
4、单选题:
有以下程序 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%dn”,s); } 程序执行后的输出结果是:
选项:
A: 自然数1~9的累加和
B: 自然数1~10的累加和
C: 自然数1~9中的奇数之和
D: 自然数1~10中的偶数之和
答案: 【 自然数1~10中的偶数之和】
5、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>main(){ int i = 0; while( i < 10 ) { if( i++ < 1 ) continue; if( i == 5 ) break; i++; } printf (“%d”, i);}
答案: 【 11】
建筑环境 第4讲 随堂测试
1、单选题:
下列程序段执行后k值为。 int k=0,i,j; for(i=0;i<5;i++) for(j=0;j<3;j++) k=k+1 ;
选项:
A: 15
B: 3
C: 5
D: 8
答案: 【 15】
2、单选题:
设已定义i和k为int类型变量,则以下for循环语句
for(i=0,k=-1; k=1; i++,k++)
printf( "* * * *n");
选项:
A: 判断循环结束的条件不合法
B: 是无限循环
C: 循环一次也不执行
D: 循环只执行一次
答案: 【 是无限循环】
3、单选题:
有以下程序 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%dn”,s); } 程序执行后的输出结果是:
选项:
A: 自然数1~9的累加和
B: 自然数1~10的累加和
C: 自然数1~9中的奇数之和
D: 自然数1~10中的偶数之和
答案: 【 自然数1~10中的偶数之和】
4、单选题:
#include <stdio.h>
main()
{
int k=1;char c='A';
do
{
switch(c++)
{
case 'A': k++; break;
case 'B': k--; break;
case 'C': k+=2; break;
case 'D': k=k%2;break;
case 'E': k=k*2;break;
default: k=k/3;
}
k++;
}while(c<'F');
printf("k=%d",k);
}程序执行结果为:
选项:
A: k=1
B: k=15
C: k=12
D: 以上结果都不对
答案: 【 以上结果都不对】
5、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>main(){ int i = 0; while( i < 10 ) { if( i++ < 1 ) continue; if( i == 5 ) break; i++; } printf (“%d”, i);}
答案: 【 11】
第五讲 3月12日 星期四
交通学院 第5讲 随堂测试
1、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>int main(){ int i, j, m=4; for (i = m; i >= 1; i--) { for (j = 1; j <= 2 * i - 1; j++) { printf("*"); } printf("n"); } return 0;}
答案: 【 *******
*****
***
*】
2、填空题:
以下程序的功能是输出3—20之间的所有素数。阅读程序,将空白处补充完整。#include <stdio.h>#include <math.h> main() { int i, j, k, flag; for (i = 3; i <= 20; i++) { if (i%2!=0) { flag = 1; j = sqrt(i); k = 2; while (k <= j) { if ( ) { flag = 0; break; } k++; } if ( flag ) printf("%dn",i); } } }
答案: 【 i%k==0】
3、填空题:
设有以下程序:
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}程序运行后,如果从键盘上输入1298;则输出结果为:
答案: 【 8921】
4、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>main(){ int k = 4, n; for(n=0; n<k; n++) { if(n%2 == 0) break; k--; } printf("k=%d,n=%d", k, n);}
答案: 【 k=4,n=0】
建筑环境 第5讲 随堂测试
1、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>int main(){ int i, j, m=4; for (i = m; i >= 1; i--) { for (j = 1; j <= 2 * i - 1; j++) { printf("*"); } printf("n"); } return 0;}
答案: 【 *******
*****
***
*】
2、填空题:
以下程序的功能是输出3—20之间的所有素数。阅读程序,将空白处补充完整。#include <stdio.h>#include <math.h>
main()
{
int i, j, k, flag;
for (i = 3; i <= 20; i++) { if (i%2!=0) {
flag = 1;
j = sqrt(i);
k = 2;
while (k <= j)
{
if (_____________)
{
flag = 0;
break;
}
k++;
}
if ( flag ) printf("%dn",i); }
}
}
答案: 【 i%k==0】
3、填空题:
设有以下程序:
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}程序运行后,如果从键盘上输入1298;则输出结果是: 。
答案: 【 8921】
4、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>main(){ int k = 4, n; for(n=0; n<k; n++) { if(n%2 == 0) break; k--; } printf("k=%d,n=%d", k, n);}
答案: 【 k=4,n=0】
第六讲 3月17日 星期二
交通学院 第6讲 随堂测试
1、填空题:
以下程序功能是:判断一个数是否是素数,若不是打印其所有因子;否则打印“没有因子”。请在程序空白处填上适当内容,将程序补充完整。#include <stdio.h>main(){ int i, m, flag=1; printf(“ Please enter a number:”); scanf(“%d”, &m ); for( i = 2; i < m ; i++ ) { if( m%i != 0 ) ; flag=0; printf("%d n", i ); } if( flag ) printf("没有因子n");}
答案: 【 continue】
2、填空题:
以下程序的功能是计算圆的面积。当圆的面积小于等于50时输出圆的面积,大于50时结束循环。PI为符号常量,其值为3.14。请在程序空白处填写适当内容,将程序补充完整。#include<stdio.h>#define PI 3.14main(){ int r; float area; for(r = 1;r <= 10;r++) { area = PI * r * r; if( area > 50.0) __________; printf("面积等于%fn",area); }}
答案: 【 break】
3、填空题:
阅读程序,给出程序的执行结果:#include <stdio.h>void f( void );main(){ int i; for( i = 1; i <= 5; i++ ) { f( ); }}void f( void ){ int j=0; ++j; printf("%dn", j);}
答案: 【 1
1
1
1
1】
4、填空题:
阅读程序,给出程序的执行结果:#include <stdio.h>void count( int n);main(){ int i; for( i = 1; i <= 3; i++ ) count(i);}void count( int n ){ int x = 2; printf("%d:x=%d", n, x); x += 2; printf(" x+2=%dn", x);}
答案: 【 1:x=2 x+2=4
2:x=2 x+2=4
3:x=2 x+2=4】
5、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>void Swap(int x,int y);main(){ int a=12,b=24; Swap(a,b); printf("%d,%d",a,b);}void Swap(int x,int y){ int t; t=x; x=y; y=t;}
答案: 【 12,24】
建筑环境 第6讲 随堂测试
1、填空题:
以下程序功能是:判断一个数是否是素数,若不是打印其所有因子;否则打印“没有因子”。请在程序空白处填上适当内容,将程序补充完整。#include <stdio.h>main(){ int i, m, flag=1; printf(“ Please enter a number:”); scanf(“%d”, &m ); for( i = 2; i < m ; i++ ) { if( m%i != 0 ) ; flag=0; printf("%d n", i ); } if( flag ) printf("没有因子n");}
答案: 【 continue】
2、填空题:
以下程序的功能是计算圆的面积。当圆的面积小于等于50时输出圆的面积,大于50时结束循环。PI为符号常量,其值为3.14。请在程序空白处填写适当内容,将程序补充完整。#include<stdio.h>#define PI 3.14main(){ int r; float area; for(r = 1;r <= 10;r++) { area = PI * r * r; if( area > 50.0) __________; printf("面积等于%fn",area); }}
答案: 【 break】
3、填空题:
阅读程序,给出程序的执行结果:#include <stdio.h>void f( void );main(){ int i; for( i = 1; i <= 5; i++ ) { f( ); }}void f( void ){ int j=0; ++j; printf("%dn", j);}
答案: 【 1
1
1
1
1】
4、填空题:
阅读程序,给出程序的执行结果:#include <stdio.h>void count( int n);main(){ int i; for( i = 1; i <= 3; i++ ) count(i);}void count( int n ){ int x = 2; printf("%d:x=%d", n, x); x += 2; printf(" x+2=%dn", x);}
答案: 【 1:x=2 x+2=4
2:x=2 x+2=4
3:x=2 x+2=4】
5、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>void Swap(int x,int y);main(){ int a=12,b=24; Swap(a,b); printf("%d,%d",a,b);}void Swap(int x,int y){ int t; t=x; x=y; y=t;}
答案: 【 12,24】
第七讲 3月24日 星期二
交通学院 第7讲 随堂测试
1、单选题:
下列说法中错误的是( )。
选项:
A: 函数中的return语句可以有多个,但多个return语句并不表示函数可以用return返回多个值,用return返回的函数值只能有一个
B: 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。
C: 形参也是局部变量,只能在定义它的函数体内访问。
D: 在C语言中,实参与其对应的形参各占独立的存储单元,函数调用时的参数传递就是把实参的值复制一份给形参,即由实参向形参进行单向传值,因此形参值的变化不影响实参的值。
答案: 【 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。】
2、单选题:
以下能正确定义函数的是( )。
选项:
A: int fun(long n){ long a; ... return a; }
B: long fun(int a){ long a; ... return a; }
C: long fun(int n){ long a; ... return a; }
D: long fun(long a){ long a; ... return a; }
答案: 【 long fun(int n){ long a; ... return a; } 】
3、单选题:
对局部变量描述错误的是( )。
选项:
A: 不会自动进行初始化,初值不确定
B: 进入语句块获得内存,退出即释放
C: 会自动进行初始化,初值为0
D: 作用域在语句块内
答案: 【 会自动进行初始化,初值为0】
4、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>int add( int x, int y );main( ){ int a = 6, b = 3, c; c = add ( a, b ); printf ("%d,", c); c = add( a, b ); printf( "%d", c);} int add( int x, int y ){ int i = 2; static int m = 0; i = i + m +1; m = i + x +y; return m;}
答案: 【 12,24】
5、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>int Square(int i);int main(){ int i=0; i=Square(i); for( ; i < 3; i++) { static int i=1; i += Square(i); printf("%d,", i); } printf("%d", i); return 0;}int Square(int i){ return i*i;}
答案: 【 2,6,42,3】
建筑环境 第7讲 随堂测试
1、单选题:
下列说法中错误的是( )。
选项:
A: 函数中的return语句可以有多个,但多个return语句并不表示函数可以用return返回多个值,用return返回的函数值只能有一个
B: 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。
C: 形参也是局部变量,只能在定义它的函数体内访问。
D: 在C语言中,实参与其对应的形参各占独立的存储单元,函数调用时的参数传递就是把实参的值复制一份给形参,即由实参向形参进行单向传值,因此形参值的变化不影响实参的值。
答案: 【 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。】
2、单选题:
以下能正确定义函数的是( )。
选项:
A: int fun(long n){ long a; ... return a; }
B: long fun(int a){ long a; ... return a; }
C: long fun(int n){ long a; ... return a; }
D: long fun(long a){ long a; ... return a; }
答案: 【 long fun(int n){ long a; ... return a; } 】
3、单选题:
对局部变量描述错误的是( )。
选项:
A: 不会自动进行初始化,初值不确定
B: 进入语句块获得内存,退出即释放
C: 会自动进行初始化,初值为0
D: 作用域在语句块内
答案: 【 会自动进行初始化,初值为0】
4、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>int add( int x, int y );main( ){ int a = 6, b = 3, c; c = add ( a, b ); printf ("%d,", c); c = add( a, b ); printf( "%d", c);} int add( int x, int y ){ int i = 2; static int m = 0; i = i + m +1; m = i + x +y; return m;}
答案: 【 12,24】
5、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>int Square(int i);int main(){ int i=0; i=Square(i); for( ; i < 3; i++) { static int i=1; i += Square(i); printf("%d,", i); } printf("%d", i); return 0;}int Square(int i){ return i*i;}
答案: 【 2,6,42,3】
第八讲 3月26日 星期四
交通学院 第8讲 随堂测试
1、单选题:
以下关于数组的描述正确的是( )。
选项:
A: 数组的大小是固定的,但可以有不同的类型的数组元素
B: 数组的大小是可变的,但所有数组元素的类型必须相同
C: 数组的大小是固定的,但所有数组元素的类型必须相同
D: 数组的大小是可变的,但可以有不同的类型的数组元素
答案: 【 数组的大小是固定的,但所有数组元素的类型必须相同】
2、单选题:
下面不能正确对数组进行初始化的语句是( )。
选项:
A: int a[5] = {62, 74, 56, 88, 90, 100};
B: int a[ ] = {62, 74, 56, 88, 90, 100};
C: int a[5] = {62, 74, 0, 0, 0};
D: int a[5] = {62, 74};
答案: 【 int a[5] = {62, 74, 56, 88, 90, 100}; 】
3、单选题:
下面不能正确对数组进行初始化的语句是( )。
选项:
A: int a[ ][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
B: int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
C: int a[ ][4] = {{1,2,3},{4,5},{6}};
D: int a[3][] = {1,2,3,4,5,6,7,8,9};
答案: 【 int a[3][] = {1,2,3,4,5,6,7,8,9}; 】
4、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>main(){ int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); }
答案: 【 852】
5、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>
int main()
{
int b=1, a[10];
int i=9,j=0,sum = 0;
for(i=9;i>=0;i--)
a[i]=10-i;
for(j=0;j<=10;j++)
sum+=a[j];
printf("sum+b=%d",sum+b);
return 0;
}
答案: 【 sum+b=57】
6、填空题:
若有定义:int a[][3]={1,2,3,4,5,6};问元素a[1][0]的值是( )。
答案: 【 4】
建筑环境 第8讲 随堂测试
1、单选题:
以下关于数组的描述正确的是( )。
选项:
A: 数组的大小是固定的,但可以有不同的类型的数组元素
B: 数组的大小是可变的,但所有数组元素的类型必须相同
C: 数组的大小是固定的,但所有数组元素的类型必须相同
D: 数组的大小是可变的,但可以有不同的类型的数组元素
答案: 【 数组的大小是固定的,但所有数组元素的类型必须相同】
2、单选题:
下面不能正确对数组进行初始化的语句是( )。
选项:
A: int a[5] = {62, 74, 56, 88, 90, 100};
B: int a[ ] = {62, 74, 56, 88, 90, 100};
C: int a[5] = {62, 74, 0, 0, 0};
D: int a[5] = {62, 74};
答案: 【 int a[5] = {62, 74, 56, 88, 90, 100}; 】
3、单选题:
下面不能正确对数组进行初始化的语句是( )。
选项:
A: int a[ ][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
B: int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
C: int a[ ][4] = {{1,2,3},{4,5},{6}};
D: int a[3][] = {1,2,3,4,5,6,7,8,9};
答案: 【 int a[3][] = {1,2,3,4,5,6,7,8,9}; 】
4、填空题:
阅读程序,给出程序的执行结果。#include<stdio.h>main(){
int i, a[10];
for(i=9;i>=0;i--)
a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
答案: 【 852】
5、填空题:
阅读程序,给出程序的执行结果。#include <stdio.h>
int main()
{
int b=1, a[10];
int i=9,j=0,sum = 0;
for(i=9;i>=0;i--)
a[i]=10-i;
for(j=0;j<=10;j++)
sum+=a[j];
printf("sum+b=%d",sum+b);
return 0;
}
答案: 【 sum+b=57】
6、填空题:
若有定义:int a[][3]={1,2,3,4,5,6};问元素a[1][0]的值是( )。
答案: 【 4】
第九讲 3月31日 星期二
交通学院 第9讲 随堂测试
1、单选题:
下列说法错误的是()。
选项:
A: 简单变量做函数参数时,是将实参的值传给形参,实参和形参在内存中占用不同的存储单元,因此形参值的改变不会影响实参。
B: 数组名做函数参数时,是将实参数组的首地址传给形参,形参数组和实参数组在内存中共享相同的存储单元,因此对形参数组元素值的修改也就相当于是对实参数组元素值的修改。
C: 在声明函数的二维数组形参时,可省略数组第二维的长度,但不能省略数组第一维的长度。
D: 在声明函数的一维数组形参时,通常不指定数组的大小,而用另一个形参来指定数组的大小。
答案: 【 在声明函数的二维数组形参时,可省略数组第二维的长度,但不能省略数组第一维的长度。】
2、单选题:
下列说法错误的是()。
选项:
A: C语言中的二维数组在内存中是按列存储的。
B: 在C语言中,数组的下标都是从0开始的。
C: 在C语言中,不带下标的数组名代表数组的首地址,即第一个元素在内存中的地址。
D: 不能使用变量定义数组的大小,但是在访问数组元素时在下标中可以使用变量或表达式。
答案: 【 C语言中的二维数组在内存中是按列存储的。】
3、单选题:
下列说法正确的是( )。
选项:
A: 数组名做函数参数时,修改形参数组元素值会导致实参数组元素值的修改。
B: 在声明函数的二维数组形参时,通常不指定数组的大小,而用另外的形参来指定数组的大小。
C: 在声明函数的二维数组形参时,可省略数组第二维的长度,但不能省略数组第一维的长度。
D: 数组名做函数参数时,是将数组中所有元素的值赋值给形参。
答案: 【 数组名做函数参数时,修改形参数组元素值会导致实参数组元素值的修改。】
4、单选题:
以下对字符数组str初始化不等价的是( )。
选项:
A: char str[ ]="hello";
B: char str[ ]={'h','e','l','l','o',''};
C: char str[ ]={'h','e','l','l','o',0};
D: char str[ ]={'h','e','l','l','o'};
答案: 【 char str[ ]={'h','e','l','l','o'};】
5、填空题:
#include<stdio.h>void sub(int s[],int y);main(){ int a[]={1,2,3,4},i,x=0; for(i=0; i<4;i++) { sub(a,x); printf("%d",x); }}void sub(int s[],int y){ static int t=3; y=s[t]; t--;}
答案: 【 0000】
建筑环境 第9讲 随堂测试
1、单选题:
下列说法错误的是()。
选项:
A: 简单变量做函数参数时,是将实参的值传给形参,实参和形参在内存中占用不同的存储单元,因此形参值的改变不会影响实参。
B: 数组名做函数参数时,是将实参数组的首地址传给形参,形参数组和实参数组在内存中共享相同的存储单元,因此对形参数组元素值的修改也就相当于是对实参数组元素值的修改。
C: 在声明函数的二维数组形参时,可省略数组第二维的长度,但不能省略数组第一维的长度。
D: 在声明函数的一维数组形参时,通常不指定数组的大小,而用另一个形参来指定数组的大小。
答案: 【 在声明函数的二维数组形参时,可省略数组第二维的长度,但不能省略数组第一维的长度。】
2、单选题:
下列说法错误的是()。
选项:
A: C语言中的二维数组在内存中是按列存储的。
B: 在C语言中,数组的下标都是从0开始的。
C: 在C语言中,不带下标的数组名代表数组的首地址,即第一个元素在内存中的地址。
D: 不能使用变量定义数组的大小,但是在访问数组元素时在下标中可以使用变量或表达式。
答案: 【 C语言中的二维数组在内存中是按列存储的。】
3、单选题:
下列说法正确的是( )。
选项:
A: 数组名做函数参数时,修改形参数组元素值会导致实参数组元素值的修改。
B: 在声明函数的二维数组形参时,通常不指定数组的大小,而用另外的形参来指定数组的大小。
C: 在声明函数的二维数组形参时,可省略数组第二维的长度,但不能省略数组第一维的长度。
D: 数组名做函数参数时,是将数组中所有元素的值赋值给形参。
答案: 【 数组名做函数参数时,修改形参数组元素值会导致实参数组元素值的修改。】
4、单选题:
以下对字符数组str初始化不等价的是( )。
选项:
A: char str[ ]="hello";
B: char str[ ]={'h','e','l','l','o',''};
C: char str[ ]={'h','e','l','l','o',0};
D: char str[ ]={'h','e','l','l','o'};
答案: 【 char str[ ]={'h','e','l','l','o'};】
5、填空题:
#include<stdio.h>void sub(int s[],int y);main(){ int a[]={1,2,3,4},i,x=0; for(i=0; i<4;i++) { sub(a,x); printf("%d",x); }}void sub(int s[],int y){ static int t=3; y=s[t]; t--;}
答案: 【 0000】
第十讲4月7日星期二
交通学院 第10讲 随堂测试
1、单选题:
若有定义:int a=511,*b=&a;, 则执行printf("%d",*b);输出结果为( )。
选项:
A: 无确定值
B: a的地址
C: 512
D: 511
答案: 【 511】
2、单选题:
若有以下定义和语句:double r=99,*p=&r; *p=r;则以下叙述正确的是( )。
选项:
A: 以上两处的*p含义相同,都说明给指针变量p赋值
B: 在“double r=99,*p=&r;”中,把r的地址赋值赋给指针变量p
C: 语句“*p=r;”把变量r的地址值赋给指针变量p
D: 语句“*p=r;”取变量r的值赋给指针变量p
答案: 【 在“double r=99,*p=&r;”中,把r的地址赋值赋给指针变量p】
3、单选题:
若有定义:int m=5,n,*p;则能正确给n赋值的程序段有( )。
选项:
A: p=&m; scanf(“%d”,&p);
B: scanf(“%d”,p);
C: p=&n;scanf(“%d”,*p);
D: p=&n;scanf(“%d”,p);
答案: 【 p=&n;scanf(“%d”,p); 】
4、单选题:
若有定义:int m=5,*p;则能正确打印输出m值的程序段有( )。
选项:
A: p=&m; printf(“%d”,p);
B: printf(“%d”,p);
C: printf(“%d”,*p);
D: p=&m; printf(“%d”,*p);
答案: 【 p=&m; printf(“%d”,*p); 】
5、判断题:
若有:int a,*p;且p=&a;则一定有:*p<=>a;只是两者读取内存数据的寻址方式不同。
选项:
A: 正确
B: 错误
答案: 【 正确】
6、填空题:
以下程序用于实现a,b两数互换。阅读程序,请在程序空白处将程序补充完整。#include <stdio.h>void Swap(int *x,int *y);main(){ int a, b; a = 15; b = 8; Swap( ); printf("a=%d,b=%d",a,b);}void Swap(int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp;}
答案: 【 &a,&b】
7、填空题:
阅读程序填空。以下程序用于实现字符串链接,请在程序空白处将程序补充完整。#include <stdio.h>void MyStrcpy(char *p, char *q);main(){ char a[80], b[80]; printf("Please enter a:"); gets(a); printf("Please enter b:"); gets(b); MyStrcpy(alb); printf("连接后的新字符串:"); puts(a);}void MyStrcpy(char *p, char *q){ while(*p!='') { p++; } for( ;*q!='';p++,q++) { *p=*q; } ( );}
答案: 【 *p=''】
建筑环境 第10讲 随堂测试
1、单选题:
若有定义:int a=511,*b=&a;, 则执行printf("%d",*b);输出结果为( )。
选项:
A: 无确定值
B: a的地址
C: 512
D: 511
答案: 【 511】
2、单选题:
若有以下定义和语句:double r=99,*p=&r; *p=r;则以下叙述正确的是( )。
选项:
A: 以上两处的*p含义相同,都说明给指针变量p赋值
B: 在“double r=99,*p=&r;”中,把r的地址赋值赋给指针变量p
C: 语句“*p=r;”把变量r的地址值赋给指针变量p
D: 语句“*p=r;”取变量r的值赋给指针变量p
答案: 【 在“double r=99,*p=&r;”中,把r的地址赋值赋给指针变量p】
3、单选题:
若有定义:int m=5,n,*p;则能正确给n赋值的程序段有( )。
选项:
A: p=&m; scanf(“%d”,&p);
B: scanf(“%d”,p);
C: p=&n;scanf(“%d”,*p);
D: p=&n;scanf(“%d”,p);
答案: 【 p=&n;scanf(“%d”,p); 】
4、单选题:
若有定义:int m=5,*p;则能正确打印输出m值的程序段有( )。
选项:
A: p=&m; printf(“%d”,p);
B: printf(“%d”,p);
C: printf(“%d”,*p);
D: p=&m; printf(“%d”,*p);
答案: 【 p=&m; printf(“%d”,*p); 】
5、判断题:
若有:int a,*p;且p=&a;则一定有:*p<=>a;只是两者读取内存数据的寻址方式不同。
选项:
A: 正确
B: 错误
答案: 【 正确】
6、填空题:
以下程序用于实现a,b两数互换。阅读程序,请在程序空白处将程序补充完整。#include <stdio.h>void Swap(int *x,int *y);main(){ int a, b; a = 15; b = 8; Swap( ); printf("a=%d,b=%d",a,b);}void Swap(int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp;}
答案: 【 &a,&b】
7、填空题:
阅读程序填空。以下程序用于实现字符串链接,请在程序空白处将程序补充完整。#include <stdio.h>void MyStrcpy(char *p, char *q);main(){ char a[80], b[80]; printf("Please enter a:"); gets(a); printf("Please enter b:"); gets(b); MyStrcpy(alb); printf("连接后的新字符串:"); puts(a);}void MyStrcpy(char *p, char *q){ while(*p!='') { p++; } for( ;*q!='';p++,q++) { *p=*q; } ( );}
答案: 【 *p=''】
第十一讲 4月9日 星期四
交通学院 第11讲 随堂测试
1、单选题:
若定义: int a[3][4], *p; 则以下不能对指针p进行初始化的是( )。
选项:
A: p=*a;
B: p=a[0];
C: p=a;
D: p=&a[0][0];
答案: 【 p=a; 】
2、单选题:
若定义 int a[3][4]; int (*p)[4]; 以下可对行指针p进行初始化的是( )。
选项:
A: p=*a;
B: p=a[0];
C: p=a;
D: p=&a[0][0];
答案: 【 p=a; 】
3、填空题:
若有定义:int a[3][4]];数组名a是哪个元素的地址?a[0]又是哪个元素的地址?(答案请用英文输入法下空格作为分隔符)
答案: 【 a[0] a[0][0]】
4、填空题:
以下程序是用来计算最高分及最高分学号。请在程序空白处填上适当内容将程序补充完整。(所填内容用英文输入法下的逗号做分隔符)#include <stdio.h>void Findmax(float *pScore,long *pNum,int n,float *pMaxScore, long *pMaxNum ); main(){ float score[40], Maxscore; long num[40], Maxnum; int n , i; scanf(“%d”, &n ); for( i =0 ; i < n ; i ++ ) scanf(“%ld%f”, &num[i], &score[i] ); Findmax( ); printf(“Maxnum=%ld, Maxscore=%f“, Maxnum , Maxscore);}void FindMax(float *pScore,long *pNum,int n,float *pMaxScore, long *pMaxNum){ int i; *pMaxScore = *pScore; *pMaxNum = pNum[0]; for(i=1; i<n; i++) { if ( *(pScore+i)> *pMaxScore ) { *pMaxScore = *(pScore+i); *pMaxNum = pNum[i]; } } }
答案: 【 score,num,n,&Maxscore,&Maxnum】
建筑环境 第11讲 随堂测试
1、单选题:
若定义:
int a[3][4], *p;
则以下不能对指针p进行初始化的是( )。
选项:
A: p=*a;
B: p=a[0];
C: p=a;
D: p=&a[0][0];
答案: 【 p=a; 】
2、单选题:
若定义
int a[3][4];
int (*p)[4];
以下可对行指针p进行初始化的是( )。
选项:
A: p=*a;
B: p=a[0];
C: p=a;
D: p=&a[0][0];
答案: 【 p=a; 】
3、填空题:
若有定义:int a[3][4]];数组名a是哪个元素的地址?a[0]又是哪个元素的地址?(答案请用英文输入法下空格作为分隔符)
答案: 【 a[0] a[0][0]】
4、填空题:
以下程序是用来计算最高分及最高分学号。请在程序空白处填上适当内容将程序补充完整。(所填内容用英文输入法下的逗号做分隔符)#include <stdio.h>void Findmax(float *pScore,long *pNum,int n,float *pMaxScore, long *pMaxNum ); main(){ float score[40], Maxscore; long num[40], Maxnum; int n , i; scanf(“%d”, &n ); for( i =0 ; i < n ; i ++ ) scanf(“%ld%f”, &num[i], &score[i] ); Findmax( ); printf(“Maxnum=%ld, Maxscore=%f“, Maxnum , Maxscore);}void FindMax(float *pScore,long *pNum,int n,float *pMaxScore, long *pMaxNum){ int i; *pMaxScore = *pScore; *pMaxNum = pNum[0]; for(i=1; i<n; i++) { if ( *(pScore+i)> *pMaxScore ) { *pMaxScore = *(pScore+i); *pMaxNum = pNum[i]; } } }
答案: 【 score,num,n,&Maxscore,&Maxnum】
第十二讲 4月14日 星期二
交通学院 第12讲 随堂测试
1、单选题:
有如下定义:struct person { char name[9]; int age;};struct person class[10]={ " Johu",17,"Paul",19,"Mary",18,"Adam",16};根据上述定义,能输出字母M的语句是( )。
选项:
A: prinft (" %cn",class[3].name);
B: printf (" %cn",class[3].name[1]);
C: prinft (" %cn",class[2].name[1]);
D: printf (" %cn",class[2].name[0]);
答案: 【 printf (" %cn",class[2].name[0]); 】
2、单选题:
有如下定义:struct student{
long studentID;
char studentName[10];
int score[4];
}stu1;struct student *pstu1= &stu1;那么通过结构体变量stu1和结构体指针变量pstu1访问成员变量studentID的方法分别是()。
选项:
A: stu1.studentID,pstu1.studentID
B: stu1.studentID,pstu1->studentID
C: stu1->studentID,pstu1.studentID
D: stu1->studentID,pstu1->studentID
答案: 【 stu1.studentID,pstu1->studentID】
3、单选题:
有如下定义:struct person { char name[9]; int age;};struct person class[10]={ " Johu",17,"Paul",19,"Mary",18,"Adam",16};struct person *p=class;请选择能正确打印字符"Mary"的语句( )。
选项:
A: printf("%s",&p+2->name);
B: printf("%s",&p+1->name);
C: printf("%s",p+2->name);
D: printf("%s",p+2.name);
答案: 【 printf("%s",p+2->name);】
4、填空题:
以下程序用来计算任意个学生三门课的平均分并按平均分由高到低排序并打印输出。其中函数Input用来读取m个学生的信息,Total1函数用来计算总分和平均分,Sort函数按平均分由高到低排序,Print函数打印排序后的名次、学号、姓名、各科成绩及总分和平均分。请在主函数空白处填写适当内容将程序补充完整(分隔符请用英文输入法下的逗号顶格填写不要有多余的空格,每一空白处占用一行填写后请换行)。#include <stdio.h>#include <stdlib.h>struct student { long num; char name[20]; int Eng; int Com; int Mth;};void Input( struct student *p, int n);void Total1(struct student *p, int *psum, float *pave, int n);void Sort(struct student *p, int *psum, float *pave, int n);void Print(struct student *p, int *psum, float *pave, int n);main(){ struct student *p=NULL; int *psum=NULL; float *pave=NULL; int m; printf("请输入班级实际人数:n"); scanf("%d",&m); p = ( struct student * )malloc( m*sizeof ( struct student )); psum = ( int * )malloc( m*sizeof ( int )); pave = ( float * )malloc( m*sizeof( float )); if( p ==NULL || psum == NULL || pave == NULL ) exit(0); Input( ); Total1( ); Sort( ); Print( ); }void Input( struct student *p, int n) { int i; for(i=0;i<n;i++) { scanf("%ld%s%d%d%d", &(p+i)->num, (p+i)->name,&(p+i)->Eng, &(p+i)->Com, &(p+i)->Mth ); }}void Total1(struct student *p,int *psum, float *pave,int n){ int i; for( i = 0; I < n; i++ ) { psum[i] = 0; psum[i] = psum[i] + p[i].Eng+p[i].Com + p[i].Mth; pave[i] =( float )psum[i]/3; }}void Sort( struct student *p, int *psum, float *pave, int n){ int i,j,iterm; float fterm; struct student pterm; for ( i = 0; i < n-1; i++ ) { for ( j = i+1; j < n; j++ ) { if ( pave[i] < pave[j] ) { iterm = psum[i]; psum[i] = psum[j]; psum[j] = iterm; fterm = pave[i]; pave[i] = pave[j]; pave[j] = fterm; pterm = p[i]; p[i] = p[j]; p[j] = pterm; } } }}void Print( struct student *p, int *psum, float *pave, int n){ int i; printf("名次t%学号t姓名t英语t计算机t数学t总分t平均分n"); for ( i = 0; i < n; i++ ) { printf("%dt%ldt%st%dt%dt%dt%dt%.0fn",i+1, (p+i)->num, (p+i)->name, (p+i)->Eng, (p+i)->Com,(p+i)->Mth, psum[i], pave[i] ); } }
答案: 【 p,m
p,psum,pave,m
p,psum,pave,m
p,psum,pave,m】
建筑环境 第12讲 随堂测试
1、单选题:
有如下定义:struct person { char name[9]; int age;};struct person class[10]={ " Johu",17,"Paul",19,"Mary",18,"Adam",16};根据上述定义,能输出字母M的语句是( )。
选项:
A: prinft (" %cn",class[3].name);
B: printf (" %cn",class[3].name[1]);
C: prinft (" %cn",class[2].name[1]);
D: printf (" %cn",class[2].name[0]);
答案: 【 printf (" %cn",class[2].name[0]); 】
2、单选题:
有如下定义:struct student{
long studentID;
char studentName[10];
int score[4];
}stu1;struct student *pstu1= &stu1;那么通过结构体变量stu1和结构体指针变量pstu1访问成员变量studentID的方法分别是()。
选项:
A: stu1.studentID,pstu1.studentID
B: stu1.studentID,pstu1->studentID
C: stu1->studentID,pstu1.studentID
D: stu1->studentID,pstu1->studentID
答案: 【 stu1.studentID,pstu1->studentID】
3、单选题:
有如下定义:struct person { char name[9]; int age;};struct person class[10]={ " Johu",17,"Paul",19,"Mary",18,"Adam",16};struct person *p=class;请选择能正确打印字符"Mary"的语句( )。
选项:
A: printf("%s",&p+2->name);
B: printf("%s",&p+1->name);
C: printf("%s",p+2->name);
D: printf("%s",p+2.name);
答案: 【 printf("%s",p+2->name);】
4、填空题:
以下程序用来计算任意个学生三门课的平均分并按平均分由高到低排序并打印输出。其中函数Input用来读取m个学生的信息,Total1函数用来计算总分和平均分,Sort函数按平均分由高到低排序,Print函数打印排序后的名次、学号、姓名、各科成绩及总分和平均分。请在主函数空白处填写适当内容将程序补充完整(分隔符请用英文输入法下的逗号顶格填写不要有多余的空格,每一空白处占用一行填写后请换行)。#include <stdio.h>#include <stdlib.h>struct student { long num; char name[20]; int Eng; int Com; int Mth;};void Input( struct student *p, int n);void Total1(struct student *p, int *psum, float *pave, int n);void Sort(struct student *p, int *psum, float *pave, int n);void Print(struct student *p, int *psum, float *pave, int n);main(){ struct student *p=NULL; int *psum=NULL; float *pave=NULL; int m; printf("请输入班级实际人数:n"); scanf("%d",&m); p = ( struct student * )malloc( m*sizeof ( struct student )); psum = ( int * )malloc( m*sizeof ( int )); pave = ( float * )malloc( m*sizeof( float )); if( p ==NULL || psum == NULL || pave == NULL ) exit(0); Input( ); Total1( ); Sort( ); Print( ); }void Input( struct student *p, int n) { int i; for(i=0;i<n;i++) { scanf("%ld%s%d%d%d", &(p+i)->num, (p+i)->name,&(p+i)->Eng, &(p+i)->Com, &(p+i)->Mth ); }}void Total1(struct student *p,int *psum, float *pave,int n){ int i; for( i = 0; I < n; i++ ) { psum[i] = 0; psum[i] = psum[i] + p[i].Eng+p[i].Com + p[i].Mth; pave[i] =( float )psum[i]/3; }}void Sort( struct student *p, int *psum, float *pave, int n){ int i,j,iterm; float fterm; struct student pterm; for ( i = 0; i < n-1; i++ ) { for ( j = i+1; j < n; j++ ) { if ( pave[i] < pave[j] ) { iterm = psum[i]; psum[i] = psum[j]; psum[j] = iterm; fterm = pave[i]; pave[i] = pave[j]; pave[j] = fterm; pterm = p[i]; p[i] = p[j]; p[j] = pterm; } } }}void Print( struct student *p, int *psum, float *pave, int n){ int i; printf("名次t%学号t姓名t英语t计算机t数学t总分t平均分n"); for ( i = 0; i < n; i++ ) { printf("%dt%ldt%st%dt%dt%dt%dt%.0fn",i+1, (p+i)->num, (p+i)->name, (p+i)->Eng, (p+i)->Com,(p+i)->Mth, psum[i], pave[i] ); } }
答案: 【 p,m
p,psum,pave,m
p,psum,pave,m
p,psum,pave,m】
第1周——初识C语言从认识变量和常量开始
codeblocks介绍——从Hello World开始
1、单选题:
#include <stdio.h>是
选项:
A: 编译预处理指令
B: 语句
C: 函数
D: 程序入口
答案: 【 编译预处理指令】
debug
1、单选题:
codeblocks中运行到下一步(next line)的快捷键是
选项:
A: F7
B: F5
C: F8
D: F11
答案: 【 F7】
变量在内存中所占的字节数
1、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A: 函数
B: 运算符
C: 标识符
D: 语句
答案: 【 运算符】
宏常量与const常量
1、单选题:
宏定义是()
选项:
A: 一条语句
B: 一种编译预处理指令
C: 一个标识符
D: 一个变量
答案: 【 一种编译预处理指令】
2、判断题:
const常量有数据类型。
选项:
A: 正确
B: 错误
答案: 【 正确】
第1周测验
1、单选题:
下列选项中,合法的C语言标识符是
选项:
A: _a1
B: width.x
C: #abc123
D: 123abc
E: o*k
F: a?
G: a+b
H: %a
I: b!
答案: 【 _a1】
2、单选题:
以下不适合定义为用户标识符的是
选项:
A: int
B: a2
C: def2
D: _3com_
E: PI
F: Source
G: abc
答案: 【 int 】
3、单选题:
#include <stdio.h>是
选项:
A: 编译预处理指令
B: 语句
C: 函数
D: 什么都不是
E: 有语法错误
答案: 【 编译预处理指令】
4、单选题:
在windows下,程序编译链接后形成的可执行文件是
选项:
A: .obj文件
B: .exe文件
C: .o文件
D: .c文件
E: .h文件
答案: 【 .exe文件】
5、单选题:
程序编译链接后显示" 0 error,0 warning" 代表
选项:
A: 程序中没有语法错误
B: 程序是正确的
C: 程序是不正确的
D: 程序中可能存在语法错误
E: 程序中有语义错误
答案: 【 程序中没有语法错误】
6、单选题:
用8位无符号二进制数能表示的最大十进制数为
选项:
A: 255
B: 127
C: 128
D: 256
答案: 【 255】
7、单选题:
关于可执行文件说法正确的是
选项:
A: 可执行文件是编译链接后生成的文件
B: 可执行文件就是源代码文件
C: 可执行文件后缀为.obj
D: 可执行文件就是main.c文件
答案: 【 可执行文件是编译链接后生成的文件】
8、单选题:
若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是
选项:
A: 'A'+1.6的结果是浮点型
B: a的值还是整型
C: a的值是字符C
D: a的值是浮点型
E: 不允许字符型和浮点型相加
答案: 【 'A'+1.6的结果是浮点型;
a的值还是整型】
9、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A: 运算符
B: 一元运算符
C: 只需要一个操作数的运算符
D: 函数
E: 语句
F: 标识符
G: 变量
答案: 【 运算符;
一元运算符;
只需要一个操作数的运算符】
10、单选题:
以下不属于Codeblocks中用于调试程序的工具是
选项:
A: run
B: build
C: run to cursor
D: next line
E: stop debugger
F: watches
答案: 【 run;
build】
11、单选题:
程序的开发步骤中不包括
选项:
A: 撰写文档
B: 运行程序
C: 编译链接
D: 程序测试
E: 编辑(编写代码)
答案: 【 撰写文档】
12、单选题:
下列说法中错误的是()
选项:
A: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B: 内存是按位编址的。
C: 有符号和无符号整数的表数范围是相同的。
D: int型在所有的计算机上都占4个字节的存储单元。
E: 编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F: 内存是按字节编址的。
G: 对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H: sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 【 尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。】
13、单选题:
若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
选项:
A: 1
B: 1.4
C: 2.0
D: 2
答案: 【 1】
14、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
15、单选题:
以下符合C语言语法的实型常量是
选项:
A: 5e-3
B: 3.14.159e
C: 1.2e0.5
D: e15
答案: 【 5e-3】
16、单选题:
以下选项中可作为C语言合法整数的是
选项:
A: 0xffa
B: 10110B
C: 038x
D: x2a2
答案: 【 0xffa】
17、单选题:
下列说法正确的是
选项:
A: 在C语言中,变量必须先定义后使用。
B: 一条变量定义语句可定义多个同类型的变量。
C: C89规定所有变量必须在第一条可执行语句前定义。
D: const常量只能在定义时赋值。
E: 实型常量的默认类型是double类型。
F: 一条变量定义语句不可以同时定义多个变量。
G: 不同类型的变量分配的存储空间大小都是相同的。
H: 在C语言中,所有变量都必须在定义时进行初始化。
I: 变量在没有初始化的时候,其值都是0
J: 宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【 在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。】
18、单选题:
下列变量定义中合法的是
选项:
A: long ao=0xfdaL;
B: short _a=1-.1e-1;
C: double b=1+5e2.5;
D: float 2_and=1-e-3;
答案: 【 long ao=0xfdaL;】
练兵区——单选题——不计入总分
1、单选题:
下列选项中,合法的C语言标识符是
选项:
A: _a1
B: width
C: #abc123
D: 123abc
E: o*k
F: a?
G: a+b
H: %a
I: b!
答案: 【 _a1;
width】
2、单选题:
以下不适合定义为用户标识符的是
选项:
A: float
B: main
C: define
D: _3com_
E: PI
F: Source
G: abc
答案: 【 float ;
main;
define】
3、单选题:
#include <stdio.h>是
选项:
A: 编译预处理指令
B: 语句
C: 函数
D: 什么都不是
E: 有语法错误
答案: 【 编译预处理指令】
4、单选题:
在windows下,程序编译链接后形成的可执行文件是
选项:
A: .obj文件
B: .exe文件
C: .o文件
D: .c文件
E: .h文件
答案: 【 .exe文件】
5、单选题:
程序编译链接后显示" 0 error,0 warning" 代表
选项:
A: 程序中没有语法错误
B: 程序是正确的
C: 程序是不正确的
D: 程序中可能存在语法错误
E: 程序中有语义错误
答案: 【 程序中没有语法错误】
6、单选题:
用8位无符号二进制数能表示的最大十进制数为
选项:
A: 255
B: 127
C: 128
D: 256
答案: 【 255】
7、单选题:
关于可执行文件说法正确的是
选项:
A: 可执行文件是编译链接后生成的文件
B: 可执行文件就是源代码文件
C: 可执行文件后缀为.obj
D: 可执行文件就是main.c文件
答案: 【 可执行文件是编译链接后生成的文件】
8、单选题:
若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是
选项:
A: 'A'+1.6的结果是浮点型
B: a的值还是整型
C: a的值是字符C
D: a的值是浮点型
E: 不允许字符型和浮点型相加
答案: 【 'A'+1.6的结果是浮点型;
a的值还是整型】
9、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A: 运算符
B: 一元运算符
C: 只需要一个操作数的运算符
D: 函数
E: 语句
F: 标识符
G: 变量
答案: 【 运算符;
一元运算符;
只需要一个操作数的运算符】
10、单选题:
以下不属于Codeblocks中用于调试程序的工具是
选项:
A: run
B: build
C: run to cursor
D: next line
E: stop debugger
F: watches
答案: 【 run;
build】
11、单选题:
程序的开发步骤中不包括
选项:
A: 撰写文档
B: 运行程序
C: 编译链接
D: 程序测试
E: 编辑(编写代码)
答案: 【 撰写文档】
12、单选题:
下列说法中错误的是()
选项:
A: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B: 内存是按位编址的。
C: 有符号和无符号整数的表数范围是相同的。
D: int型在所有的计算机上都占4个字节的存储单元。
E: 编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F: 内存是按字节编址的。
G: 对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H: sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 【 尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。】
13、单选题:
若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
选项:
A: 1
B: 1.4
C: 2.0
D: 2
答案: 【 1】
14、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
15、单选题:
以下符合C语言语法的实型常量是
选项:
A: 5e-3
B: 3.14.159e
C: 1.2e0.5
D: e15
答案: 【 5e-3】
16、单选题:
以下选项中可作为C语言合法整数的是
选项:
A: 0xffa
B: 10110B
C: 038x
D: x2a2
答案: 【 0xffa】
17、单选题:
下列说法正确的是
选项:
A: 在C语言中,变量必须先定义后使用。
B: 一条变量定义语句可定义多个同类型的变量。
C: C89规定所有变量必须在第一条可执行语句前定义。
D: const常量只能在定义时赋值。
E: 实型常量的默认类型是double类型。
F: 一条变量定义语句不可以同时定义多个变量。
G: 不同类型的变量分配的存储空间大小都是相同的。
H: 在C语言中,所有变量都必须在定义时进行初始化。
I: 变量在没有初始化的时候,其值都是0
J: 宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【 在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。】
18、单选题:
下列变量定义中合法的是
选项:
A: long ao=0xfdaL;
B: short _a=1-.1e-1;
C: double b=1+5e2.5;
D: float 2_and=1-e-3;
答案: 【 long ao=0xfdaL;】
第2周——数字间的那些事儿,做点计算哈
不同类型数据的运算
1、判断题:
通常情况下,不同类型数据的运算结果的类型是取值范围较大的那种类型。
选项:
A: 正确
B: 错误
答案: 【 正确】
在定义变量的时候对变量进行初始化
1、单选题:
下列语句中错误的是()。
选项:
A: int a, b, c;a=b=c=0;
B: int a, b, c;a=0;b=0;c=0;
C: int a=0;int b=0;int c=0;
D: int a=b=c=0;
答案: 【 int a=b=c=0;】
强制类型转换
1、判断题:
强制类型转换运算符就是强制改变一个变量原有的数据类型。
选项:
A: 正确
B: 错误
答案: 【 错误】
第2周测验
1、单选题:
下列程序的输出结果是#include <stdio.h>
int main()
{
int a=7,b=5;
printf("%dn",b/a);
return 0;
}
选项:
A: 0
B: 5
C: 1
D: 0.7
答案: 【 0】
2、单选题:
下列关于单目运算符++、--的叙述中正确的是
选项:
A: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B: ++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C: a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D: a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【 a++的运算过程是:先使用变量a的值,然后再执行a=a+1。】
3、单选题:
以下程序的输出结果是:#include <stdio.h>
int main()
{
int a=1, b=2;
a=a+b;
b=a-b;
a=a-b;
printf("%d,%dn", a, b );
return 0;
}
选项:
A: 2,1
B: 3,1
C: 3,2
D: 1,2
答案: 【 2,1】
4、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int m=3,n=4,x;
x=m++;
++n;
x=x+8/n;
printf("%d,%dn",x,m);
return 0;
}
选项:
A: 4,4
B: 4,3
C: 5,4
D: 5,3
答案: 【 4,4】
5、单选题:
下面程序的运行结果是#include <stdio.h>
int main()
{
int a = 2, b = 3 ;
float x = 3.5, y = 2.5 ;
printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
return 0;
}
选项:
A: 3.500000
B: 3.000000
C: 3.5
D: 3
答案: 【 3.500000】
6、单选题:
以下非法的赋值语句是
选项:
A: ++(i+1);
B: x=(j--);
C: n=++i;
D: j++;
答案: 【 ++(i+1);】
7、单选题:
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A: 6.000000
B: 6.500000
C: 6
D: 5.500000
答案: 【 6.000000】
8、单选题:
以下程序的运行结果是#include <stdio.h>
int main()
{
int a = 12, b = 3;
float x = 18.5, y = 4.5;
printf("%fn", (float)(a * b) / 2);
printf("%dn", (int)x %(int)y);
return 0;
}
选项:
A: 18.0000002
B: 182
C: 182.000000
D: 18.0000002.000000
答案: 【 18.0000002】
9、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A: -12
B: 3
C: 0
D: 9
答案: 【 -12】
10、单选题:
在C语言中,要求操作数必须是整型的运算符是
选项:
A: %
B: /
C: *
D: +
E: -
答案: 【 %】
11、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
char a='a';
printf("%c,",++a);
printf("%cn",a++);
return 0;
}
选项:
A: b,b
B: b,c
C: a,b
D: a,c
答案: 【 b,b】
12、单选题:
下面哪条语句可以生成0-9之间的随机数
选项:
A: magic=rand()%10;
B: magic=rand()%10+1;
C: magic=rand()/10;
D: magic=rand()/10+1;
答案: 【 magic=rand()%10;】
13、单选题:
在下面的C语言语句中,存在错误的是
选项:
A: int a=b=10;
B: int a=10,b=10;
C: int a,b;a=b=10;
D: int a,b;a=10;b=10;
答案: 【 int a=b=10;】
14、单选题:
若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A: x3=x2=x1=0;
B: x1=26.8%3;
C: 1+2=x2;
D: x4=1+2=3;
答案: 【 x3=x2=x1=0; 】
15、单选题:
若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
char a;
int b;
float c;
double d;
....
return 0;
}
选项:
A: double
B: int
C: float
D: char
答案: 【 double】
16、单选题:
在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A: #include <math.h>
B: #include <stdio.h>
C: #define <math.h>
D: #define <stdio.h>
答案: 【 #include <math.h>】
17、单选题:
十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A: d=(x-(x/100)*100)/10;
B: d=(x%100)/10;
C: d=(x/10)%10;
D: d=x%10;
E: d=(x-x%10)/10;
F: d=x%100;
答案: 【 d=(x-(x/100)*100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】
18、单选题:
在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A: 变量a和b中的值都是0
B: 变量a和b中都没有数值
C: 变量a和b中的值都是未知的随机数
D: a和b都是整型变量
E: 变量a和b占用的内存空间的大小是相同的
答案: 【 变量a和b中的值都是0;
变量a和b中都没有数值】
19、单选题:
已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是( )。
选项:
A: 2和1
B: 0和1.67
C: 3和1
D: 5和1
E: 0和1
F: 3和1.67
G: 5和1.67
答案: 【 2和1】
20、单选题:
设有以下定义,则下面给出的语句中错误的是int a=0;
float b=1.25;
char c='A';
#define d 2
选项:
A: d++;
B: (a+b)++;
C: (-a)++;
D: (a+1)++;
E: a++;
F: b++;
G: c++;
答案: 【 d++;;
(a+b)++;;
(-a)++;;
(a+1)++;】
练兵区——单选题——不计入总分
1、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A: -12
B: 3
C: 0
D: 9
答案: 【 -12】
2、单选题:
在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A: #include <math.h>
B: #include <stdio.h>
C: #define <math.h>
D: #define <stdio.h>
答案: 【 #include <math.h>】
3、单选题:
设有以下定义,则下面给出的语句中错误的是int a=0;
float b=1.25;
char c='A';
#define d 2
选项:
A: d++;
B: (a+b)++;
C: (-a)++;
D: (a+1)++;
E: a++;
F: b++;
G: c++;
答案: 【 d++;;
(a+b)++;;
(-a)++;;
(a+1)++;】
4、单选题:
下列关于单目运算符++、--的叙述中正确的是
选项:
A: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B: ++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C: a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D: a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【 a++的运算过程是:先使用变量a的值,然后再执行a=a+1。】
5、单选题:
以下程序的输出结果是:#include <stdio.h>
int main()
{
int a=1, b=2;
a=a+b;
b=a-b;
a=a-b;
printf("%d,%dn", a, b );
return 0;
}
选项:
A: 2,1
B: 3,1
C: 3,2
D: 1,2
答案: 【 2,1】
6、单选题:
下面哪条语句可以生成0-9之间的随机数
选项:
A: magic=rand()%10;
B: magic=rand()%10+1;
C: magic=rand()/10;
D: magic=rand()/10+1;
答案: 【 magic=rand()%10;】
7、单选题:
在下面的C语言语句中,存在错误的是
选项:
A: int a=b=10;
B: int a=10,b=10;
C: int a,b;a=b=10;
D: int a,b;a=10;b=10;
答案: 【 int a=b=10;】
8、单选题:
若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
char a;
int b;
float c;
double d;
....
return 0;
}
选项:
A: double
B: int
C: float
D: char
答案: 【 double】
9、单选题:
十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A: d=(x-(x/100)*100)/10;
B: d=(x%100)/10;
C: d=(x/10)%10;
D: d=x%10;
E: d=(x-x%10)/10;
F: d=x%100;
答案: 【 d=(x-(x/100)*100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】
10、单选题:
在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A: 变量a和b中的值都是0
B: 变量a和b中都没有数值
C: 变量a和b中的值都是未知的随机数
D: a和b都是整型变量
E: 变量a和b占用的内存空间的大小是相同的
答案: 【 变量a和b中的值都是0;
变量a和b中都没有数值】
11、单选题:
下列程序的输出结果是#include <stdio.h>
int main()
{
int a=7,b=5;
printf("%dn",b/a);
return 0;
}
选项:
A: 0
B: 5
C: 1
D: 0.7
答案: 【 0】
12、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int m=3,n=4,x;
x=m++;
++n;
x=x+8/n;
printf("%d,%dn",x,m);
return 0;
}
选项:
A: 4,4
B: 4,3
C: 5,4
D: 5,3
答案: 【 4,4】
13、单选题:
下面程序的运行结果是#include <stdio.h>
int main()
{
int a = 2, b = 3 ;
float x = 3.5, y = 2.5 ;
printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
return 0;
}
选项:
A: 3.500000
B: 3.000000
C: 3.5
D: 3
答案: 【 3.500000】
14、单选题:
以下非法的赋值语句是
选项:
A: ++(i+1);
B: x=(j--);
C: n=++i;
D: j++;
答案: 【 ++(i+1);】
15、单选题:
已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是
选项:
A: 2和1
B: 0和1.67
C: 3和1
D: 5和1
E: 0和1
F: 3和1.67
G: 5和1.67
答案: 【 2和1】
16、单选题:
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A: 6.000000
B: 6.500000
C: 6
D: 5.500000
答案: 【 6.000000】
17、单选题:
以下程序的运行结果是#include <stdio.h>
int main()
{
int a = 12, b = 3;
float x = 18.5, y = 4.5;
printf("%fn", (float)(a * b) / 2);
printf("%dn", (int)x %(int)y);
return 0;
}
选项:
A: 18.0000002
B: 182
C: 182.000000
D: 18.0000002.000000
答案: 【 18.0000002】
18、单选题:
在C语言中,要求操作数必须是整型的运算符是
选项:
A: %
B: /
C: *
D: +
E: -
答案: 【 %】
19、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
char a='a';
printf("%c,",++a);
printf("%cn",a++);
return 0;
}
选项:
A: b,b
B: b,c
C: a,b
D: a,c
答案: 【 b,b】
20、单选题:
若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A: x3=x2=x1=0;
B: x1=26.8%3;
C: 1+2=x2;
D: x4=1+2=3;
答案: 【 x3=x2=x1=0; 】
运算符的优先级和结合性
1、判断题:
二元的算术运算符的结合性都是左结合。
选项:
A: 正确
B: 错误
答案: 【 正确】
第3周——从键盘中来,到键盘中去,开始输入和输出啦
%c格式转换说明
1、判断题:
用c格式符输入字符型数据的时候,为了避免将输入缓冲区中的空白字符(空格、回车换行符、Tab键)作为有效字符读入,可以在%c前面加一个空格。
选项:
A: 正确
B: 错误
答案: 【 正确】
单个字符的输入输出
1、判断题:
单个字符既可以以c格式符也可以以d格式符输出,前者是输出这个字符,后者是输出这个字符的ASCII码值。
选项:
A: 正确
B: 错误
答案: 【 正确】
格式字符
1、判断题:
在调用printf函数输出数据时,当数据的实际位宽大于printf函数中的指定位宽时,将按照数据的实际位宽输出数据。
选项:
A: 正确
B: 错误
答案: 【 正确】
第3周测验
1、单选题:
分析下列程序,写出程序运行结果#include <stdio.h>
int main()
{
char c1 = 'a', c2 = 'b', c3 = 'c';
printf("a%cb%cc%cabcn", c1, c2, c3);
return 0;
}
选项:
A: aabbccabc
B: acbcabc
C: aabcabc
D: acbbcabc
答案: 【 aabbccabc】
2、单选题:
有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b);
选项:
A: a=1,b=2
B: 1 2
C: 1,2
D: a=1 b=2
答案: 【 a=1,b=2】
3、单选题:
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%c%c%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%cn",a,b,c,d);
return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A: 6,5,A,B
B: 6,5,65,66
C: 6,5,6,5
D: 6,5,6,6
答案: 【 6,5,A,B】
4、单选题:
给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{
int a,b,s;
scanf("%2d%2d",&a,&b);
s=a/b;
printf("s=%d",s);
return 0;
}
选项:
A: 1
B: 1.6875
C: 2
D: 0
答案: 【 1】
5、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
float a = 1234.567,b = 55.32;
printf("a = %4.2f, b = %5.1fn", a,b);
return 0;
}
选项:
A: a = 1234.57, b = 55.3
B: a =1234, b =55
C: a = 1234.6, b = 5.32
D: a =1234.567, b = 55.32
答案: 【 a = 1234.57, b = 55.3】
6、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
int a=2, c=5;
printf("a = %%d, b = %%dn", a, c);
return 0;
}
选项:
A: a = %d, b = %d
B: a = %2, b = %5
C: a = 2, b = 5
D: a = %%d, b = %%d
答案: 【 a = %d, b = %d】
7、单选题:
有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=ch+32;
printf("%c",ch);
return 0;
}
选项:
A: b
B: 98
C: 32
D: 66
答案: 【 b】
8、单选题:
在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。】
9、单选题:
设有语句“char c='72';”,则变量c
选项:
A: 包含1个字符
B: 包含2个字符
C: 包含3个字符
D: 不合法
答案: 【 包含1个字符】
10、单选题:
在下列语句中存在错误的是
选项:
A: int a,b;scanf("%d %f",&a,&b);
B: int a,b;scanf("%d %d",a,b);
C: int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);
D: float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E: float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F: float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G: int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H: int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I: int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【 int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);】
11、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=666,b=888;
printf("%dn",a,b);
return 0;
}
选项:
A: 666
B: 错误信息
C: 888
D: 666,888
答案: 【 666】
12、单选题:
有以下语句段#include <stdio.h>
int main()
{
int n1=10,n2=20;
printf("_________",n1,n2);
return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A: n1=%dnn2=%d
B: n1=%dn2=%dn
C: n1=%d,n2=%d
D: n1=%d n2=%dn
答案: 【 n1=%dnn2=%d】
13、单选题:
以下选项中合法的字符常量是
选项:
A: '10'
B: "B"
C: 68
D: D
答案: 【 '10'】
14、单选题:
写出下面程序的输出结果#include<stdio.h>
int main()
{
int x=6,y,z;
x*=18+1;
printf("%d,",x--);
x+=y=z=11;
printf("%d",x);
return 0;
}
选项:
A: 114,124
B: 113,124
C: 109,116
D: 110,116
答案: 【 114,124】
15、单选题:
给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{
int a,b,sum;
scanf("%d%*c%d",&a,&b);
sum=a+b;
printf("sum=%d",sum);
return 0;
}
选项:
A: 57
B: 输出报错
C: 33
D: 输出一个随机数
答案: 【 57】
16、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,s;
char op;
scanf("%d %c%d",&a,&op,&b);
s=a%b;
printf("s=%d",s);
return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A: 0
B: 程序报错
C: 输出一个随机数
D: 3
答案: 【 0】
17、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,c,d;
char op1,op2,op3;
int sum;
printf("please input:a+b+c+dn");
scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
sum=a+b+c+d;
printf("sum=%d",sum);
return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A: 7
B: 1
C: 3
D: 6
答案: 【 7】
18、单选题:
在C语言中,字符型数据在内存中以( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
19、单选题:
以下程序的执行结果是#include <stdio.h>
int main()
{
int a = 5, b = 4, x, y;
x = 2 * a++;
y = --b * 2;
printf("a=%d, x=%dn", a, x);
printf("b=%d, y=%dn", b, y);
return 0;
}
选项:
A: a=6, x=10b=3, y=6
B: a=6, x=10b=3, y=8
C: a=6, x=12b=3, y=6
D: 以上均不对
答案: 【 a=6, x=10b=3, y=6】
20、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a;
int c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf("%d,%d,%3.1f,%3.1fn",a,c,f,x);
return 0;
}
选项:
A: 1,65,1.5,6.5
B: 1,65,1,6.5
C: 1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【 1,65,1.5,6.5】
21、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
char a,b;
int s;
printf("please input a and b:n");
a=getchar();
b=getchar();
s=a+b;
printf("a=%c,b=%c",a,b);
return 0;
}程序运行时从键盘输入:1<空格>2<回车>
选项:
A: a=1,b=
B: a=1,b=2
C: a= ,b=2
D: 输出乱码
答案: 【 a=1,b=】
22、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a=1234;
printf("%2dn",a);
return 0;
}
选项:
A: 1234
B: 12
C: 34
D: 提示出错、无结果
答案: 【 1234】
练兵区——单选题——不计入总分
1、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
float a = 1234.567,b = 55.32;
printf("a = %4.2f, b = %5.1fn", a,b);
return 0;
}
选项:
A: a = 1234.57, b = 55.3
B: a =1234, b =55
C: a = 1234.6, b = 5.32
D: a =1234.567, b = 55.32
答案: 【 a = 1234.57, b = 55.3】
2、单选题:
以下选项中合法的字符常量是
选项:
A: '10'
B: "B"
C: 68
D: D
答案: 【 '10'】
3、单选题:
给出程序的运行结果程序运行时从键盘输入:1<空格>2<回车>#include <stdio.h>
int main()
{
char a,b;
int s;
printf("please input a and b:n");
a=getchar();
b=getchar();
s=a+b;
printf("a=%c,b=%c",a,b);
return 0;
}
选项:
A: a=1,b=
B: a=1,b=2
C: a= ,b=2
D: 输出乱码
答案: 【 a=1,b=】
4、单选题:
有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b)
选项:
A: a=1,b=2
B: 1 2
C: 1,2
D: a=1 b=2
答案: 【 a=1,b=2】
5、单选题:
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%c%c%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%cn",a,b,c,d);
return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A: 6,5,A,B
B: 6,5,65,66
C: 6,5,6,5
D: 6,5,6,6
答案: 【 6,5,A,B】
6、单选题:
给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{
int a,b,s;
scanf("%2d%2d",&a,&b);
s=a/b;
printf("s=%d",s);
return 0;
}
选项:
A: 1
B: 1.6875
C: 2
D: 0
答案: 【 1】
7、单选题:
在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。】
8、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=666,b=888;
printf("%dn",a,b);
return 0;
}
选项:
A: 666
B: 错误信息
C: 888
D: 666,888
答案: 【 666】
9、单选题:
在C语言中,字符型数据在内存中以( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
10、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a;
int c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf("%d,%d,%3.1f,%3.1fn",a,c,f,x);
return 0;
}
选项:
A: 1,65,1.5,6.5
B: 1,65,1,6.5
C: 1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【 1,65,1.5,6.5】
11、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a=1234;
printf("%2dn",a);
return 0;
}
选项:
A: 1234
B: 12
C: 34
D: 提示出错、无结果
答案: 【 1234】
12、单选题:
设有语句“char c='72';”,则变量c
选项:
A: 包含1个字符
B: 包含2个字符
C: 包含3个字符
D: 不合法
答案: 【 包含1个字符】
13、单选题:
有以下语句段#include <stdio.h>
int main()
{
int n1=10,n2=20;
printf("_________",n1,n2);
return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A: n1=%dnn2=%d
B: n1=%dn2=%dn
C: n1=%d,n2=%d
D: n1=%d n2=%dn
答案: 【 n1=%dnn2=%d】
14、单选题:
给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{
int a,b,sum;
scanf("%d%*c%d",&a,&b);
sum=a+b;
printf("sum=%d",sum);
return 0;
}
选项:
A: 57
B: 输出报错
C: 33
D: 输出一个随机数
答案: 【 57】
15、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,s;
char op;
scanf("%d %c%d",&a,&op,&b);
s=a%b;
printf("s=%d",s);
return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A: 0
B: 程序报错
C: 输出一个随机数
D: 3
答案: 【 0】
16、单选题:
分析下列程序,写出程序运行结果#include <stdio.h>
int main()
{
char c1 = 'a', c2 = 'b', c3 = 'c';
printf("a%cb%cc%cabcn", c1, c2, c3);
return 0;
}
选项:
A: aabbccabc
B: acbcabc
C: aabcabc
D: acbbcabc
答案: 【 aabbccabc】
17、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
int a=2, c=5;
printf("a = %%d, b = %%dn", a, c);
return 0;
}
选项:
A: a = %d, b = %d
B: a = %2, b = %5
C: a = 2, b = 5
D: a = %%d, b = %%d
答案: 【 a = %d, b = %d】
18、单选题:
有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=ch+32;
printf("%c",ch);
return 0;
}
选项:
A: b
B: 98
C: 32
D: 66
答案: 【 b】
19、单选题:
在下列语句中存在错误的是
选项:
A: int a,b;scanf("%d %f",&a,&b);
B: int a,b;scanf("%d %d",a,b);
C: int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);
D: float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E: float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F: float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G: int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H: int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I: int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【 int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);】
20、单选题:
写出下面程序的输出结果#include<stdio.h>
int main()
{
int x=6,y,z;
x*=18+1;
printf("%d,",x--);
x+=y=z=11;
printf("%d",x);
return 0;
}
选项:
A: 114,124
B: 113,124
C: 109,116
D: 110,116
答案: 【 114,124】
21、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,c,d;
char op1,op2,op3;
int sum;
printf("please input:a+b+c+dn");
scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
sum=a+b+c+d;
printf("sum=%d",sum);
return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A: 7
B: 1
C: 3
D: 6
答案: 【 7】
22、单选题:
以下程序的执行结果是#include <stdio.h>
int main()
{
int a = 5, b = 4, x, y;
x = 2 * a++;
y = --b * 2;
printf("a=%d, x=%dn", a, x);
printf("b=%d, y=%dn", b, y);
return 0;
}
选项:
A: a=6, x=10b=3, y=6
B: a=6, x=10b=3, y=8
C: a=6, x=12b=3, y=6
D: 以上均不对
答案: 【 a=6, x=10b=3, y=6】
第4周——无处不在的抉择
判断ch是英文字母(大写或者小写)
1、判断题:
下面判断ch是大写或者小写英文字母的表达式是否正确?ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z'
选项:
A: 正确
B: 错误
答案: 【 正确】
条件运算符
1、单选题:
下列关于if-else语句的说法中哪个是正确的。
选项:
A: else总是和离它最近的if配对
B: else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对
C: else总是和前面离它最近的且位于花括号内的if配对
D: else可以和它前面的尚未与其他else匹配的任何一个if配对
答案: 【 else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对】
2、判断题:
条件运算符是C语言中唯一的一个三元运算符.
选项:
A: 正确
B: 错误
答案: 【 正确】
浮点数的表数精度
1、单选题:
下列说法错误的是()。
选项:
A: 浮点数并非真正意义上的实数,只是其在某种范围内的近似。
B: 浮点数能精确表示的数字位数取决于这种类型的浮点数的有效数字位数。
C: 使用更多的位来存储阶码,将会扩大浮点数的表数精度。
D: 受浮点数表数精度的限制,因此对于浮点数不能直接比较其是否相等,应该比较其是否近似相等。
答案: 【 使用更多的位来存储阶码,将会扩大浮点数的表数精度。】
程序测试
1、单选题:
下列说法错误的是()。
选项:
A: 软件测试的目的就是证明程序的正确性,即给定特定的输入,通过运行被测程序,检查程序的输出是否与预期结果一致,进而验证程序的正确性。
B: 白盒测试就是在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作。黑盒测试就是把系统看成一个黑盒子,不考虑程序内部的逻辑结构和处理过程,只根据需求规格说明书的要求,设计测试用例,检查程序的功能是否符合它的功能说明。
C: 在选择测试用例时,不仅要选取合理的输入数据,还要选取一些不合理的输入数据,以及某些极端的边界点或临界点等,对程序进行测试
D: 由于修复了旧的bug的同时,往往又会产生新的bug,因此往往还需要对所有出现过的bug重新测试一遍,看其是否会重新出现,并给确认代码修改后没有引入新的bug,即修改代码后需要进行回归测试。
答案: 【 软件测试的目的就是证明程序的正确性,即给定特定的输入,通过运行被测程序,检查程序的输出是否与预期结果一致,进而验证程序的正确性。】
第4周测验
1、单选题:
程序代码如下:#include <stdio.h>
int main()
{
int a,b;
printf("please input a and b:n");
scanf("%d%d",&a,&b);
printf("the output data is %dn",a<b?b:a);
return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
选项:
A: the output data is 7
B: the output data is 2
C: the output data is 1
D: the output data is 0
答案: 【 the output data is 7】
2、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{ int a,b,c;
a=10;
b=20;
c=(a%b<1)||(a/b>1);
printf("%d,%d,%d",a%b,a/b,c);
return 0;
}
选项:
A: 10,0,0
B: 10,1,0
C: 10,0,1
D: 10,1,1
答案: 【 10,0,0】
3、单选题:
从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。
![]()
程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c;
float s, area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c && b+c>a && a+c>b)
{
s = 1/2 * (a + b + c);
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area=%.2fn", area);
}
else
{
printf("It is not a trianglen");
}
return 0;
}
选项:
A: 第11行: s = 1/2 * (a + b + c);
B: 第9行: if (a+b>c && b+c>a && a+c>b)
C: 第12行: area = sqrt(s * (s - a) * (s - b) * (s - c));
D: 第8行: scanf("%f,%f,%f",&a,&b,&c);
答案: 【 第11行: s = 1/2 * (a + b + c); 】
4、单选题:
编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为: 加(+) 减(-) 乘(*) 除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
float data1, data2;
char op;
printf("Please enter the expression:");
scanf("%f %c%f", &data1, &op, &data2); /* %c前有一个空格 */
switch (op)
{
case '+':
printf("%f + %f = %fn", data1, data2, data1 + data2);
break;
case '-':
printf("%f - %f = %fn", data1, data2, data1 - data2);
break;
case '*':
printf("%f * %f = %fn", data1, data2, data1 * data2);
break;
case '/':
printf("%f/%f = %fn", data1, data2,data1/data2);
break;
default:
printf("Invalid operator!n");
}
return 0;
}
选项:
A: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
B: default分支缺少break语句
C: 没有错误
D: 第20行语句有错误,改成:if (data2=0) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);
答案: 【 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6】
5、单选题:
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A: (x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C: x-y>-10 && x-y<10
D: (x-y)*(x-y)<100
答案: 【 (x-y)<-10||!(y-x)>10】
6、单选题:
下列复合语句中,不能实现两数交换的是
选项:
A: {
a=b;
b=a;
}
B: {
b = a * b;
a = b / a;
b = b / a;
}
C: {
t=a;
a=b;
b=t;
}
D: {
a = a + b;
b = a – b;
a = a – b;
}
答案: 【 {
a=b;
b=a;
}】
7、单选题:
写出下面程序的输出结果#include <stdio.h>
int main()
{
int x=1, y=0, a=0, b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;
case 1: b++;
}
case 2: a++;
b++;
}
printf("a=%d, b=%dn", a, b) ;
return 0;
}
选项:
A: a=2, b=2
B: a=2, b=1
C: a=1, b=1
D: a=1, b=0
答案: 【 a=2, b=2】
8、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%dn",d);
return 0;
}
选项:
A: 0
B: 1
C: 5
D: 4
E: 3
答案: 【 0】
9、单选题:
执行以下程序后的输出结果为#include <stdio.h>
int main()
{
int a=1,b=0;
switch (a)
{
case 1:
switch (b)
{
case 0: printf("**0**");break;
case 1: printf("**1**");break;
}
case 2: printf("**2**");break;
}
return 0;
}
选项:
A: **0****2**
B: **0**
C: **0****1****2**
D: 有语法错误
答案: 【 **0****2**】
10、单选题:
下面程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
{
if(b>c)
{
printf("%d",d++ +1);
}
else
{
printf("%d",++d +1);
}
}
printf("%dn",d);
return 0;
}
选项:
A: 2
B: 3
C: 43
D: 44
答案: 【 2】
11、单选题:
下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
int m;
printf("Input m: ");
scanf("%d", &m); //输入一个整数
if (m > 0) //是否为正数
{
if (m % 2 == 0) //是正数,且能被2整除,则是正偶数
{
printf("%d is a positive evenn", m);
}
else //不能被2整除,则是正奇数
{
printf("%d is a positive oddn", m);
}
}
_______________ //判断是否为负数
{
_______________
{
printf("%d is a negative evenn", m); //是负偶数
}
else
{
printf("%d is a negative oddn", m); //是负奇数
}
}
else
{
printf("%d is zero.It is an evenn", m);
}
return 0;
}
选项:
A: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B: 第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C: 第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D: 第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)】
12、单选题:
程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h>
int main()
{
char c;
printf("Please input a character:");
scanf("%c",&c);
if(c >='A'&&c <= 'Z')
c =_______________;
printf("%cn",c);
return 0;
}
选项:
A: c+32
B: c+48
C: C+65
D: C+97
答案: 【 c+32 】
13、单选题:
执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1: printf("%d",k++);
case 2: printf("%d",k++);
case 3: printf("%d",k++);
break;
default: printf("Full!");
}
return 0;
}
选项:
A: 123
B: 1
C: 2
D: 3
答案: 【 123】
14、单选题:
编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。

程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。
#include <stdio.h>
#include <math.h>
int main()
{
int x;
double y;
printf("Input x: ");
scanf("%d", &x); // 输入一个整数
if (x > 0)
{
y = exp(-x); //如果大于0,计算y=exp(-x)的值
}
_____________
{
y = 1; //x=0,则y=1
}
else
{
y = -exp(x); //x<0,则y=-exp(x)
}
printf("y=%fn", y);
return 0;
}
选项:
A: else if (x == 0)
B: else if (x = 0)
C: if (x == 0)
D: if (x = 0)
答案: 【 else if (x == 0)】
15、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%dn",k,m);
return 0;
}
选项:
A: 1,0
B: 0,0
C: 0,1
D: 1,1
答案: 【 1,0】
16、单选题:
以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。
![]()
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1e-6
int main()
{
float a, b, c, disc, p, q;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
_________________________________ /* a=0时,输出"不是二次方程" */
{
printf("It is not a quadratic equation!n");
exit(0); /* C标准库函数,用于终止整个程序的执行,强制返回操作系统 */
}
disc = b * b - 4 * a * c; /* 计算判别式 */
p = - b / (2 * a);
q = sqrt(fabs(disc)) / (2 * a);
if (fabs(disc) <= EPS) /* 判别式等于0时,输出两相等实根 */
{
printf("x1 = x2 = %.2fn", p);
}
else
{
if (disc > EPS) /* 判别式大于0时,输出两不等实根 */
{
printf("x1 = %.2f, x2 = %.2fn", p+q, p-q);
}
else /* 判别式小于0时,输出两共轭复根 */
{
printf("x1 = %.2f+%.2fi, ", p, q);
printf("x2 = %.2f-%.2fin", p, q);
}
}
return 0;
}
选项:
A: if (fabs(a) <= EPS)
B: if (a <= EPS)
C: if (a=0)
D: if (a<= EPS || a>=-EPS)
答案: 【 if (fabs(a) <= EPS)】
17、单选题:
下列说法错误的是()。
选项:
A: case后的“常量表达式”的类型只能是整型。
B: 若case后面的语句省略不写,则表示它什么也不做。
C: switch语句中的break和default可有可无。
D: 每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E: 程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F: 若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G: 每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H: case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【 case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。】
练兵区——单选题——不计入总分
1、单选题:
下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
int m;
printf("Input m: ");
scanf("%d", &m); //输入一个整数
if (m > 0) //是否为正数
{
if (m % 2 == 0) //是正数,且能被2整除,则是正偶数
{
printf("%d is a positive evenn", m);
}
else //不能被2整除,则是正奇数
{
printf("%d is a positive oddn", m);
}
}
_______________ //判断是否为负数
{
_______________
{
printf("%d is a negative evenn", m); //是负偶数
}
else
{
printf("%d is a negative oddn", m); //是负奇数
}
}
else
{
printf("%d is zero.It is an evenn", m);
}
return 0;
}
选项:
A: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B: 第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C: 第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D: 第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)】
2、单选题:
执行以下程序后的输出结果为#include <stdio.h>
int main()
{
int a=1,b=0;
switch (a)
{
case 1:
switch (b)
{
case 0: printf("**0**");break;
case 1: printf("**1**");break;
}
case 2: printf("**2**");break;
}
return 0;
}
选项:
A: **0****2**
B: **0**
C: **0****1****2**
D: 有语法错误
答案: 【 **0****2**】
3、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%dn",k,m);
return 0;
}
选项:
A: 1,0
B: 0,0
C: 0,1
D: 1,1
答案: 【 1,0】
4、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a,b,c;
a=10;
b=20;
c=(a%b<1)||(a/b>1);
printf("%d,%d,%d",a%b,a/b,c);
return 0;
}
选项:
A: 10,0,0
B: 10,1,0
C: 10,0,1
D: 10,1,1
答案: 【 10,0,0】
5、单选题:
编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为: 加(+) 减(-) 乘(*) 除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
float data1, data2;
char op;
printf("Please enter the expression:");
scanf("%f %c%f", &data1, &op, &data2); /* %c前有一个空格 */
switch (op)
{
case '+':
printf("%f + %f = %fn", data1, data2, data1 + data2);
break;
case '-':
printf("%f - %f = %fn", data1, data2, data1 - data2);
break;
case '*':
printf("%f * %f = %fn", data1, data2, data1 * data2);
break;
case '/':
printf("%f/%f = %fn", data1, data2,data1/data2);
break;
default:
printf("Invalid operator!n");
}
return 0;
}
选项:
A: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
B: default分支缺少break语句
C: 没有错误
D: 第20行语句有错误,改成:if (data2=0) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);
答案: 【 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6】
6、单选题:
下列复合语句中,不能实现两数交换的是
选项:
A: {
a=b;
b=a;
}
B: {
b = a * b;
a = b / a;
b = b / a;
}
C: {
t=a;
a=b;
b=t;
}
D: {
a = a + b;
b = a – b;
a = a – b;
}
答案: 【 {
a=b;
b=a;
}】
7、单选题:
写出下面程序的输出结果#include <stdio.h>
int main()
{
int x=1, y=0, a=0, b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;
case 1: b++;
}
case 2: a++;
b++;
}
printf("a=%d, b=%dn", a, b) ;
return 0;
}
选项:
A: a=2, b=2
B: a=2, b=1
C: a=1, b=1
D: a=1, b=0
答案: 【 a=2, b=2】
8、单选题:
执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1: printf("%d",k++);
case 2: printf("%d",k++);
case 3: printf("%d",k++);
break;
default: printf("Full!");
}
return 0;
}
选项:
A: 123
B: 1
C: 2
D: 3
答案: 【 123】
9、单选题:
编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。

程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。
#include <stdio.h>选项:
#include <math.h>
int main()
{
int x;
double y;
printf("Input x: ");
scanf("%d", &x); // 输入一个整数
if (x > 0)
{
y = exp(-x); //如果大于0,计算y=exp(-x)的值
}
_____________
{
y = 1; //x=0,则y=1
}
else
{
y = -exp(x); //x<0,则y=-exp(x)
}
printf("y=%fn", y);
return 0;
}
A: else if (x == 0)
B: else if (x = 0)
C: if (x == 0)
D: if (x = 0)
答案: 【 else if (x == 0)】
10、单选题:
以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。

#include <stdio.h>选项:
#include <stdlib.h>
#include <math.h>
#define EPS 1e-6
int main()
{
float a, b, c, disc, p, q;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
_________________________________ /* a=0时,输出"不是二次方程" */
{
printf("It is not a quadratic equation!n");
exit(0); /* C标准库函数,用于终止整个程序的执行,强制返回操作系统 */
}
disc = b * b - 4 * a * c; /* 计算判别式 */
p = - b / (2 * a);
q = sqrt(fabs(disc)) / (2 * a);
if (fabs(disc) <= EPS) /* 判别式等于0时,输出两相等实根 */
{
printf("x1 = x2 = %.2fn", p);
}
else
{
if (disc > EPS) /* 判别式大于0时,输出两不等实根 */
{
printf("x1 = %.2f, x2 = %.2fn", p+q, p-q);
}
else /* 判别式小于0时,输出两共轭复根 */
{
printf("x1 = %.2f+%.2fi, ", p, q);
printf("x2 = %.2f-%.2fin", p, q);
}
}
return 0;
}
A: if (fabs(a) <= EPS)
B: if (a <= EPS)
C: if (a=0)
D: if (a<= EPS || a>=-EPS)
答案: 【 if (fabs(a) <= EPS)】
11、单选题:
从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。

程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。
#include <stdio.h>选项:
#include <math.h>
int main()
{
float a, b, c;
float s, area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c && b+c>a && a+c>b)
{
s = 1/2 * (a + b + c);
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area=%.2fn", area);
}
else
{
printf("It is not a trianglen");
}
return 0;
}
A: 第11行: s = 1/2 * (a + b + c);
B: 第9行: if (a+b>c && b+c>a && a+c>b)
C: 第12行: area = sqrt(s * (s - a) * (s - b) * (s - c));
D: 第8行: scanf("%f,%f,%f",&a,&b,&c);
答案: 【 第11行: s = 1/2 * (a + b + c); 】
12、单选题:
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A: (x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C: x-y>-10 && x-y<10
D: (x-y)*(x-y)<100
答案: 【 (x-y)<-10||!(y-x)>10】
13、单选题:
程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h>
int main()
{
char c;
printf("Please input a character:");
scanf("%c",&c);
if(c >='A'&&c <= 'Z')
c =_______________;
printf("%cn",c);
return 0;
}
选项:
A: c+32
B: c+48
C: c+65
D: c+97
答案: 【 c+32】
14、单选题:
程序代码如下:#include <stdio.h>
int main()
{
int a,b;
printf("please input a and b:n");
scanf("%d%d",&a,&b);
printf("the output data is %dn",a<b?b:a);
return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
选项:
A: the output data is 7
B: the output data is 2
C: the output data is 1
D: the output data is 0
答案: 【 the output data is 7】
15、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%dn",d);
return 0;
}
选项:
A: 0
B: 1
C: 5
D: 4
E: 3
答案: 【 0】
16、单选题:
下面程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
{
if(b>c)
{
printf("%d",d++ +1);
}
else
{
printf("%d",++d +1);
}
}
printf("%dn",d);
return 0;
}
选项:
A: 2
B: 3
C: 43
D: 44
答案: 【 2】
17、单选题:
下列说法错误的是()。
选项:
A: case后的“常量表达式”的类型只能是整型。
B: 若case后面的语句省略不写,则表示它什么也不做。
C: switch语句中的break和default可有可无。
D: 每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E: 程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F: 若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G: 每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H: case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【 case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。】
赋值中的自动类型转换
1、单选题:
在赋值操作中,当赋值表达式左侧的变量的类型与右侧的表达式的类型不一致的时候,下面说法正确的是()。
选项:
A: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,会发生自动类型转换,赋值表达式的结果类型是赋值运算符左侧变量的类型。
B: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,赋值表达式的结果类型是赋值运算符右侧表达式的类型。
C: 在赋值操作中,只要赋值运算符左侧的变量的类型与右侧的表达式的类型不一致,就会发生数值溢出。
D: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,要么发生数值溢出,要么发生数值精度的损失。
答案: 【 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,会发生自动类型转换,赋值表达式的结果类型是赋值运算符左侧变量的类型。】
第5周——周而复始的循环之道
嵌套循环
1、单选题:
下列说法错误的是( )。
选项:
A: 执行嵌套循环时是先执行内层循环,后执行外层循环。
B: 嵌套循环的内层和外层循环的循环控制变量不能同名。
C: 嵌套循环的循环次数等于外层循环的循环次数与内层循环的循环次数之积。
D: 如果一个循环的循环体中又完整地包含了另一个循环,则称为嵌套循环。
答案: 【 执行嵌套循环时是先执行内层循环,后执行外层循环。】
流程的转移控制
1、单选题:
下面程序段中的break语句是转移到哪里去执行()。for(...)
{
for(...)
{
switch(...)
{
case 1: ...
break;
case 2:...
...
}
A: //code
}
B: //code
}
C: //code
选项:
A: 转到标号A所在的语句行与执行
B: 转到标号B所在的语句行与执行
C: 转到标号C所在的语句行与执行
D: 不进行流程转移,而是继续执行break后面的语句
答案: 【 转到标号A所在的语句行与执行】
程序调试
1、单选题:
下列说法错误的是()。
选项:
A: 程序测试的目的就是验证程序的正确性。
B: 程序中常见的错误有三种:编译错误,链接错误,以及运行时错误。
C: 编译错误通常是由语法错误造成的。
D: 运行时错误是指在程序运行时发生的错误,运行时错误有两种:一种是导致程序的运行结果与预期的不一致,另一种是导致程序无法正常运行。
答案: 【
