资源描述
《C次第 方案 》期末复习练习 题及参考答案 (5)
一、单项选择 题
1. 以下对C次第 的描画中精确 的选项是〔 〕。
A) C次第 总是 从第一个定义 的函数开始实行 。
B) C次第 总是 从最后一个定义 的函数开始实行 。
√C) C次第 总是 从main()函数开始实行 。
D) C次第 中的main()函数必须 放在次第 的开始部分。
2. 以下四项中哪个是不合 法的常量〔 〕。
√A) 'xab' B) "x1f" C) 0x1234 D) 2.1e3
3. 以下四项中哪个是不合 法的用户标识符〔 〕。
A) temp B) my_program C) year2020 √D) int
4. 在C语言 中,表示 终了当前循环 的语句是〔 〕。
A) return语句 √B) break语句 C) continue语句 D) end语句
5. 以下4个变量定义 中,定义 p为指针数组的是〔 〕。
√A) int *p[10]; B) int (*p)( ); C) int **p; D) int (*p)[10];
6. 以下四项中哪个是合理 的函数阐明语句〔 〕。
√A) double func( int a, int b);
B) double func( int a, b );
C) double func( a, int b );
D) double func( a, b );
7. 设有定义 char c;且c表示 一个小写字母,结果为对应大年夜 写字母的表达 式是〔 〕。
A) c - a + A √B) c - 'a' + 'A' C) c - A + a D) c - 'A' + 'a'
8. 设有定义 int a;揣摸 a是一个偶数的表达 式是〔 〕。
A) a==2*n B) a/2==0 C) a%2 √D) a%2==0
9. 设有定义 int a; char c; 实行 输出语句scanf("%d%c",&a,&c);
假设 恳求 a跟 c掉 掉 落 的值为10跟 'Y',精确 的输出办法 是〔 〕。
A) 10,Y √B) 10Y C) 10.Y D) 10:Y
10. 设有定义 :int a[10]={6,7,8,9,10};精确 阐明 是〔 〕。
A) 将5个初值依次赋给a[1]至a[5]
√B) 将5个初值依次赋给a[0]至a[4]
C) 将5个初值依次赋给a[6]至a[10]
D) 将5个初值依次赋给a[5]至a[9]
11. 设有定义 :int i, a[10]; 以下能精确 输出a数组各元的语句是〔 〕。
A) i=10; scanf("%d", &a[i]);
√B) for(i=0; i<=9; i++) scanf("%d", a+i);
C) for(i=0; i<10; i++) scanf("%d", a[i]);
D) for(i=0; i<10; i++) scanf("%d", &a);
12. 设整数n的值为十进制-5, 以16位二进制存贮该数时,其编码是〔 〕。
A) 0000 0000 0000 0101 B) 1000 0000 0000 0101
C) 1111 1111 1111 1010 √D) 1111 1111 1111 1011
13. 设有定义 char *p[]={"Shanghai","Beijing","Honkong"};那么结果为'j'字符的表达 式是〔 〕。
A) p[3][1] √B) *(p[1]+3) C) *(p[3]+1) D) *p[1]+3
14. 以下文件函数中,用于将数据写到文件的函数是〔 〕。
A) fread B) fgets √C) fwrite D) fscanf
15. 有以下次第
#include <stdio.h>
main0
{ int y=9;
for( ; y>0;y--)
if(y%3==0) printf("%d",--y);
}
次第 的运行 结果是( )。
A)741 B)963 √C)852 D)875421
16. 下面的次第 运行 后输出结果是〔 〕。
#include <stdio.h>
void main()
{ int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++) a[i][j]=2*i+j;
for(i=0;i<8;i++) x+=a[i][j];
printf("%d",x);
}
A)9 B)不判定 值 √C)0 D)18
17. 下面次第 的输出结果是〔 〕。
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
√A)3 B)4 C)1 D)2
18. 有以下次第
#include <stdio.h>
main()
{ int a[ ]={1,2,3,4},y,*p=&a[3];
--p; y=*p;printf("y=%d\n",y);
}
次第 的运行 结果是〔 〕。
A)y=0 B)y=1 C)y=2 √D)y=3
19. 下面次第 的运行 结果是〔 〕。
#include <stdio.h>
void main()
{ char str[]="ABC", *p=str;
printf("%d\n",*(p+3));
}
A)67 √B)0 C)字符′C′的所在 D)字符′C′
20. 有以下次第
void ss(char *s,char t)
{ while(*s)
{ if(*s==t)*s=t-′a′+′A′;
s++; } }
main()
{ char str1[100]="abcddfefdbd",c=′d′;
ss(str1,c); printf("%s\n",str1);}
次第 运行 后的输出结果是〔 〕。
A)ABCDDEFEDBD √B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd
21. 有如下次第
main()
{ char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
该次第 的输出结果是〔 〕。
A)69825 B)63825 √C)6385 D)693825
22. 有以下次第
#include <stdio.h>
#include <string.h>
void fun(char *s[],int n)
{ char *t; int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i])>strlen(s[j])) { t=s[i]; s[i]=s[j]; s[j]=t; }
}
main()
{ char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};
fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);
}
次第 的运行 结果是〔 〕。
√A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc
23. 调用 函数时,当实参跟 形参全然 上 为全然 数据典范 的变量时,它们之间数据转达 的过程 是〔 〕。
A) 实参将其所在 转达 给形参,并释放 原本 占用的存储单元
B) 实参将其所在 转达 给形参,调用 终了时形参再将其所在 回传给实参
C) 实参将其值转达 给形参,调用 终了时形参再将其值回传给实参
√D) 实参将其值转达 给形参,调用 终了时形参并不将其值回传给实参
24. 以下数组定义 中差错 的选项是〔 〕。
A)int x[][3]={{0},{1},{1,2,3}};
B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
√C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)int x[][3]={1,2,3,4};
25. 设有以下阐明语句
typedef struct
{ int n;
char ch[8];
} PER;
那么下面表达 中精确 的选项是〔 〕。
A)PER 是构造体变量名 √B)PER是构造体典范 名
C)typedef struct 是构造体典范 D)struct 是构造体典范 名
26. 以下次第 的运行 结果是〔 〕。
#include <stdio.h>
void main()
{ char x[]="123456789",*p=x ;
int i=0;
while(*p)
{ if(i%2==0) *p='*';
p++; i++;
}
puts(x);
}
A)2*4*6*8* B)**** √C)*2*4*6*8* D) ********
27. 有以下次第
void f(int *q)
{int i=0;
for(;i<5; i++) (*q)++;
}
main()
{ int a[5] ={1,2,3,4,5}, i;
f(a);
for(i=0;i<5; i++) printf("%d,", a[i]);
}
次第 运行 后的输出结果是〔 〕。
A)2,2,3,4,5, √B)6,2,3,4,5, C)1,2,3,4,5, D) 2,3,4,5,6,
28. 有以下次第
# include <string.h>
main()
{ char p[20]={′a′, ′b′, ′c′, ′d′}, q[]="abc", r[]="abcde";
strcat(p, r); strcpy(p+strlen(q), q);
printf("%d\n",strlen(p));
}
次第 运行 后的输出结果是〔 〕。
A)9 √B)6 C)11 D)7
29. 在C语言 中,变量的隐含存储类不是
√A)auto B)static C)extern D)无存储类不
30. 有以下次第
#include <stdio.h>
main()
{ FILE *fp; int i=20, j=30, k, n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n", i); fprintf(fp,"%d\n", j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d", &k,&n); printf("%d %d\n", k, n);
fclose(fp); }
次第 运行 后的输出结果是〔 〕。
√A)20 30 B)20 50 C)30 50 D)30 20
二、填空题
1. 设有定义 :int n=123; float x=95.123; 写出语句
printf("%d,%5d,%-6.2f,%4.1f",n,n,x,x); 的运行 结果。
2. 设有定义 :float x=91.19; 写出表达 式 (int)x 跟 (int)(10*x+0.5)/10.0 的运算结果。
91
91.200000
3. 设n为正整数,写出掉 掉 落 n的十进制个位数跟 十位数的表达 式。
n%10
n/10%10
4. 设有命题:b介于a,c之间且a,b,c互不相当 ,写出对应的逻辑表达 式。
a<b&&b<c || c<b&&b<a
5. C语言 中用 于构造化次第 方案 的三种全然 构造是:次第 构造、选择 构造跟 循环 构造。
6. C语言 的数据典范 有:
a) 全然 典范 〔整型(int)、字符型(char)、单精度浮点型(float)、双精度浮点型(double)〕;
b) 列举 典范 〔enum〕;
c) 构造典范 〔指针典范 〔*〕,数组 ,构造体典范 (struct)、共用体典范 (union)〕
d) 空典范 〔void〕。
7. 数组是表示 典范 一样的数据,而构造体那么是假设 干典范 差异 数据项的聚拢 。
8. C 语言 次第 可以 由一个或多个源次第 文件形成 ;每个文件可包括 假设 干函数 但是 ,每个C次第 必须 有且仅有一个是名字为main的函数。
9. 假设一个函数只能被本文件中不的 函数所调用 ,它称为内部函数,在定义 这类函数时,在函数名跟 函数典范 前面需要 加关键 字 static 。
10. 假设 有定义 :int a[3][4]={{1,2},{0},{4,6,8,10}};,那么初始化后a[1][2]掉 掉 落 的初值是 0 ,*(a[2]+1)的值是 6 。
三、次第 运行 结果分析题
〔1〕次第 ,□表示 空格
#include <stdio.h>
main()
{
int i,j;
for ( i=1; i<=3; i++ )
{
for ( j=0; j<3-i; j++ )
putchar( '□' );
for ( j=0; j<i; j++ )
printf( "%-2d", i );
printf( "\n" );
}
}
输出:?
□□1□
□2□2□
3□3□3□
〔2〕次第
#include <stdio.h>
main()
{
char cmd;
do {
cmd = getchar();
switch ( cmd )
{
case 'A': puts( "Add Student" ); break;
case 'D': puts( "Del Student" ); break;
case 'Q': puts( "Quit" );
}
} while ( cmd!='Q' );
}
输出:ADQ
输出:?
Add Student
Del Student
Quit
〔3〕次第
#include <stdio.h>
main()
{
int m,n,s=0,i;
scanf( "%d%d", &m, &n );
for ( i=m; i<=n; i++ )
{
if ( i<n )
printf( "%d+", i );
else
printf( "%d=", i );
s += i;
}
printf( "%d\n", s );
}
输出:7 10
输出:?
7+8+9+10=34
〔4〕次第
#include <stdio.h>
char grade( float score )
{
if ( score >= 90 ) return 'A';
else if ( score>=80 ) return 'B';
else if ( score>=70 ) return 'C';
else if ( score>=60 ) return 'D';
else return 'E';
}
main()
{
float sc;char gr;int i;
for ( i=0; i<6; i++ )
{
scanf( "%f", &sc );
gr = grade( sc );
putchar( gr );
}
}
输出:50 60 70 80 90 100
输出:?
EDCBAA
〔5〕次第
#include <stdio.h>
#define N 10
main()
{
int a[N], i;
float ave=0,pass=0,fine=0;
for ( i=0; i<N; i++ )
scanf( "%d", &a[i] );
for ( i=0; i<N; i++ )
{
ave += a[i];
if ( a[i] >= 60 )
pass++;
if ( a[i] >= 90 )
fine++;
}
ave /= N;
pass = pass/N*100;
fine = fine/N*100;
printf( "Ave=%4.1f\nPass=%2.0f%%\nFine=%2.0f%%\n",ave,pass,fine );
}
输出:55 60 65 70 75 80 85 90 95 100
输出:?
Ave=77.5
Pass=90%
Fine=30%
〔6〕次第
#include <stdio.h>
void shift( int a[], int n, int s, int b[] )
{
int i;
for ( i=0; i<n; i++ )
b[i] = a[(i+s)%n];
}
main()
{
int a[6], b[6], i;
for ( i=0; i<6; i++ )
scanf( "%d", &a[i] );
shift( a, 6, 3, b );
for ( i=0; i<6; i++ )
printf( "%d ", b[i] );
}
输出:11 22 33 44 55 66
输出:?
44 55 66 11 22 33
〔7〕次第
#include <stdio.h>
int max( int a[], int n )
{
int x, i;
x = a[0];
for ( i=1; i<n; i++ )
if ( x < a[i] )
x = a[i];
return x;
}
main()
{
int m[6][5], i, j, x;
for ( i=0; i<6; i++ )
for ( j=0; j<5; j++ )
scanf( "%d", &m[i][j] );
for ( i=0; i<6; i++ )
{
x = max( m[i], 5 );
printf( "%d ", x );
}
}
输出:
11 19 18 15 16
28 20 21 22 24
31 33 35 37 36
60 60 66 66 60
55 54 53 52 51
40 41 42 43 44
输出:?
19 28 37 66 55 44
〔8〕次第
#include <stdio.h>
void getupper( char *p, char *q )
{
for ( ; *p!='\0'; p++ )
if ( *p>='A' && *p<='Z' )
*(q++) = *p;
*q = '\0';
}
int issym( char *p )
{
char *q;
for ( q=p; *q!='\0'; q++ ) ;
for ( q--; p<q; p++,q-- )
if ( *p != *q )
return 0;
return 1;
}
main()
{
char a[80], b[80];
gets( a );
puts( a );
getupper( a, b );
puts( b );
if ( issym(b) )
printf( "Yes\n" );
else
printf( "No\n" );
}
输出:abcA123B#$%C+-=B([{A}])
输出:?
abcA123B#$%C+-=B([{A}])
ABCBA
Yes
〔9〕次第
#include <stdio.h>
struct student /* 老师 信息 */
{
int num; /* 学号 */
char name[20]; /* 姓名 */
int score; /* 效果 */
int no;
};
void sca_stu( struct student stu[], int n )
{
int i;
for ( i=0; i<n; i++ )
scanf( "%d%s%d",
&stu[i].num, stu[i].name, &stu[i].score );
}
void prt_stu( struct student stu[], int n )
{
int i;
for ( i=0; i<n; i++ )
printf( "%d: %d %s %d\n",
stu[i].no, stu[i].num, stu[i].name, stu[i].score );
}
void sort_stu( struct student stu[], int n )
{
int i,j;
struct student t;
for ( i=0; i<n-1; i++ )
for ( j=0; j<n-1-i; j++ )
if ( stu[j].score < stu[j+1].score )
{
t = stu[j];
stu[j] = stu[j+1];
stu[j+1] = t;
}
stu[0].no = 1;
for ( i=1; i<n; i++ )
if ( stu[i].score == stu[i-1].score )
stu[i].no = stu[i-1].no;
else
stu[i].no = i+1;
}
main()
{
struct student stu[10];
int n;
scanf( "%d", &n );
sca_stu( stu, n );
sort_stu( stu, n );
prt_stu( stu, n );
}
输出:
3
1001 Zhao 88
1002 Qian 77
1003 Sun 99
输出:?
1: 1003 Sun 99
2: 1001 Zhao 88
3: 1002 Qian 77
四、次第 填空题
阅读 次第 ,在标有下划线的空白 处填入适当 的表达 式或语句,使次第 残缺并符合 题目 恳求 。
1.以下次第 从键盘上输出整数m跟 n,输出m到n之间〔包括 m跟 n〕的所有 “完数〞,完数是指:所有 因子之跟 等于 本身的整数,如28=1+2+4+7+14,因此28是一个完数。
如输出:1 28
那么输出:6 28
#include <stdio.h>
main( )
{
int m,n,i,j,s;
scanf( "%d%d", &m, &n );
for ( i=m; i<=n ; i++ )
{
s = 0;
for ( j=1; j<i; j++ )
if ( i%j==0 )
s += j;
if ( s==i )
printf( "%d ", i );
}
}
2.以下次第 从键盘上10个整数,输出其中 只出现一次的数,函数count的功能 是统计并前去 元素个数为n的数组a中数据x出现的次数。
如输出:12 36 72 36 87 99 87 87 12 35
那么输出:72 99 35
#include <stdio.h>
int count( int a[ ], int n, int x )
{
int i,ct=0;
for ( i=0; i<n; i++ )
if (a[i]==x )
ct++;
return ct ;
}
main()
{
int a[10],i;
for ( i=0; i<10; i++ )
scanf( "%d", &a[i] );
for ( i=0; i<10; i++ )
if ( count(a,10,a[i] ) == 1 )/*调用 函数揣摸 是否 1次*/
printf( "%d ", a[i] );
printf( "\n" );
}
精选可编辑
展开阅读全文