资源描述
《C次序 方案 》期末复习练习 题及参考答案 (2)
一、单项选择 题
1.揣摸 字符串s1与字符串s2相当 ,应当应用 : 。
A) if (s1 = s2)
B) if (strcmp(s1, s2))
√C) if (!strcmp(s1, s2))
D) if (strcmp(s1, s2) = 0)
2.二维数组a有m行n列,那么在a[i][j]之前的元素个数为〔 〕。
A. j*n+i √B. i*n+j C. i*n+j-1 D. i*n+j+1
3.以下次序 实行 后的输出结果是〔 〕。
#include<stdio.h>
#include<string.h>
main()
{ printf("%d\n", strlen("IBM\n012\t\"\\\0"));}
√A) 10 B) 11 C) 16 D) 12
4.有如下次序 片段 :
int i = 0;
while(i++ <= 2);
printf("%d", i);
那么精确 的实行 结果是:
A) 2 B) 3 √C) 4 D) 次序 陷入 去世 循环
5. 下面哪个定义 是合理 的 。
A) char a[8] = "language";
B) int a[5] = {0,1,2,3,4,5};
√C) char *a = "string";
D) int a[2][] = {0,1,2,3,4,5,6};
6. 一个C语言 的语句必须 应用 的终了标志 是〔 〕。
A) , B) 。 √C) ; D) :
7. 以下表达 精确 的选项是〔 〕。
A)C次序 中的注释只能出现在次序 的开始位置跟 语句的后面。
B)C次序 抄写 格式 严峻,恳求 一行内只能写一个语句。
√C)C次序 抄写 格式 自由,一个语句可以 写在多行上。
D)用C语言 编写的次序 只能放在一个源次序 文 件中。
8. 以下选项中不克不迭 作为合理 常量的是〔 〕。
A) 1.234e04 B) 1.234e+4 √
9. 以下选项中合理 的用户标识符是〔 〕。
A) int B) #max √C) _3int D) A.max
10. 设x跟 y均是int型变量,那么实行 以下语句后的输出为〔 〕。
x=15;y=5;printf("%d\n",x%=(y%2));
√A) 0 B) 1 C) 6 D) 12
11. 设x,y跟 z根本上 int型变量,且x=3,y=4,z=5,那么以下表达 式中,值为0的表达 式是〔 〕。
A) x&&y √B) !(x<y&&!z || 1) C) x<=y D) x||++y&&y-z
12. 以下次序 运行 结果是〔 〕。
#include <stdio.h>
int fun(int i, int j)
{ i++, j++;
return i + j;
}
int main()
{ int a = 1, b = 2, c = 3;
c += fun(a,b) + a;
printf("%d,%d,%d\n",a, b, c );
return 0;
}
√A) 1,2,9 B) 2,3,10 C) 1,2,10 D) 2,3,9
13. 有以下次序 ,次序 实行 后的输出结果是〔 〕。
#include <stdio.h>
int main()
{ int a[] = {2, 4, 6, 8, 10}, y = 0, x, *p;
p = &a[1];
for(x = 1; x < 3; x++)
y+=p[x];
printf("%d\n",y);
return 0;
}
A) 10 B) 11 √C) 14 D) 15
14. 有以下次序 ,以下表达 精确 的选项是〔 〕。
#include <stdio.h>
#include <string.h>
int main()
{ char p[] = {'a','b','c'}, q[10] = {'a','b','c'};
printf("%d %d\n",strlen(p),strlen(q));
return 0;
}
A)在给p跟 q数组赋初值时,系统会自动 添加 字符串终了符,故输出的长度都为3。
√B) 由于 p数组中不 字符串终了符,长度不克不迭 判定 ;但q数组中字符串长度为3。
C) 由于 q数组中不 字符串终了符,长度不克不迭 判定 ;但p数组中字符串长度为3。
D) 由于 p跟 q数组中都不 字符串终了符,故长度都不判定 。
15. 以下可用于C语言 用户标识符的一组是〔 〕。
A)void, define, WORD √B)a3_3,_123,Car
C)For, -abc, IF Case D)2a, DO, sizeof
16. 以下选项中不属于字符常量的是
A)′C′ √B)′′C′′ C)′\xCC′ D) ′\072′
17. 〔15〕以下定义 语句中精确 的选项是〔 〕。
A)int a=b=0; √B)char A=65+1,b=′b′;
C)float a=1,*b=&a,*c=&b; D)double a=00;b=1.1;
18. 当变量c的值不为2、4、6时,值也为"真"的表达 式是〔 〕。
A)(c==2)||(c==4)||(c==6) √B)(c>=2&& c<=6)||(c!=3)||(c!=5)
C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&& c<=6)&&(c%2!=1)
19. 下面说明不精确 的选项是〔 〕。
A)char a[10]="china"; B)char a[10],*p=a; p="china";
C)char *a;a="china"; √D)char a[10],*p; p=a="china";
20. 有定义 语句:char s[10];,假设 要从终端给s输出5个字符,差错 的输出语句是〔 〕。
A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); √D)scanf("%s",s[1]);
21. 有以下次序 ,次序 实行 后的输出结果是〔 〕。
#include<stdio.h>
void main()
{ unsigned short a = 65535;
short b;
b = a;
printf("%d\n",b);
}
A) 65535 B) 0 √ C) -1 D) 1
22. 在C语言 中,以下表达 不精确 的选项是〔 〕。
√A) 在C次序 中,不论是整数仍然 实数,都能被精确无误的表示
B) 在C次序 中,变量名代表存储器中的一个位置
C) 静态变量的生涯 期与全体 次序 的生涯 期一样
D) C语言 中变量必须 先定义 后引用
23. 以下表达 中差错 的选项是〔 〕。
A)在次序 中凡是以"#"开始的语句行根本上 预处理 命令 行
B)预处理 命令 行的最后不克不迭 以分号表示 终了
C)#define MAX 是合理 的宏定义 命令 行
√D)C次序 对预处理 命令 行的处理 是在次序 实行 的过程 中停顿的
24. 设有以下说明语句
typedef struct
{ int n;
char ch[8];
} PER;
那么下面表达 中精确 的选项是〔 〕。
A)PER 是结构体变量名 √B)PER是结构体典范 名
C)typedef struct 是结构体典范 D)struct 是结构体典范 名
25. 以下表达 中差错 的选项是〔 〕。
A)gets函数用于从终端读入字符串 √B)getchar函数用于从磁盘文件读入字符
C)fputs函数用于把字符串输出到文件 D)fwrite函数用于以二进制方法 输出数据到文件
26. 有以下次序
#include<string.h>
main()
{ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};
printf("%d%d\n",strlen(p),strlen(q));}
以下表达 中精确 的选项是〔 〕。
A) 在给p跟 q数组置初值时,系统会自动 添加 字符串终了符,故输出的长度都为3
√B) 由于 p数组中不 字符串终了符,长度不克不迭 判定 ,但q数组中字符串长度为3
C) 由于 q数组中不 字符串终了符,长度不克不迭 判定 ,但p数组中字符串长度为3
D) 由于 p跟 q数组中都不 字符串终了符,故长度都不克不迭 判定
27. 设有:
int a=1,b=2,c=3,d=4,m=2,n=2;
实行 (m=a>b)&&(n=c>d)后,n的值是〔 〕。
A)1 √B)2 C)3 D)4
28. 设有如下定义 :
int x=10,y=3,z;
那么语句
printf("%d\n",z=(x%y,x/y));
的输出结果是〔 〕。
A) 0 B) 1 √C) 3 D) 4
29. 下面的次序
#include<stdio.h>
void main()
{
char ch;
scanf("%3c", &ch);
printf("%c", ch);
}
假设从键盘上输出 abc回车
那么次序 的运行 结果是〔 〕。
√A) a B) b C) c D) 次序 语法出错
30. 以下次序 的运行 结果是〔 〕。
#include <stdio.h>
void main()
{ int x[]={1,2,3};
int s,i,*p=x;
s=1;
for(i=0;i<3;i++)s*=*(p+i);
printf("%d\n", s);
}
A) 7 √B)6 C) 3 D) 8
二、填空题
1、函数add恳求 打算 两个整数之跟 ,并通过形参前去 该值,代码如下:
void add(int x, int y, int *sum ) { *sum = x + y; }
2、 次序 方案 中,需要 定义 一个指针变量p,该变量可以 指向一个长度为5的字符型数组,定义 代码如下: char (*p)[5]; 。
3、设整型变量n的值为2,实行 语句“n+=n-=n*n〞后,n的值是 - 4 。
4、共用体跟 结构体的定义 格式 类似,差异 点是 结构体的成员占据 各自差异 的空间,而共用体的各成员放到一致 存储空间。 。
5、 设变量max、a、b已经正判定 义,假设 恳求 a跟 b的最大年夜 值,并赋值给max,代码为:max = a > b ? a:b ;。
6、以下次序 的输出结果是 7,1 。
int ast(int x,int y,int * cp,int * dp)
{ *cp=x+y; *dp=x-y; }
main()
{ int a=4,b=3,c,d;
ast(a,b,&c,&d);
printf("%d,%d/n",c,d); }
7、有如下输出语句:scanf(“a=%d,b=%d,c=%d〞,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输出数据的精确 方法 应是 a=1,b=3,c=2 。
8、 一个共用体典范 的变量,其所占内存的大小 是:由占据 内存空间最大年夜 的成员决定 。,
9、 设有定义 :int x=12,n=5; 那么表达 式 x%=(n%2) 的值为 0 。
10、设有float x;写出掉 掉 落 x小数部分的表达 式 x-(int)x 。
〔假设 x为12.345,那么表达 式的结果为0.345〕
三、次序 运行 结果分析题
1.
#include <stdio.h>
main( )
{ int a = 5, b = 4, x, y;
x = 2 * a++ ;
printf("a=%d, x=%d\n", a, x);
y = --b * 2 ;
printf("b=%d, y=%d\n", b, y);
}
那么次序 运行 结果是:
a=6, x=10
b=3, y=6
2.
#include<stdio.h>
void fun1(int x)
{ x=20;}
void fun2(int b[4])
{ int j;
for(j=0; j<4; j++) { b[j]=j; }
}
main()
{ int x = 10;
int a[4] = {1,2,3,4}, k;
fun1(x);
printf("x = %d\n", x);
fun2(a);
for(k=0; k<4; k++)
{ printf("%d\n", a[k]); }
}
运行 结果是:
x = 10
0
1
2
3
3.
#include <stdio.h>
main()
{ int x, y;
scanf("%2d%*4s%2d", &x, &y);
printf("%d", y-x);
}
次序 运行 时输出:123456789↙
那么次序 运行 结果是:66
4.
#include <stdio.h>
struct date
{ int year;
int month;
int day;
};
void func(struct date p)
{ p.year = 2000;
p.month = 5;
p.day = 22;
}
main()
{ struct date d;
d.year = 1999;
d.month = 4;
d.day = 23;
printf("%d,%d,%d\n", d.year, d.month, d.day);
func(d);
printf("%d,%d,%d\n", d.year, d.month, d.day);
}
次序 运行 结果为:
1999,4,23
1999,4,23
5.
#include<stdio.h>
void Fun(int *y)
{ printf("*y = %d\n", *y);
*y += 20;
printf("*y = %d\n", *y);
}
main()
{ int x = 10;
printf("x = %d\n", x);
Fun(&x);
printf("x = %d\n", x);
}
次序 运行 结果是:
x = 10
*y = 10
*y = 30
x = 30
6. 当运行 以下次序 时,运行 结果是____4332____。
#include <stdio.h>
int main()
{ int s[12] = {1,2,3,4,4,3,2,1,1,1,2,3}, c[5] = {0}, i;
for(i = 0; i < 12; i++) c[ s[i] ] ++;
for(i = 1; i < 5; i++) printf("%d",c[i]);
printf("\n");
return 0;
}
7.当运行 以下次序 时,运行 结果是___________ ___。
#include <stdio.h>
#define N 10
float fun(float *array, int n);
float max, min;
int main()
{ float score[N]={90,80,70.5,98,60.5,95,53,85,75,90};
printf("max = %6.2f\nmin = %6.2f\naverage = %6.2f\n",max,min,fun(score,N));
return 0;
}
float fun(float *array, int n)
{ int i;
float sum=array[0];
max=min=array[0];
for( i=1;i<n;i++)
{ if(array[i]>max)max = array[i];
else if(array[i]<min) min = array[i];
sum = sum + array[i];
}
return sum/n;
}
8.当运行 以下次序 时,从键盘输出如下内容并回车:95 56 75 88 85 ,那么下面次序 的运行 结果是_____________________〔输出共2行〕。
#include <stdio.h>
void input( float *a, int n )
{ float *pData, *pEnd;
pData = a, pEnd = &a[n-1];
while( pData <= pEnd) scanf( "%f", pData++ );
}
float sum( float *a, int n )
{ float s = 0;
float *pData, *pEnd;
pData = a, pEnd = &a[n-1];
while( pData <= pEnd) s += *pData++;
return s;
}
int mink( float *a, int n )
{ float *pData, *pEnd, *pKData;
pData = a, pEnd = &a[n-1], pKData = a;
while( ++pData <= pEnd)
{if ( *pData < *pKData ) pKData = pData; }
return pKData - a;
}
main()
{ float a[5];
int k;
input( a, 5 );
printf( "Sum=%6.2f\n", sum(a,5) );
k = mink( a, 5 );
printf( "Min:a[%d]=%6.2f\n", k, a[k] );
}
Sum =399.00
Min:a[1] = 56.00
9.有以下次序
#include <stdio.h>
main()
{ FILE *fp; int a[10]={1,2,3},i,n;
fp=fopen("d1.dat","w");
for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);
fprintf(fp,"\n");
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d",&n);
fclose(fp);
printf("%d\n",n);
}
次序 的运行 结果是 123 。
四、次序 填空题
阅读 次序 ,在标有下划线的空白 处填入适当 的表达 式或语句,使次序 残缺并符合 题目 恳求 。
1. 从键盘任意 输出一个年号,揣摸 它是否 是闰年。假设 是闰年,输出“Yes〞,否那么输出“No〞。已经清楚 符合 以下条件 之一者是闰年:
能被4整除,但不克不迭 被100整除。
能被400整除。
#include <stdio.h>
main()
{
int year, flag;
printf("Enter year:");
scanf("%d", &year );
if ( year%4==0&&year%100!=0 || year%400==0 )
{
flag = 1;
}
else
{
flag = 0;
}
if ( flag )
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
2. 编程揣摸 m是否 为素数。
#include <stdio.h>
#include <math.h>
int IsPrime(int m);
main()
{
int n, flag;
printf("Input n:");
scanf("%d", &n);
flag = IsPrime(n);
if (flag)
{
printf("它是素数\n");
}
else
{
printf("它不是素数\n");
}
}
int IsPrime(int m)
{
int i, k;
if (m <= 1)
{
return 0;
}
for (i=2; i<=sqrt(m); i++)
{
k = m % i;
if (k == 0)
{
return 0;
}
}
return 1 ;
}
3.以下次序 在数组a中同时查寻 最大年夜 元素下标跟 最小元素下标,分不存放在main函数的变量max跟 min中,请补齐呼应 代码使次序 可以 精确 运行 。
#include <stdio.h>
void find(int *a, int n, int *max, int *min)
{
int i;
*max = *min = 0;
for(i = 1; i < n; i++)
{
if( a[i] > a[*max])
____ *max=i ___;
else if(a[i] < a[*min])
____ *min=i _____;
}
}
int main()
{ int a[] = {5,9,7,8,2,6,3};
int max,min;
find(_____a,7,&max,&min ______);
printf("max = a[%d],min = a[%d]\n",max,min);
return 0;
}
精选可编辑
展开阅读全文