B. a= =11|| a= =12 || a= =13 || a= =14
C. a>10 && a<15
D. !(a<=10) && !(a>=15)
(17) 设 f是实型变量,下列表达式中不是逗号表达式的是 D 。
A. f= 3.2, 1.0
B. f>0, f<10
C. f=2.0, f>0
D. f=(3.2, 1.0)
(18) 设ch是 char型变量,其值为 'A',则下面表达式的值是 B 。
ch=(ch>='A'&& ch<='Z')? (ch+32):ch
A. A
B. a
C. Z
D. Z
(19) 以下运算符中,结合性与其他运算符不同的是 A 。
A. ++
B. %
C. /
D. +
(20) 以下用户标识符中,合法的是 B 。
A. int
B. nit
C. 123
D. a+b
(21) C 语言中,要求运算对象只能为整数的运算符是 % 。
A. %
B. /
C. >
D. *
(22) PC 机中,'\n'在内存占用的字节数是 A 。
A. 1
B. 2
C. 3
D. 4
(23) 字符串"ABC"在内存占用的字节数是 B 。
A. 3
B. 4
C. 6
D. 8
(24) 要为字符型变量 a赋初值,下列语句中哪一个是正确的 B 。
A. char a="3";
B. char a=’3’;
C. char a=%;
D. char a=*;
(25)下列不正确的转义字符是 C 。
A. \\
B. \'
C. 074
D. \0
2. 填空题
(1) C 语言中的逻辑值“真”是用非0 表示的,逻辑值“假”是用 0 表示的。
(2) 符号常量的定义方法是 #define N 10 。
(3) 无符号基本整型的数据类型符为 unsigned int ,双精度实型数据类型符为 double ,字符型数据类型符为 char 。
(4) 设c='w',a=1,b=2,d=-5, 则表达式'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==a=2的值分别
为 1 、 0 、 1 、表达式错误。
(5) 设 float x=2.5,y=4.7; int a=7;,表达式 x+a%3*(int)(x+y)%2/4的值为 2.5 。
(6) 判断变量 a、b 的值均不为 0 的逻辑表达式为 (a!=0)&&(b!=0) 。
(7) 求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依次为 4,4,10,6 。
(8) 求解逗号表达式 x=a=3,6*a 后,表达式值、x、a 的值依次为 18,3,3 。
(9) 数学式a/(b*c)的 C语言表达式 a/(b*c) 。
第3章顺序结构程序设计习题
1. 选择题
(1) printf("f=%3.2f%%",3.478);的输出结果是 A 。
A. f=3.48%
B. f=3.5%
C. f=3.48% %
D. f=347.8%
(2) printf("%c,%d",'a', 'a');的输出结果是 A 。
A. a,97
B. a 97
C. 97,a
D. 97 a
(3) scanf("%c",&a);若要给变量输入大写字母 A,则以下正确的输入是 B 。
A. 'A'
B. A
C. "A"
D. 以上都不对
(4) 若一个 int 类型的数据占 2 字节,则程序段:int x=-1;printf("%u,%d",x,x);的输出结果是 A 。
A. 65535, -1
B. -1,65535
C. 32767, 32768
D. 32768,32767
(5) 在 TC 中,getchar、putchar、printf、scanf 四个函数,均包含在头文件 B
中。
A. math.h
B. stdio.h
C. stbio.h
D. stdlib.h
(6) 复合语句是用 C 括起来的语句组。
A. ( )
B. [ ]
C. { }
D. < >
(7) 下列格式符中,哪一个可以用于以八进制形式输出整数 C 。
A. %d
B. %8d
C. %o
D. %ld
(8) 下列格式符中,哪一个可以用于以十六进制形式输出整数 B 。
A. %16d
B. %8x
C. %d16
D. %d
(9) a 是int类型变量,c是字符变量,下列输入语句中哪一个是错误的 B 。
A. scanf("%d,%c",&a,&c);
B. scanf("%d%c",a,c);
C. scanf("%d%c",&a,&c);
D. scanf("d=%d,c=%c",&a,&c);
(10) 要使double x; long a;的数据能正确的输出,输出语句应是 D 。
A. printf("%d, %f",a, x);
B. printf("%d, %1f",a, x);
C. scanf("%1d, %1f",&a, &x);
D. printf("%1d, %lf",a, x);
2. 程序改错题(以下各个程序段均有 5 个错误,请先找出错误的位置,然后再改正)
(1) 以下程序的功能是,从键盘输入一个字符并鸣笛输出。
#include "stdio.h"
mian() //main()
{ char c //char c;
getchar(c);//c = getchar();
putchar('\007') ; /*鸣笛*/
c=putchar(); //putchar(c);
//}
(2) 以下程序的功能是,输入长方形的两边长(边长可以取整数和实数),输出它的面积和周长。 main //main()
{
int a,b,s,l; //double a,b,s,l;
scanf("%d,%d",&a,&b); //scanf("%lf,%lf",&a,&b);
s=a*b;
l=a+b; //l=(a+b)*2;
printf("l=%f,s=%f\n",l); //printf("l=%lf,s=%lf\n",l,s);
}
3. 写出程序运行结果
(1)
main()
{
int a,b;
scanf("%2d%*2s%2d",&a,&b);
printf("%d\n",a+b);
}
运行时输入:12345678 //输出:68
(2)
main()
{
int a=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d\ny=%d\n",x,y);
}
输出:x=4
y=11
第4章选择结构程序设计习题
1. 单项选择题
(1) 选择结构程序设计的特点是___B____。
A. 自上向下逐个执行
B. 根据判断条件,选择其中一个分支执行
C. 反复执行某些程序代码
D. 以上都是
(2) 假定所有变量均已正确定义,下列程序段运行后x 的值是__B_。 a=b=c=0,x=35;
if(!a) x--; else if(b); if(c) x=3; else x=4; A. 34 B. 4 C. 35 D. 3
(3) 下面的程序片段所表示的数学函数关系是_ A____。 if(x<0) y= -1;
else if(x>0) y=1;
else y=0;
(4) 下列各语句序列中,能够且仅输出整型变量a 、b 中最大值的是( C )。 A. if(a>b) printf("%d\n",a); printf("%d\n",b); B. printf("%d\n",b); if(a>b) printf("%d\n",a);
C. if(a>b) printf("%d\n",a); else printf("%d\n",b);
D. if(a0) y=1;
else if(x==0) y=0; else y= 1;
printf("%d",y);
A. 1
B. 5
C. 0
D. 2
(6) 程序段int x=5,y=8,max; max=(x>y)?x:y; printf("%d",max);的输出结果是 B 。 A. 5 B. 8 C. 3 D. 13
(7) 程序段 int x=3,a=1;switch(x) {case 4: a++;case 3: a++;case 2: a++;case 1: a++;} printf ("%d",a);的输出结果是 D 。
A. 1
B. 2
C. 3
D. 4
(8) 下列语句应将小写字母转换为大写字母,其中正确的是( B )。
A.if(ch>='a'&ch<='z') ch=ch-32;
B.if(ch>='a'&&ch<='z')ch=ch-32;
C.ch=(ch>='a'&&ch<='z')?ch-32:’’;
D.ch=(ch>'a'&&ch<'z')?ch-32:ch;
2. 阅读程序,写出运行结果 (1) void main () { int a=10, b=4, c=3; if(a
int x=100, a=10, b=20, ok1=5, ok2=0; if(a
else x=-1; printf("%d\n", x); }
输出:-1;
(3)
int k,a=1,b=2;
k=(a++==b) ? 2:3; printf("%d",k);
输出:3
(4)
void main()
{
int s=1,k=0;
switch (s)
{
case 1: k+=1;
case 2: k+=2;
default: k+=3;
}
printf(“%d”,k);
}输出:6 (5)
void main()
{
int s=1,k=0;
switch (s)
{
case 1: k+=1;break;
case 2: k+=2;break;
default: k+=3;
}
printf(“%d”,k);
}
输出:1
第5章循环结构程序设计习题
1. 单项选择题
(1)for(i=1;i<9;i+=1);该循环共执行了 B 次。
A. 7
B. 8
C. 9
D. 10
(2)int a=2;while(a=0) a--;该循环共执行了 A 次。
A. 0
B. 1
C. 2
D. 3
(3)执行完循环 for(i=1;i<100;i++);后,i 的值为 B 。
A. 99
B. 100
C. 101
D. 102
(4)以下 for语句中,书写错误的是 D 。
A. for(i=1;i<5;i++);
B. i=1;for(;i<5;i++);
C. for(i=1;i<5;) i++;
D. for(i=1,i<5,i++);
(5) C 语句,在循环条件初次判断为假,还会执行一次循环体。
A. for
B. while
C. do-while
D. 以上都不是
(6)循环结构的特点是 C 。
A. 从上至下,逐个执行
B. 根据判断条件,执行其中一个分支
C. 满足条件时反复执行循环体
D. 以上都对
(7) i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是 A 。for(i=5;i;i--)
for(j=0;j<4;j++){…}
A. 20
B. 24
C. 25
D. 30
(8) C 语言 while 语句中,用于条件的表达式是 D 。
A. 关系表达式
B. 逻辑表达式
C. 算术表达式
D. 任意表达式
(9) int a=1, x=1; 循环语句while(a<10) x++; a++; 的循环执行 D 。
A. 无限次
B. 不确定次
C. 10 次
D. 9 次
(10)下列程序段执行后 s 的值为 A 。
int i=1, s=0; while(i++) if(!(i%3)) break ; else s+=i ;
A. 2
B. 3
C. 6
D. 以上均不是
2. 填空题
(1)三种循环语句是等价价的。
(2)当循环体中的switch语句内有break语句,则只跳出 swicth 语句。同样,当switch语句中有循环语句,内有 break 语句,则只跳出循环语句。
(3)循环体执行遇到continue 语句时跳过本次循环进入下次循环。
(4)下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出 1,否则输出 0,请为程序填空。void main( )
{
int i, x, y=1;
scanf("%d", &x);
for(i=2; i<=x/2; i++)
if ( x%i==0 ) { y=0; break; }
printf("%d\n",y);
}
(5)输入 N个实数,输出其中的最大值、最小值。
#include
void main( )
{
int n,i;
float no1,nmax,nmin;
scanf("%d",&n); scanf("%f",&no1);
nmax=no1;
nmin=no1 ;
for(i=2;i<=n;i++)
{
scanf("%f", &no1 );
if(no1>nmax) nmax=no1;
if(no1}
printf("MAX=%f MIN=%f\n",nmax,nmin);
}
(6)输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。
#include
void main( )
{
char ch;
int s1=0,s2=0 ;
while(( ch=getchar() )!='\n')
{
if(ch>='0'&&ch<='9') s1++;
if(ch>='a'&&ch<='z' || ch>=’A’||ch<=’Z’) s2++; }
}
3. 阅读下列程序,写出程序运行的输出结果
(1)
void main( )
{ int y=9;
for( ;y>0; y--)
if(y%3==0) { printf("%d", --y); continue;}
}
输出:852
(2)main()
{
int k,n,m;
n=10;m=1;k=1;
while(k++<=n)
m*=2;
printf("%d\n",m);
}
输出:1024
(3)
void main ( )
{ int i=5;
do
{switch (i%2)
{case 4: i--; break;
case 6: i--; continue;
}
i-- ; i-- ;
printf("i=%d ", i);
} while(i>0);
}
输出:i=3 i=1 i=-1 (4)#include
void main( )
{
int k=0; char c='A';
do
{
switch(c++)
{
case 'A': k++; break; case 'B': k--;
case 'C': k+=2; break; case 'D': k=k%2; break; case 'E': k=k*10; break; default: k=k/3;
}
k++;
}while(c<'G');
printf("k=%d\n", k);
}
输出:8
(5)输入数据:2,4
#include
void main( )
{
int s=1,t=1,a,n;
int i;
scanf("%d,%d",&a,&n);
for(i=1;it=t*10+1; s=s+t;
}
s*=a; printf("SUM=%d\n",s); }
输出:2468
4. 程序改错
(1) 以下程序是显示[200,300]所有能被 7 整除的数,每行显示 5 个数,此程序有 5处错。 main()
{
int i,n=0; /*n用来记录每行已打印数的个数*/
while(i<300) //while((i <= 300)&&(i >= 200))
{ //i++;
if(i%7==0) //if(i%7!=0)
break; //continue;
printf("%5d",i);
n=n+1;
if(n=5)/*满5个换行*/ //if(n == 5)
{
printf("\n");
n=0;
}
}
}
(2) 以下程序是求 1!+2!+3!+4!+5!+6!+7!的值,其中有 3 处错误。
main()
{
int i,s,t=0; //long s = 0,t = 1;
//int i;
for(i=1;i<=7;i++)
{
s=0; //去掉该语句
t=t*i;
s=s+t;
}
printf("sum=d\n",s); //printf(“sum=%ld”,s);
}
第6章函数习题
1. 单项选择题
(1)C 语言总是从 A 函数开始执行。
A. main
B. 处于最前的
C.处于最后的
D. 随机选一个
(2)函数在定义时,省略函数类型说明符,则该函数值的类型为 A 。
A. int
B. float
C. long
D. double
(2)以下 B 函数,真正地没有返回值。
A. int a(){int a=2;return (a);}
B. void b(){printf("c");}
C. int a(){int a=2;return a;}
D. 以上都是
(3)在 C 语言中,有关函数的说法,以下正确的是 C 。
A. 函数可嵌套定义,也可嵌套调用
B. 函数可嵌套定义,但不可嵌套调用
C. 函数不可嵌套定义,但可嵌套调用
D. 函数不可嵌套定义,也不可嵌套调用
(4)以下函数调用语句中,含有实参的个数为 B 。
fun((2,3),(4,5+6,7));
A. 1
B. 2
C. 5
D. 6
(5)函数调用可以在 D 。
A. 函数表达式中
B. 函数语句中
C. 函数参数中
D. 以上都是
(6)被调函数返回给主调函数的值称为 C 。
A. 形参
B. 实参
C. 返回值
D. 参数
(7) D ,可以不进行函数类型说明。
A. 被调函数的返回值是整型或字符型时
B. 被调函数的定义在主调函数定义之前时
C. 在所有函数定义前,已在函数外预先说明了被调函数类型
D. 以上都是
(8)被调函数通过 D 语句,将值返回给主调函数。
A. if
B. for
C. while
D. return
(9)被调函数调用结束后,返回到 B 。
A.主调函数中该被调函数调用语句处
B.主函数中该被调函数调用语句处
C.主调函数中该被调函数调用语句的前一语句
D.主调函数中该被调函数调用语句的后一语句
(10)以下对 C语言函数的有关描述中,正确的是 A 。
A. 在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B. C函数既可以嵌套定义又可递归调用
C. 函数必须有返回值,否则不能使用函数
D. C程序中有调用关系的所有函数必须放在同一个源程序文件中
(11)C 语言中函数的隐含存储类型是 A 。
A. auto
B. static
C. extern
D. 无存储类型
(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是 A 。
A. return 这两个数
B. 形参用两个元素的数组
C. 形参用两个这种数据类型的指针
D. 用两个全局变量
2. 填空题
(1) 变量的作用域主要取决于变量定义的位子,变量的生存期既取决于变量存储类型,又取决于变量存储方式。
(2) 说明变量时,若省略存储类型符,系统默认其为整形存储类别,该存储类别的类型符为: int 。
(3) 静态型局部变量的作用域是静态局部变量定义的复合语句或函数体内 ,生存期是整个程序运行期内。
(4) 函数中的形参和调用时的实参都是数组名时,传递方式为地址传递,都是变量时,传递方式为值传递。
(5) 函数的形式参数的作用域为整个函数体内,全局的外部变量和函数体内定义的局部变量重名时,函数体内定义的局部变量优先。
(6) 若自定义函数要求返回一个值,则应在该函数体中有一条 return 语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符 void 。
(7) 若函数的形式参数是指针类型,则实参可以是数组名、地址或指针变量。
(8) 函数的参数为 char *类型时,形参与实参结合的传递方式为地址传递。
(9) 函数的实参为常量时,形参与实参结合的传递方式为值传递。
(10) 对数组按值从大到小的顺序排序后输出,请填空。
#include
void main()
{
float a[7]={2,6,3,8,3,12,9};
int i;
void sort(float*,int);
sort(a,7) ;
for(i=0;i<7;i++) printf("%f ",a[i]);
printf("\n");
}
void sort( float *p, int n )
{
int i,j,k; float t;
for(i=0;i{
k=i;
for(j=i+1;jif( p[k]
if(k != i)
{ t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; }
}
}
(11) 下列函数在 n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。 #include
void find(float *p, float *max, float *min, int n)
{
int k;
float t;
*max=*p; *min = *p;
for(k=1;k{
t=*(p+k);
if( t>*max ) *max=t;
if(t<*min) *min=t;
}
}
3. 写出下列程序运行结果:
(1)
main()
{
int i=1,p;
p=fun(i,i+1);
printf("%d\n",p); }
int fun(int a,int b) {
int f; if(a>b)
f=1;
else if(a==b) f=0;
else
f=-1;
return f; }
输出:-1
(2)键盘输入 abcdef
#include
void fun( )
{
char c ;
if((c=getchar( ))!='\n')
fun( ) ;
putchar(c);
}
void main( )
{ fun( ); }
输出:fedcba
(3)
#include
#define C 5
int x=1,y=C;
void main( )
{
int x;
x=y++; printf("%d %d\n", x,y);
if(x>4)
{ int x ; x=++y; printf("%d %d\n",x,y) ; } x+=y--;
printf("%d %d\n",x,y);
} (4)
#include
int c , a=4 ;
func(int a , int b)
{ c=a*b ; a=b-1 ; b++ ; return (a+b+1) ; } void main( )
{
int b=2 , p=0 ; c=1 ;
p=func(b , a) ;
printf("%d,%d,%d,%d\n", a,b,c,p) ;
}
输出:4,2,8,9
(5)
unsigned fun6(unsigned num)
{
unsigned k=1;
do { k*=num%10; num/=10; }
while(num);
return k;
}
void main( )
{
unsigned n=26;
printf("%d\n", fun6(n));
}
输出:12
输出:5 6
7 7
12 6
第7章数组习题
1. 单项选择题
(1) int a[4]={5,3,8,9};其中 a[3]的值为( D )。
A. 5
B. 3
C. 8
D. 9
(2) 以下 4 个字符串函数中,( A )所在的头文件与其他 3 个不同。
A. gets
B. strcpy
C. strlen
D. strcmp
(3) 以下 4 个数组定义中,( D )是错误的。
A. int a[7];
B. #define N 5 long b[N];
C. char c[5];
D. int n,d[n];
(4) 对字符数组进行初始化,( B )形式是错误。
A. char c1[ ]={'1', '2', '3'};
B. char c2[ ]=123;
C. char c3[ ]={ '1', '2', '3', '\0'};
D. char c4[ ]="123";
(5) 在数组中,数组名表示( A )。
A. 数组第 1 个元素的首地址
B.数组第 2 个元素的首地址
C. 数组所有元素的首地址
D.数组最后 1 个元素的首地址
(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是( B )。
int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
A. 1,12
B. 0,11
C. 1,11
D. 0,12
(7) 若有以下说明,则数值为 4 的表达式是( D )。
int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ;
A. a[g-c]
B. a[4]
C. a['d'-'c']
D. a['d'-c]
(8) 设有定义:char s[12] = "string" ; 则printf( "%d\n",strlen(s)); 的输出是( A )。
A. 6
B. 7
C. 11
D. 12
(9) 设有定义:char s[12] = "string"; 则printf("%d\n ", sizeof(s)); 的输出是( B )。
A. 6
B. 7
C. 11
D. 12
(10) 合法的数组定义是( A )。
A. char a[ ] = "string";
B. int a[5] ={0,1,2,3,4,5};
C. char a="string ";
D. char a[ ]={0,1,2,3,4,5};
(11) 合法的数组定义是( B )。
A. int a[3][ ]={0,1,2,3,4,5};
B. int a[ ][3] ={0,1,2,3,4};
C. int a[2][3]={0,1,2,3,4,5,6};
D. int a[2][3]={0,1,2,3,4,5,};
(12) 下列语句中,正确的是 ( D )。
A. char a[3][ ]={'abc', '1'};
B. char a[ ][3] ={'abc', '1'};
C. char a[3][ ]={'a', "1"};
D. char a[ ][3] ={ "a", "1"};
(13) 下列定义的字符数组中,输出 printf("%s\n", str[2]) ;的输出是( C )。
static str[3][20] ={ "basic", "foxpro", "windows"};
A. basic
B. foxpro
C. windows
D. 输出语句出错
(14) 下列各语句定义了数组,其中哪一个是不正确的( C )。
A. char a[3][10]={"China","American","Asia"};
B. int x[2][2]={1,2,3,4};
C. float x[2][ ]={1,2,4,6,8,10};
D. int m[][3]={1,2,3,4,5,6};
(15) 数组定义为 int a[3][2]={1,2,3,4,5,6},值为6的数组元素是( B )。
A. a[3][2]
B. a[2][1]
C. a[1][2]
D. a[2][3]
2. 填空题
(1) C 语言中,数组的各元素必须具有相同的类型,元素的下标下限为 0 ,下标必须是正整数、0、或者常量。但在程序执行过程中,不检查元素下标是否越界。
(2) C 语言中,数组在内存中占一片连续的存储区,由数组名代表它的首地址。数组名是一个常量,不能对它进行赋值运算。
(3) 执行 static int b[5], a[ ][3] ={1,2,3,4,5,6}; 后,b[4] = 0 ,a[1][2] = 6 。
(4) 设有定义语句 static int a[3][4] ={{1},{2},{3}}; 则 a[1][0]值为 2 ,a[1][1] 值为 0 ,a[2][1]的值为 0 。
(5) 如定义语句为 char a[ ]= "windows",b[ ]= "2000";,语句 printf("%s",strcat(a,b));的输出结果为 windows2000 。
(6) 输入 20 个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。请填空。
#include
#include
void main( )
{ float a[20],pjz=0,s,t; int i,k;
for(i=0; i < 20; i++) scanf(“%f”,&a[i]); for(i=0;i<20;i++) pjz+=a[i];
pjz/=20; s=fabs(a[0]-pjz);
for(i=1;i<20;i++)
if(fabs(a[i]-pjz)
{
s=fabs(a[i]-pjz); t=a[i];
}
printf(“%f,%f”,pjz,t);
}
(7) 以下程序以每行 10个数据的形式输出 a 数组,请填空。void main( )
{
int a[50],i;
printf("输入50个整数:");
for(i=0; i<50; i++) scanf( "%d", &a[i] );
for(i=1; i<=50; i++)
{ if( i%10==0 )
printf( "%3d\n" , a[i-1] ) ;
else printf( "%3d",a[i-1]);
}
}
(8) 下面程序的功能是输出数组 s 中最大元素的下标,请填空。void main( )
{
int k, p;
int s[] = {1, -9, 7, 2, -10, 3};
for(p=0,k=p; p<6; p++) if(s[p] > s[k]) k = p ;
printf("%d\n" ,k);
}
3. 阅读程序,分析程序的功能。
(1)
#include
#include
void main( )
{
char s[80];
int i ;
for(i=0; i<80; i++)
{ s[i]=getchar( );
if(s[i]=='\n') break;
}
s[i]='\0'; i=0;
while(s[i]) putchar(s[i++]);
putchar(‘\n’);
}
分析:输入一个字符串,以回车结束,并将其原样输出。(2)
#include
#include
void main( )
{
char str[10][80], c[80];
int i;
for(i=0; i<10; i++) gets(str[i]);
strcpy(c, str[0]);
for(i=1; i<10; i++)
if(strlen(c){strcpy(c,str[i]); }
printf( "%s\n", c);
printf( "%d\n", strlen (c));
}
分析:输入10个字符串,输出10个字符串中最长的字符串和它的长度。
(3)
#include
#include
void main( )
{
char a[10][80], c[80];
int i, j, k;
for(i=0; i<10; i++)
gets(a[i]);
for(i=0; i<9; i++)
{
k=i;
for(j=i+1; j<10; j++)
if(strcmp(a[j],a[k])<0)
k=j;
if(k!=i)
{
strcpy(c,a[i]) ;
strcpy(a[i], a[k]);
strcpy(a[k],c);
} // 字符串交换
}
for(i=0; i<10; i++)
puts(a[i]);
}
分析:输入10个字符串,用选择排序算法将10个字符串按从小到大顺序排列并输出。
(4) 阅读程序,写出运行结果。
#include
void main( )
{int a[6]={12,4,17,25,27,16};
int b[6]={27,13,4,25,23,16},i,j;
for(i=0;i<6;i++)
{ for(j=0;j<6;j++)
if(a[i]==b[j])
break;
if(j<6)
printf("%d ",a[i]);
}
printf("\n");
}
分析:按数组a中元素顺序输出与数组b中元素相同的数。
输出:4,25,27,16 (5) 阅读程序,写出运行结果。
#include
void main( )
{
char a[8],temp; int j,k; for(j=0;j<7;j++) a[j]='a'+j; a[7]='\0';
for(j=0;j<3;j++)
{
temp=a[6];
for(k=6;k>0;k--) a[k]=a[k-1];
a[0]=temp;
printf("%s\n",a);
}
}
分析:将字符串的最后的3个元素移到字符串首位。
输出:efgabcd
(6) 阅读下列程序,写出程序运行的输出结果。
#include
#include
void main( )
{
char str1[ ]="*******"; for(int i=0;i<4;i++)
{
printf("%s\n",str1); str1[i]=' ';
str1[strlen(str1)-1]='\0';
}
}
输出:*******
*****
***
*
第8章指针习题
1. 单项选择题
(1) 指针 pstr所指字符串的长度为 D 。char *pstr="\t\"1234\\abcd\n"
A. 15
B. 14
C. 13
D. 12
(2) 对于 char *pstr;,以下正确的是 B 。
A. *pstr="Hi"
B. pstr="Hi"
C. *pstr=" Hi"
D. **pstr="Hi"
(3) 以下程序段的输出结果为 B 。
char astr[5]="1234";
char *pstr=astr;
printf("%c",pstr[1]-'0');
A. 1
B. 2
C. ASCII码值为 1 的字符
D. ASCII 码值为 2 的字符
(4) 下述程序段的输出结果为 D 。
char astr[]="abcde";
char *pstr=&astr[5];
while(--pstr>=astr)
putchar(*pstr);
putchar('\n');
A. abc
B. cba
C. abcde
D. edcba
(5) 若有定义 int a=1,*b,c;,以下不正确的是 A 。
A. b=a
B. b=&a
C. b=&a,c=*b
D. c=a
(6) 以下程序段的运行结果为 C 。
int num[]={1,2,3,4,5,6,7,8,9},*pnum=&num[2];
pnum++;
++pnum;
printf("%d\n",*pnum);
A. 3
B. 4
C. 5
D. 6
(7) 以下程序段的运行结果为 B 。
char *pstr="My name is Tom";
int n=0;
while(*pstr++!='\0')
n++;
printf("n=%d\n",n);
A. 12
B. 14
C. 16
D. 不确定
(8) 以下程序段的运行结果为 B 。
int num[9]={1,2,3,4,5,6,7,8,9},*p;
p=num;
*(p+1)=0;
printf("%d,%d,%d\n",*p,p[1],(*p)++);
A. 2,0,1
B. 1,0,1
C. 2,2,2
D. 1,1,1
(9) 以下程序段的运行结果为 C 。
int a=5,*p=&a,b,*q;
a=10;
*p=15;
q=p;
*q=20;
b=*q;
p=&b;
printf("a=%d,b=%d,*p=%d,*q=%d\n",a,b,*p,*q);
A. a=5,b=10,*p=15,*q=20
B. a=20,b=15,*p=10,*q=5
C. a=20,b=20,*p=20,*q=20
D. a=15,b=15,*p=15,*q=15
(10) 已知 char *p,*q;,以下语句正确的是 C 。
A. p*5;
B. p/=q;
C. p+=5;
D. p+=q;
第9章结构体共用体习题
1. 填空题
(1) 定义结构体的关键字是 struct ,定义共用体的关键字是 union 。
(2) 结构体和共用体的相同点是都是构造类型,不同点是共用体在同一时间只能使用一个成员。
(3) 若有以下定义和语句,则sizeof(a)的值是 12 ,而sizeof(b)的值是 20 。
struct tu
{ int m; char n; int y;}a;
struct
{ float p; char q; struct tu r} b;
(4) 设有下面结构类型说明和变量定义,则变量a在内存所占字节数是 32 。如果将该结构改成共用体,结果为 16 。
struct stud
{ char num[6]; int s[4]; double ave; } a;
(5) 下面程序用来输出结构体变量ex所占存储单元的字节数,请填空。
struct st
{ char name[20]; double score; };
main()
{ struct st ex ; printf("ex size: %d\n",sizeof( ex )); }
(6) 下面定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
struct node
{ int info; struct node * link; }
(7) 以下程序执行后输出结果是 A 。
main()
{ union { unsigned int n; unsigned char c; } u1;
u1.c='A'; printf("%c\n",u1.n); }
(8) 变量root如图所示的存储结构,其中sp是指向字符串的指针域,next是指向该结构的指针域,data 用以存放整型数。请填空,完成此结构的类型说明和变量root的定义。
root
struct list
{ char *sp ; struct list *next ; int data ; } root;
2. 阅读下面的程序,写出程序结果
(1)
struct info
{ char a,b,c;};
main()
{ struct info s[2]={{‘a’,‘b’,‘c’},{‘d’,‘e’,‘f’}};int t; t=(s[0].b-s[1].a)+(s[1].c-s[0].b);
printf("%d\n",t); }
输出:2
(2)
void main()
{ union { char i[2]; int k; } stu;
stu.i[0]='2'; stu.k=0;
printf("%s,%d\n",stu.i,stu.k);
}
输出:,0
(3)
union myun
{ struct{ int x, y, z; } u; int k; } a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6; a.k=0; printf(“%d\n",a.u.y); }
输出:0
c语言试题及答案
1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式
嵌入式C语言经典笔试题目
嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,
C语言试题及答案
一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是( D )。 A. 软件是一种逻辑实体,具有抽象性 B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显着特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于( D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。
c 试题及答案
一、单项选择题 1、下列哪个类型的对象是https://www.wendangku.net/doc/fc15863688.html,在非连接模式下处理数据内容的主要对象? (D ) A. Command B. Connection C. DataAdapter D. DataSet 2、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型, 如果类型省略,则定义为( A )。 A. int B. sbyte C. uint D. ulong 3、创建数据库连接使用的对象是( A )。 A. Connection B. Command C. DataReader D. DataSet 4、C#中导入某一命名空间的关键字是( A )。 A. using B. use C.import D. include 5、一般情况下,异常类存放在什么命名空间中?( B )。 A. 生成异常类所在的命名空间 B. System.Exception命名空 间 C. System.Diagnostics命名空间 D. System命名空间 6、若将数据库中的数据填充到数据集,应调用SqlDataAdapter的( C )方 法。 A. Open B. Close C. Fill D. Update 7、若将数据集中所作更改更新回数据库,应调用SqlAdapter的(A )方法。 A. Update B. Close C. Fill D. Open 8、在使用FileStream 打开一个文件时,通过使用FileMode 枚举类型的( A ) 成员,来指定操作系统打开一个现有文件并把文件读写指针定位在 文件尾部。 A. Append B. Create C. CreateNew D. Truncate 9、在菜单项File中,为将F设为助记符,应将该菜单项的Text属性设置为 (B )。 A. @File B.&File C. %File D._File 10、指定操作系统读取文件方式中的FileMode .Create的含义是( D)。 A. 打开现有文件 B. 指定操作系统应创建文件,如果文件存在,将出现异常 C. 打开现有文件,若文件不存在,出现异常 D. 指定操作系统应创建文件,如果文件存在,将被改写 11、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型,如果类型省略,则定义为( D )。 A. uint B. sbyte C. ulong D. int 12、当运行程序时,系统自动执行启动窗体的( C )事件。 A. Click B.DoubleClick C. Load D. Activated
C语言程序设计试卷含答案
说明:请将单项选择题(1~50空)的正确答案涂写考试答题卡,将填空(51~75空)等文字题按【】中的序号写入下面文字答题卡,否则不得分。 二、阅读程序题文字答题卡:(每空2分,共24分) 三、完善程序填空题文字答题卡:(每空2分,共26分) 一、单项选择题(每空1分,共50分) 请将正确答案按【】中的序号写入答题卡,否则不得分。 1.在C语言中,一条语句以【】字符作为结束符。
A),B);C).D)无符号2.以下4组标识符中,能作为变量名使用的是【】。 A)age,struct,s1 B)2A,b_3,main C)ELSE,a[2],m123 D)_abc,INT,abcd 3.判断char型变量ch是否为数字字符的正确表达式为【】。 A)0<=ch<=9 B)'0'<=ch<='9' C)(0<=ch)&&(ch<=9)D)('0'<=ch)&&(ch<='9') 4.已知小写字母a的ASCII码值是97,大写字母A的ASCII码值是65,下列语句中不能输出大写字母B的是【】。 A)putchar('A'+1);B)putchar('b'-32); C)putchar(98-32);D)putchar(B); 5.空字符串的长度是【】。 A)0B)1 C)2 D)3 6.整型变量a定义后赋初值的结果是【】。 int a=2.8*6; A)12 B)16C)17 D)18 7.若有以下说明语句,则该语句【】。 char a='\077'; A)使a的值包含1个字符B)使a 的值包含4个字符 C)使a的值包含3个字符D)说明不合法 8.下面的程序结果为:【】。 main() { int x=023; printf("%d\n",--x); } A)17 B)18C)23 D)24 9.源程序执行后,屏幕上显示【】。 main() { int a; float b; a=4; b=9.5; printf("a=%d,b=%4.2f\n",a,b); } A)a=%d,b=%f\n B)a=%d,b=%f C)a=4,b=9.50 D)a=4,b=9.5 10.设int x=10;x+=x%=(-6)+4;则x= 【】。 A)0B)16 C)18 D)10 11.C语言的下列运算符中,运算对象必须是整型数据的是【】。
c语言笔试题(答案)(精心整理)
笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )
大学C语言考试试题及答案
精选考试类文档,如果您需要使用本文档,请点击下载! 祝同学们考得一个好成绩,心想事成,万事如意! 大学C语言考试试题及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串
选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"aC期末考试题及答案
C期末考试题及答案 Revised at 2 pm on December 25, 2020.
一、填空题(每空0.5分,共30分) 1、世界坐标系简称__WCS_用户自定义坐标系简称__UCS_。 2、工作空间的切换:“工具”/“工作空间”或“工作空间”工具栏。 3、工具栏包括30种,系统默认的显示工具栏包括:“标准”、“属性”、“绘图”和“修改”等工具栏。 4、多线的对正方式有_上(T)_、_无(Z)_和_下(B)_。 5、文字标注包括标注单行文字和标注多行文字。 6、渲染环境是指在渲染对象时进行的雾化和深度设置。 7、漫游和飞行用户可以通过键盘和鼠标来控制视图显示,并创建导航动画。 8、编辑实体的边的种类:压印边、复制边、着色边。 9、动态块是通过自定义夹点或自定义特性定义的块。在图形中使用动态块,用户可以随时对组成块的对象进行修改。 10、三维实体是具有体积、质量、重心、回转半径、惯性距等特征的三维对象。 11、在AutoCAD 2007中,用户可以创建的光源有电光源、聚光灯光源和平行光光源。 12、相切、相切、半径法是指:通过指定圆的两个切点和半径来绘制圆。 13、绘制圆环的步骤中,先输入圆环的内径和外径,后确定圆环的中心点。 14、计算机辅助设计是:工程技术人员在CAD系统的辅助下,根据产品的设计程序进行设计的一项新技术。 15、菜单栏包括11种,每一种菜单中都含有四种显示情况:命令后跟右三角 、后跟省略号、后跟快捷键或功能键或命令呈灰色。 16、要对图形对象进行编辑就必须选中图形对象,在AutoCAD 2007中,选择对象的方法很多,常用的有_直接拾取_、矩形框选择_、_不规则区域选择_和快速选择。 17、在设置显示精度时,如果设置的精度越高,即分辨率就越高,计算机计算的时间 也越长,显示图形的速度也就越慢。 18、三维基本实体的种类包括:多段体、长方体、楔体、圆柱体、圆锥体、球体、圆环体、棱锥面。 19、布尔运算中只留重复的一部分的运算是交集运算。从一个图形中去掉与另一个图形重复部分的运算是差集运算。
(完整版)C语言试题及答案解析
C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行
c语言笔试题目及答案
c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表
B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较
C语言试卷及答案
一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递
C语言试题及答案
第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。
c语言试题及答案
《C语言》课程综合复习资料 一、单选题 1. 在C语言中,字符型数据在存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码 2. 在C语言中,十进制数47可等价地表示为 A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3 4. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 D) 20 5. 已定义以下函数: fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 6. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); C) fun( 10 , 12.5 ); D) void fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; B) char b[10];b="Hello!";
C语言程序设计试卷及答案
C 语言程序设计 笔试试题 题号 一 二 三 四 五 六 笔试(70%) 综 合 (30%) 总分 分数 试卷说明: 1. 笔试卷面总分100分,取卷面成绩的70%计入总分; 2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%; 3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸; 4. 答题时间120分钟。 一、单项选择题。将正确答案填入下面框中。 (本题16分,每小题1分) 题号 1 2 3 4 5 6 7 8 答案 题号 9 10 11 12 13 14 15 16 答案 1. 有以下程序 main() {int a=1,b=0; if(!a) b++; else if(a==0) if(a) b+=2; else b+=3; printf(“%d\n ”,b); }则程序输出( A )。 A) 0 B) 1 C) 2 D) 3 2. 有以下定义:int a; long b; double x,y;则下列正确的是( A )。 A) a%(int)(x-y) B) a=x!=y C) (a*y)%b D) y=x+y=x 3. 若有定义 int (*p)[3];则下列说法正确的是( C )。 A) 定义了基类型为int 的三个指针变量 B) 定义了一个名为 *pt 、具有三个元素的整型数值 号 学 名 姓 注意行为规范 遵守考试纪律
C) 定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组D) 定义了基类型为int的具 有三个元素的整型数组 4. 有以下程序段 main() { int x=10; while(x--); printf("x=%d\n",x);} 则最后的输出结果是:( B)。 A) x=0 B) x= -1 C) x=1 D)while构成无限循环 5. 有以下程序: int fun() {static int x=1; x *= 2; return x;} main( ) { int i,s=1 ; for(i=1 ;i<=2 ;i++) s=fun() ; printf(“%d\n ”,s) ;} 执行后的输出结果为( D)。 A) 0 B) 1 C) 8 D) 4 6. void main( ){ int k=011; printf("%d\n",k++); } }程序输出结果是( D ) A)12 B) 11 C) 10 D) 9 7. 以下C语言标识符中,不合法的是( C)。 A) _2 B) a_b C) a--b D) AaBc 8. C语言允许函数类型默认定义,此时该函数值隐含的类型是( B)。 A) float B) int C) long D) double 9. 以下程序段运行结果是( B)。 enum weekday{aa,bb=2,cc,dd,ee}week=ee; printf(“%d\n“,week); A) 4 B) 5 C) ee D) 0 10. 以下对C语言函数的描述中,不正确的是( B )。 A) 不同函数中可以使用相同名字变量B) 函数可以嵌套定义 C) 函数可以没有返回值D) 程序由函数组成 11. 若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是( D )。 A) *p B) *x C) *(p+1) D) x[5]
嵌入式C语言面试题汇总(超经典)
第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用
C试题及答案一
C++程序设计模拟试卷(一) 一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。 1. 编写C++程序一般需经过的几个步骤依次是() A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 答案:B 解析:经过编辑、编译、连接和运行四个步骤。编辑是将C++源程序输入计算机的过程,保 存文件名为cpp。编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为 obj,由于没有得到系统分配的绝对地址,还不能直接运行。连接是将目标文件obj转换为可执行 程序的过程,结果为exe。运行是执行exe,在屏幕上显示结果的过程。 2. 决定C++语言中函数的返回值类型的是() A. return语句中的表达式类型 B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据类型 答案:D 解析:函数的返回值类型由定义函数时的指定的数据类型决定的。A项的表达式的值要转换 成函数的定义时的返回类型。 3. 下面叙述不正确的是() A. 派生类一般都用公有派生 B. 对基类成员的访问必须是无二义性的 C. 赋值兼容规则也适用于多重继承的组合 D. 基类的公有成员在派生类中仍然是公有的 答案:D 解析:继承方式有三种:公有、私有和保护。多继承中,多个基类具有同名成员,在它们 的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则是指 派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中的 公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。 4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是() A. 类 B. 对象 C. 函数体 D. 数据块 答案:A 解析:类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。 5. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中 的() A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员 答案:A 解析:在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类 的成员函数来访问。所以选择A项。 6. 对基类和派生类的关系描述中,错误的是() A. 派生类是基类的具体化 B. 基类继承了派生类的属性 C. 派生类是基类定义的延续 D. 派生类是基类的特殊化 答案:B 解析:派生类的成员一个是来自基类,一个来自本身,所以派生类是基类的扩展,也是基 类的具体化和特殊化,派生类是对基类扩展。B项基类不能继承派生类成员,所以错误。 7. 关于this指针使用说法正确的是() A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
c语言试卷及答案1
c语言试卷及答案1
浙江理工大学 C程序设计试题(一) 试题二、语言基础题(本题共30分) (一)判断题(本题共10分,每小题1分) 说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (16) C语言程序的三种基本结构是顺 序、选择和嵌套。 (17) 在C语言程序中,在函数内部定 义的变量称为全局变量。 (18) 运算符“=”和“&=”的优先级相 同。 (19) ‘%f’是不正确的字符常量。 (20) 运算符“+”不能作为单目运算符。 (21) 如果运算符“*”和“/”都是右 结合的,则表达式10*6/5的值是10。 (22) s(s-a)(s-b)(s-c)是合法的C语 言表达式。 (23) 表达式!!6的值是6。 (24) 表达式~(~2<<1)的值是5。 (25) 对于变量定:int a[10],*p=a+8; 数组a的最后一个元素是p[1]。
(二)单选题(本题共20分,每小题2分) (26) 执行语句printf("(26) ", "A");将得到出错信息。 A、%u B、%s C、%e D、%d (27) 设c是一个字符变量,求解表达 (27) 后,c的值不是1就是0。 A、c=getchar()!=’\n’ B、(c=getchar()!)=’\n’ C、c=’1’ D、c=EOF (28) 下列定义中,(28) 定义的变 量可以存放-123.4。 A、long a; B、 unsigned b; C、int d; D、float c; (29) 对于变量定义;char *pp[100], pp是一个(29) 。 A、函数 B、数组元素 C、指针变 量D、数组 (30) 下列程序段的输出结果是 (30) 。 char *st[ ]={ "SUM","MOON","STAR","X"}; printf("(%s,%c) ",*(st+1)+1,*(*(st+2)+2)+2)
完整版C试题及答案
C++考试试卷 1. 已知:char *s=S456; 则cout<>s; C) char *s1=abcd,*s2=efghijk;strcpy(s1,s2); D) char *s=abcdefg; cout<<*s; 4. C++中,关于构造函数和析构函数,正确的描述是()。 A) 在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数 B) 构造函数和析构函数均可以重载 C) 已知类Student以及Student *p; 在使用p=new Student;时自动调用无参构造函数创建动态对象,在delelte p;时自动调用析构函数释放动态对象 D) 构造函数和析构函数都可以成为虚函数 )。关于拷贝构造函数的描述正确的是(5. A) 通常的拷贝构造函数的参数是对象的指针类型 B) 如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数 C) 如果有自定义的构造函数,系统就不再提供拷贝构造函数 D) 如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数 6. 有关静态成员的描述错误的是()。 A) 某个类的静态数据成员由该类的所有对象所共享 B) 类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“::”通过类名来访问 C) 静态数据成员既可以是私有成员,也可以是公有成员 D) 类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作
c语言经典面试题
C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10;
c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对