C语言程序设计真题-填空
填空
题号:4752
a为任意整数,能将变量a中的各二进制位均置1的表达式是:
空 1:
a = a | ~a
题号:9064
已知 int a[10] = {11, 2, 31, 4, 5, 6, 7, 8, 9, 10};
最大的元素的下标值是:
空 1:
2
题号:9464
函数体的前面是_____部分,其后面是_____部分。
空 1:
函数首部
空 2:
函数体
题号:10303
float 定义单精度实型变量,分配_____个字节的存储单元。
空 1:
4
题号:7861
int x = 2; z = (x++) - 1; 则 x 的值为_____。
空 1:
3
题号:8138
已知int x=2,y=3,z=4; 则表达式!(x+y)>z的值为:
空 1: 0
题号:9875
把a1、a2定义成单精度实型变量,并赋初值1的说明语句是:
空 1: float a1=1.0, a2=1.0;
题号:10114
执行下列语句的结果是:
a=3;
printf("%d,",++a);
printf("%d",a++);
空 1: 4,4
题号:8721
以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。请填空。
main()
{
float x, amax, amin;
scanf("%f", &x);
amax=x;
amin=x;
while(______)
{
if(x > amax) amax=x;
if(______) amin=x;
scanf("%f", &x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
空 1: x>=0
空 2: x<amin
题号:5656
若输入3个整数3 2 1,则以下程序的输出结果是:
void sub(int n, int uu[])
{
int t;
t = uu[n--];
t += 3 * uu[n];
n++;
if(t >= 10)
{
uu[n++] = t / 10;
uu[n] = t % 10;
}
else uu[n] = t;
}
main()
{
int i, n, aa[10] = {0};
scanf("%d%d%d", &n, &aa[0], &aa[1]);
for(i = 1; i < n; i++)
sub(i, aa);
for(i = 0; i <= n; i++)
printf("%d", aa[i]);
printf("\n");
}
空 1: 2721
题号:9012
已知 float a[3][4]; 则a数组中共有___个元素。
空 1: 12
题号:10772
以下程序运行时输出到屏幕的结果是 __ 。
#include <stdio.h>
#include <string.h>
void main()
{
int i=0, n=0;
char s[80], *p;
strcpy(s, "It is a book.");
for(p=s; *p!='\0'; p++)
if(*p==' ')
i=0;
else
if(i==0)
{
n++;
i=1;
}
printf("%d", n);
}
空 1: 4
题号:10920
以下程序的功能是:统计一个字符串中数字字符 “0” 到 “9” 各自出现的次数,统计结果保存在数组count中。例如,如果字符串为 “lenterschar4543123564879ffgh”,则统计结果为:1:2 2:1 3:2 4:3 5:2 6:1 7:1 8:1 9:1。试完善程序以达到要求的功能。
#include <stdio.h>
void fun(char *t, int count[])
{
char *p=t;
while((空1))
{
if(*p>='0' && *p<='9')
count[空2]++;
p++;
}
}
空 1: *p 或 *p!='\0' 或 p[0]!='\0'
空 2: *p - '0' 或 p[0] - '0'
题号:10495
执行下面两个语句,输出的结果是________。
char c1=97, c2=98;
printf("%d,%c", c1, c2);
空 1: 97,b
题号:10534
以下程序的运行结果是______ 。
#include <stdio.h>
main()
{
int a=123, b=456, o, p, q, x, y, z;
long vi;
o = a / 100;
p = a / 10 % 10;
q = a % 10;
x = b % 10;
y = b / 100;
z = b % 100 / 10;
vi = p * 100000L + x * 10000L + q * 1000 + z * 100 + o * 10 + y;
printf("%ld", vi);
}
空 1: 263514
题号:9172
执行语句 char str[81]="abcdef"; 后,字符串 str 结束标志存储在 str[______] 中。
空 1: 6
题号:9623
若 a 是 int 型变量,且 a 的初值为 5,则计算表达式 a += 1 后 a 的值为______ 。
空 1: 6
题号:10332
下列程序的运行结果是______ 。
main()
{
unsigned x1;
int b = -1;
x1 = b;
printf("%u", x1);
}
空 1: 65535
题号:2138
函数 void fun(float *sn, int n) 的功能是根据以下公式计算 S,计算结果通过形参指针 sn 传回,n 通过形参传入,n 的值大于等于 0。请填空。
$$
S = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \dots + (-1)^n \frac{1}{2n+1}
$$
void fun(float *sn, int n)
{
float s = 0.0, w, f = -1.0;
int i = 0;
for (i = 0; i <= n; i++)
{
f = ______ * f;
w = f / (2 * i + 1);
s += w;
}
______ = s;
}
空 1: -1
空 2: * sn
题号:6721
以下程序的运行结果是______ 。
#include <string.h>
typedef struct student
{
char name[10];
long sno;
float score;
} STU;
main()
{
STU a = {"Zhangsan", 2001, 95},
b = {"Shangxian", 2002, 90},
c = {"Anhua", 2003, 95},
d = a,
*p = &d;
if (strcmp(a.name, b.name) > 0)
d = b;
if (strcmp(c.name, b.name) > 0)
d = c;
printf("%ld %s\n", d.sno, p->name);
}
空 1: 2002 Shangxian
题号:8609
以下程序运行时输出到屏幕显示的结果是(______)。
#include <stdio.h>
int fun(int x)
{
static int c, y;
if (c == 0)
y = 1;
else
y = y + x;
c++;
return y;
}
void main()
{
int i;
for (i = 0; i < 2; i++)
printf("%d ", fun(2));
}
空 1: 1 3
题号:2713
以下程序段的输出结果是______ 。
printf("%d\n", strlen("s\n\016\0end"));
空 1: 3
题号:9783
复制字符串的库函数是______ (只写函数名即可,如:printf)。
空 1: strcpy
题号:6459
以下程序的输出结果是______ 。
main()
{
char *p[] = {"BOOL", "OPK", "H", "SP"};
int i;
for (i = 3; i >= 0; i--, i--)
printf("%c", *p[i]);
printf("\n");
}
空 1: SO
题号:8452
以下程序运行后的输出结果是______ 。
#include <stdio.h>
main()
{
int k = 1, s = 0;
do
{
if ((k % 2) != 0)
continue;
s += k;
k++;
} while (k > 10);
printf("s=%d\n", s);
}
空 1: s=0
题号:505
计算机中内存储器的最小单位称为______ ,其中能容纳的数是______ 个。
空 1: 位
空 2: 0和1
题号:10204
以下程序将同时出现在数组 a 和 b 中的数据复制到数组 c 中。例如,如果数组 a 中的数据是 {8,5,7,1,6,4,9},数组 b 中的数据是 {2,9,3,7,4,5,10},则数组 c 中的结果数据为 {5,7,4,9}。以下程序中,in 函数判断 x 中存储的整数是否在 a 指向的数组前 n 个元素中出现,如果出现则函数返回 1,否则返回 0。请完善程序以达到要求的功能。
#include <stdio.h>
int in(int a[], int n, int x)
{
int i;
for (i = 0; i < n; i++)
if (a[i] == x) /* 空1 */
return 1;
return 0;
}
main()
{
int a[7] = {8, 5, 7, 1, 6, 4, 9};
int b[7] = {2, 9, 3, 7, 4, 5, 10};
int c[7] = {0};
int i, j = 0;
for (i = 0; i < 7; i++)
if (in(b, 7, a[i])) /* 空2 */
c[j++] = a[i];
for (i = 0; i < j; i++) /* 空3 */
printf("%d ", c[i]);
printf("\n");
}
空 1: a[i] == x
空 2: in(b, 7, a[i])
空 3: i < j
题号:7906
设 x 的值为 15,n 的值为 2,则表达式 x %= (n += 3) 运算后 x 的值是______ 。
空 1: 0
题号:8005
int x = 2, y = 2, z = 2; x = (y == z); 则 x 的值为______ 。
空 1: 1
题号:11414
以下 C 程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令中给出。请填空。
#include <stdio.h>
main(int argc, char *argv[])
{
FILE *f1, *f2; /* 空1 */
char ch;
if (argc < 3)
{
printf("命令行参数错!\n");
exit(0);
}
f1 = fopen(argv[1], "r");
f2 = fopen(argv[2], "w");
while ((ch = fgetc(f1)) != EOF)
fputc(ch, f2);
fclose(f1);
fclose(f2);
}
空 1: FILE
题号:7535
设 C 语言中,int 类型数据占 2 个字节,则 long 类型数据占______ 个字节,short 类型数据占______ 个字节。
空 1: 4
空 2: 2
题号:9436
已知字符 'a' 的 ASCII 码值为 97,执行下面语句后,输出的结果是______ 。
char c1 = 97, c2 = 98;
printf("%d %c", c1, c2);
空 1: 97 b
题号:9297
已知 int b[] = {1, 2, 4}; 则 b 数组中含有______ 个元素。
空 1: 3
题号:7870
为了避免嵌套条件语句的二义性,C 语言规定 else 与其前面最近的未配对的且在同一复合语句内的______ 配对。
空 1: if
题号:1797
以下程序段,要求通过 scanf 语句给变量赋值,然后输出变量的值。写出运行时给 k 输入 100,给 a 输入 25.81,给 x 输入 1.89234 时的三种可能的输入形式___、___ 、___ 。
int k;
float a;
double x;
scanf("%d%f%lf", &k, &a, &x);
printf("k = %d, a = %f, x = %f\n", k, a, x);
空 1: 100 25.81 1.89234
空 2: 100 25.81 1.89234
空 3: 100 25.81 1.89234
题号:2389
给出以下程序,其功能是将a矩阵和b矩阵合并成c矩阵,最后将c矩阵按格式输出。请填空。
#include <stdio.h>
main()
{ int a[3][4] = {{3, 1, 7, 5},{1, 2, 4, 3},{6, 3, 0, 2}};
int b[3][4] = {{2, 3, 1, 4},{5, 1, 3, 6},{1, 5, 2, 3}};
int i, j, c[3][4];
for(i = 0; i < 3; i++)
for(j = 0; j < 4; j++)
c[i][j] = ______ ;
for(i = 0; i < 3; i++)
{ for(j = 0; j < 4; j++)
pritnf("%5d", c[i][j]);
______;
}
}
答案:
空1: a[i][j] + b[i][j]
空2: printf("\n") 或 printf("\n");
题号:10559
有以下程序段:
s=1.0;
for(k=1; k <=n; k++)
s=s + 1.0 /(k *(k + 1));
printf("%f\n", s);
请填空,使下面的程序段的功能完全与之等同。
s=0.0;
d=1.0;
k=0;
do
{ s +=d;
k++;
d=1.0 /(k *(k + 1));
}while(______);
答案:
空1: n>=k 或 k<=n
题号:4474
填空:当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是______ 、最小十进制整数是______ ,它们的二进制形式是______ 。
答案:
空1: 65535
空2: -32768
空3: 1111 1111 1111 1111, 1000 0000 0000 0000
题号:7801
填空:当a=1,b=2,c=3时,执行以下程序段后a=______。
if(a>c) b=a; a=c; c=b;
答案:
空1: 3
题号:8100
填空:int x=2; z=x++-1; 则z的值为______ 。
答案:
1
题号:7440
填空:C程序的基本组成单位是______ 。
答案:
空1: 函数
题号:11140
填空:设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 ______。
(假设char型占一个字节,int型占2个字节,double型占4个字节)
struct stud {
char num[6];
int s[4];
double ave;
} a,*p;
答案:
空1: 18
题号:10779
填空:设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 ______。
struct stud {
char name[10];
float s[4];
double ave;
} a,*p;
答案:
空1: 34
题号:8860
填空:已知 int a[10]={3,2,4,1,5,6,7,8,9,10}; 最小的元素的下标值是______ 。
答案:
空1: 3
题号:10783
填空:以下程序求方程的一个近似根。root函数采用二分法计算并返回方程f(x)=0在[a,b]内的一个近似根,main函数调用root函数求方程cos(x)=0在[0,3.14]内的一个近似根。试完善程序以达到要求的功能。
#include <stdio.h>
#include <math.h>
double root(double a,double b,double(*f)(double))
{
double x,y;
if(______)
{
printf("区间内可能无根\n");
return 0;
}
do {
x=______;
y=f(x);
if(______>0) a=x;
else b=x;
} while(fabs(y)>1e-6);
return x;
}
main()
{
double x;
x=root(0.0,3.14,______);
printf("方程的一个近似根为%f\n",x);
}
答案:
空1: f(a)*f(b)>0
空2: (a+b)/2
空3: y*f(a) 或 f(x)*f(a)
空4: cos
题号:7579
填空:已知:int i=8,j=6,m,n; m=i+1; n=j+4; 问语句执行后m=, n=。
答案:
空1: 9
空2: 10
题号:7996
填空:以下程序运行时输出到屏幕的结果是(______)。
#include <stdio.h>
void fun(int m,int n)
{
if(m>=n)
printf("%d",m);
else
fun(m+1,n);
printf("%d",m);
}
void main()
{
fun(1,2);
}
答案:
空1: 2 2 1
题号:11080
填空:设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 ______。
struct stud {
char num[6];
float s[4];
double ave;
} a,*p;
答案:
空1: 30
题号:11308
填空:若有定义:int a[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是______.
答案:
空1: 8
题号:8040
填空:设int x; 经x=5>(1+2)运算后,x的值为______.
答案:
空1: 1
题号:10905
填空:若有以下定义和语句:int a[5]={1,3,5,7,9},*p; p=&a[2]; 则++(*p)的值是______ .
答案:
空1: 6
题号:4473
填空:有以下程序段:
s = 1.0;
for(k = 1; k <= n; k++)
s = s + 1.0 / (k * (k + 1));
printf("%f\n", s);
请填空,使下面的程序段的功能完全与之等同。
s = 0.0;
______;
k = 0;
do
{ s += d;
______;
d = 1.0 / (k * (k + 1));
}while(______);
printf("%f\n", s);
答案:
空1: d = 1.0
空2: k++
空3: k <= n
题号:9865
填空:设有以下共用体类型说明和变量定义,则变量d在内存所占字节数是 ___ 。
union stud {
short int num;
char name[8];
float score[3];
double ave;
} d,stu[3];
答案:
空1: 12
题号:8311
填空:假设有条件 int x=1,y=2,z=3; 则表达式 z=x<y?x:y 的值是______ .
答案:
空1: 1
题号:8033
填空:当 int a=2,b=3,c=4; 时,执行以下程序段后 b=______.
if(a<b) b=a; a=b; c=a;
答案:
空1: 2
题号:8256
设int w=5;w+=-2;则w的值为___ .
答案:
空 1: 3
题号:1851
以下C程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令中给出。请填空。
#include <stdio.h>
main( int argc, char *argv[])
{ FILE *f1, *f2;
char ch;
if(argc <______)
{ printf("命令行参数错!\n");
exit(0);
}
f1 = fopen(argv[1], "r");
f2 = fopen(argv[2], "w");
while( _______ )
fputs( fget(f1), _______ );
_______;
_______;
}
答案:
空 1: 3
空 2: !feof(f1)
空 3: f2
空 4: fclose(f1)
空 5: fclose(f2)
题号:4765
以下程序编译、链接后生成可执行文件cpy.exe。假定磁盘当前目录下有
三个文本文件,其文件名和内容分别为:
文件名 内容
a aaaa#
b bbbb#
c cccc#
当在DOS当前目录下键入:cpy a b c<CR>,则程序输出______ 。
#include <stdio.h>
void fc( FILE *);
main( int argc, char *argv[ ] )
{ FILE *fp;
int i = 1;
while( --argc > 0 )
{ fp = fopen(argv[i++], "r");
fc(fp);
fclose(fp);
}
}
void fc( FILE *ifp)
{ char c;
while( ( c = getchar () ) != '#' )
putchar( c - 32);
}
答案:
空 1: AAAABBBBCCCC
题号:8815
已知int i,s=0;执行以下程序段后的i的值是_______.
for(i=6;i<4;i++){s+=i;}
答案:
空 1: 6
题号:10087
若所用变量均已正确定义,则执行下面程序段后的i的值是_______.
for(i=0 ; i<2 ; i++) printf("YES");
答案:
空 1: 2
题号:3686
以下程序的输出结果是 ___ 。
void fun( )
{ static int a = 0;
a += 2; printf("%d ", a);
}
main()
{ int i;
for( i = 1; i < 4; i++)
fun();
printf("\n" );
}
答案:
空 1: 2 4 6
题号:9603
若x为int型变量,则执行以下两条语句后x的值是 ___ 。
x=7; x +=x -=x + x;
答案:
空 1: -14
题号:11230
若有定义:char ch,*p; 使指针p指向变量ch的赋值语句是 ___ 。
答案:
空 1: p=&ch; 或 p=&ch
题号:9684
C语言中,格式输入操作是由库函数 __ 完成的,格式输出操作是由库函数 ___ 完成的。
答案:
空 1: scanf
空 2: printf
题号:8807
以下程序运行时输出到屏幕的结果中,第一行是( ),第二行是( )。
#include <stdio.h>
#define M 3
#define N 4
void fun(int a[M][N])
{ int i, j, p;
for(i=0; i<M; i++)
{ p=0;
for(j=1; j<N; j++)
if(a[i][p]>a[i][j]) p=j;
printf("%d\n", p);
}
}
main()
{ int a[M][N]={{-1,5,7,4},{5,2,4,3},{8,2,3,0}};
fun(a);
}
答案:
空 1: -1
空 2: 2
题号:8020
int x=2,y=3,z=4; 则表达式(x+y)>!z的值为 ___
题号:10074
设z是int型变量,m为long型变量,则在16位微型机上执行赋值语句z=m=0xFFFF;后,z值为 ______。
答案:
空 1: -1
题号:561
阅读下面程序,程序执行后的输出结果是 ___ 。
#include "stdio.h"
main()
{
int x,y,z;
x = 1; y = 2; z = 3;
if(x>y)
if(x>z) printf("%d",x);
else printf("%d",y);
printf("%d\n",z);
}
答案:
空 1: 3
题号:8091
int x=2,y=3,z=4; 则表达式x+y>z&&y==z的值为 ___ 。
答案:
空 1: 0
题号:9553
以下程序的功能是将x字符串与y字符串连接并输出,请填空。注:程序中不能使用字符串连接函数。
#include <stdio.h>
main()
{ char x[80], y[40];
int a, h=0;
printf("Please input x string:");
gets(x);
printf("Please input y string:");
gets(y);
while(x[h]!='\0')
______;
______;
while(y[a]!='\0')
x[h++]=y[a++];
______;
puts(x);
}
答案:
空 1: h++
空 2: a=0
空 3: x[h]='\0'
题号:10952
以下程序的执行结果是 ___ 。
main()
{
int a, b, *p=&a, *q=&b;
a=10;
b=20;
*p=b;
*q=a;
printf("a=%d, b=%d\n", a, b);
}
答案:
空 1: a=20, b=20
。
答案:
空 1: 1
题号:7868
当int x=2,y=4,z=3时,执行以下程序段后z= __ 。
if(x>y) z=x-y; else z=x+y;
答案:
空 1: 6
题号:8822
以下程序的输出结果是 ______。
main()
{ int arr[10], i, k=0;
for(i=0; i < 10; i++)
arr[i]=i;
for(i=0; i < 4; i++)
k += arr[i] + i;
printf("%d\n", k);
}
答案:
空 1: 12
题号:8156
设int x=72,表达式x=(x>=60)的值为 ___ 。
答案:
空 1: 1
题号:551
请写出以下程序的输出结果 ___ 。
main()
{ int a = 100;
if( a > 100) printf("%d\n", a > 100);
else printf("%d\n", a <= 100);
}
答案:
空 1: 1
题号:13562
已知a=13,b=6,a&&b的十进制数值为 ___ 。
答案:
空 1: 1
题号:4073
若有以下定义,请写出以下程序段中输出语句执行后的结果。
int i = -200, j =2500;
printf("(1) %d %d", i, j);
printf("(2) i = %d, j = %d\n", i, j);
printf("(3) i = %d:j = %d\n", i, j);
答案:
空 1: -200 2500
空 2: i = -200,j = 2500
空 3: i = -200:j = 2500
题号:3299
若变量已正确定义,以下语句段的输出结果是 ___ 。
x = 0; y = 2; z = 3;
switch(x)
{
case 0: switch( y == 2 )
{ case 1: printf("*"); break;
case 2: printf("%"); break;
}
case 1: switch( z )
{ case 1: printf("$");
case 2: printf("*"); break;
default : printf("#");
}
}
答案:
空 1: *#
题号:6975
以下程序的输出结果是 __ 。
#include<stdio.h>
void main()
{
int x = 2;
while ( x-- );
printf("%d\n", x);
}
答案:
空 1: -1
题号:13792
设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是 ___ 。
for (x=0,y=0;y!=123&&x<3;x++) scanf ("%d",&y);
答案:
空 1: 3
题号:13854
若有以下数组a,数组元素:a[0]~a[9],其值为:9 4 12 8 2 10 7 5 1 3。该数组的元素中,数值最大的元素的下标是 ___ 。
答案:
空 1: 2
题号:13906
静态变量的类型说明符是 ___ 。
答案:
空 1: static
题号:13958
若有以下定义和语句:int a[5]={1,3,5,7,9},*p; p=&a[2]; 则++(*p)的值是 ___ 。
答案:
空 1: 6
题号:13989
设有以下结构类型说明和变量定义(假定int型数据占两个字节),则变量a在内存所占字节数是 __ 。
struct stud { char num[6]; int s[4]; double ave; } a,*p;
答案:
空 1: 22
题号:14022
以下C程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令中给出。请填空。
#include <stdio.h>
main( int argc, char *argv[])
{
FILE *f1, *f2;
char ch;
if(argc < 3)
{
printf("命令行参数错!\n");
exit(0);
}
f1 = fopen(argv[1], "______");
f2 = fopen(argv[2], "w");
while(!feof(f1))
fputs( fgets(f1), f2);
fclose(f1); fclose(f2);
}
答案:
空 1: r 或 r+

