资源描述
答题说明:要求所有解答均写在答题卡上,否则无效。
一、填空题(每空1分,共20分)
1. 数组名做函数实参时,它和对应形参之间数据传递方式是 。
2. 自定义函数的形参放在内存的 存储区。
3. 若有定义int a=3, b=6, c;则执行语句c = a / b +3.5;后,c的值为 。
4. 表示“x ≥10或y+z ≥ 6”的C表达式是_______ 。
5. 若输入字符‘A’,在以下while语句执行后ch的值为 。
while (ch = getchar ( )= = ‘A’);
6. 已知 int a[ ]={1,3,5,7,9}, *p=a, *q; q=p+2; 则执行下列语句printf ( “%d”, *q++);后的输出结果为 。
7. 已知int i=10;表达式 “11<= i <=9; ” 的值是 。
8. 字符串存储时,末尾被系统自动加上 字符。
9. 若定义char str1[ ]= “ABcd”, str2[ ]= “abCD”;则表达式strcmp (str1,str2)>0;的值为 。
10. 在说明语句:int *f ( );中,标识符f代表的是 。
11. 逗号表达式 “(a=3*5,a*2), a+10; ” 的值是 。
12. 若定义数组int a[ ]={1,2,3,4,5,6};,则该数组元素a[a[2]+1]的值为 。
13. 已知int i=1; 执行语句while (i++<4) ;后,变量i的值为 。
14. 定义char str[20]; 如果想通过调用标准库函数完成字符数组str的输入,则实现方式为 。
15. 下面的for语句:for ( x=0, y=10; (y>0) && (x<4); x++, y-- ) ;共执行的循环次数为_ _次。
16. 程序设计常采用模块化的思想,C语言中子模块通常用 来实现。
17. 若希望产生1~6之间的随机数,则正确的C表达式为n =__ __。
18. 若有以下定义:int a=20, *p=&a; 执行语句a=*p-10; 后a的值是 。
19. 根据文件的存储形式,文件可分为二进制文件和 文件。
20. 设有如下定义语句:FILE *fp;若要以只读方式打开一个二进制文件file.dat,则正确的语句应为fp = fopen (“file.dat”, “ ”);。
二、阅读程序(每题5分,共30分)
1. 下列程序运行的结果是: 。
#include <stdio.h>
#define T 10
#define MD 3*T
void main ( )
{
int digit;
long t=12 , s;
s=30/MD;
while (t > 0)
{
digit = t % 10;
s = s + digit * digit;
t = t / 10;
}
printf (“%ld”, s);
}
2. 若输入字符串“Amaze!”,则以下程序的输出结果是: 。
#include <stdio.h>
void main ( )
{
char ch;
while ( (ch = getchar ( ) )!= ‘\n’ )
{ if ( (ch>=’a’ && ch<=’z’) | | ( ch>=’A’ && ch<=’Z’) )
{ ch--;
if ( ch==64 | | ch==96 ) ch += 26;
}
printf ( “%c”, ch );
}
}
3. 下列程序运行的结果是: 。
#include <stdio.h>
void main ( )
{
int a=1,b=0;
do
{ switch (a)
{case 1: b=0;
case 2: b=-1; break;
default : b=1;
}
a=a+b;
b=2*a;
}while (!b);
printf ( “a=%d, b=%d”, a, b);
}
4. 下列程序运行的结果是: 。
#include <stdio.h>
int fun ( )
{
auto int x=1;
static int y=1;
x+=2;
y+=2;
return x+y;
}
void main ( )
{
int a,b;
a=fun ( );
b=fun ( );
printf(“%d,%d\n”, a,b);
}
5. 下列程序运行的结果是: 。
#include <stdio.h>
void p (int *x, int y)
{
++*x;
y--;
}
void main ( )
{
int x=0,y=3;
p (&x, y);
printf ( “%d, %d”, x, y );
}
6. 下列程序运行的结果是: 。
#include<stdio.h>
void sum (int *a)
{
a[0] = a[1];
}
void main ( )
{
int aa[5]={1,2,3,4,5}, i;
for ( i=2; i>=0; i--)
sum (&aa[i]);
printf ( “%d \n”, aa[0]);
}
三、程序填空(每空2分,共20分)
1. 以下程序的功能是从键盘输入一个整数,判断该整数是否为素数。
#include <stdio.h>
#include (1)
int isprime(int a)
{
int i;
for ( i=2; i<=sqrt (a); i++)
if ( (2) ) return 0;
return 1;
}
void main ( )
{
int iNumber;
printf (“请输入一个整数:”);
scanf (“%d” , &iNumber);
if ( (3) )
printf (“%d是素数” , iNumber);
else
printf (“%d不是素数” , iNumber);
}
2. 以下程序的功能是将数组中的元素按反序存放并输出。
#include <stdio.h>
void invert (int *p, int n)
{
int i, temp, *q;
q= (4) ;
for ( i=1; i<n/2; i++)
{temp=*p;
*p=*q;
*q=temp;
p++;
(5) ;
}
}
void main ( )
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *pa;
(6) ;
invert (pa,10);
for( (7) )
printf ( "%3d", a[i] );
}
3. 以下程序的功能是用利用折半查找法,在不超过100个数中查找指定的数据。
#include<stdio.h>
#define N 100
void main()
{
int n,a[N],m,t,b,i,find,x;
scanf("%d",&n);
printf(“请按从小到大的顺序输入数据:”);
for ( i=0;i<n;i++)
scanf("%d",&a[i]);
printf(“请输入要查找的数值:”);
scanf("%d", &x);
t=0;b=n-1;find=0;
do
{
(8) ;
if (a[m]==x )
{
printf("找到了%3d,是 a[%d]\n",x,m);
find = 1;
}
else if ( (9) ) b = m - 1;
else t = m + 1;
} while( (10) );
if( find == 0 )
printf(“%3d 没有找到.\n",x);
}
四、编程题(每题10分,共30分)
1. 输入n的值,输出如图所示高为n的等腰三角形(例如,下图为n=6时的等腰三角形)。
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
2. 求这样一个三位数,该三位数等于其每位数字的阶乘之和(通过调用自定义函数计算阶乘)。即: abc = a! + b! + c!
3. 从键盘输入一行字符,统计其中字母、空格、数字以及其它字符的个数。
答题卡
一、填空题:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
二、阅读程序写结果:
1.
2.
3.
4.
5.
6.
三、程序填空题:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
四、编程题:
7
展开阅读全文