c语言模拟考试2

一.选择
1.以下程序的输出结果是
void sub(int x, int y, int *z)
{ *z = y - x; }
main()
{ int a, b, c;
sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c);
printf(“%d, %d, %d\n”, a, b, c);
}

A、-5, -12, -7
B、-5, -12, -17
C、5, -2, -7
D、5, 2, 3
2.若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
的语句为()。
A、printf("%d",*p[5]);
B、printf("%d",p[5]);
C、printf("%d",*(p+5));
D、printf("%d",*(a+5));
3.下列字符序列中,是C语言保留字的是()。
A、include
B、sizeof
C、sqrt
D、scanf
4.设j和k都是int类型,则下面的for循环语句()。
for(j=0,k=0;j<=9&&k!=876;j++) scanf("%d",&k);
A、最多执行9次
B、循环体一次也不执行
C、最多执行10次
D、是无限循环
5.运行以下程序后,输出的结果是
main()
{ int k = -3;
if(k <= 0)
printf(“****\n”),
else printf(“&&&&\n”);
}

A、****
B、有语法错误不能通过编译
C、&&&&
D、****&&&&
6.在C语言中,要求运算数必须是整型的运算符是()。
A、>
B、%
C、!
D、^
7.以下叙述中正确的是
A、在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式
B、a是实型变量,C允许以下赋值a=10,因此可以这样说实型变量中允许存放整型值。
C、执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0
D、已有a=3, b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3
8.static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'}; 说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存
储方式,其中被初始化的下标变量是()。
A、a[10]
B、a[0]
C、a[1]
D、a[-1]
9.以下不能对二维数组a进行正确初始化的语句是()。
A、int a[2][3]={0};
B、int a[2][3]={{1,2},{3,4},{5,6}};
C、int a[][3]={{1,2},{0}};
D、int a[][3]={1,2,3,4,5,6};
10.以下程序的输出结果是 。
main()
{ struct cmplx
{ int x;;
int y;
}cnum[2] = {1, 3, 2, 7};
printf(“%d\n”, cnum[0].y / cnum[0].x * cnum[1].x);
}

A、0
B、3
C、6
D、1

二.判断

1.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。
2.C语言中"%"运算符的运算对象必须是整型.
3.如果被调用函数的定义出现在主调函数之前,可以不必加以声明.
4.7&3+12的值是15。
5.C程序中有调用关系的所有函数必须放在同一个源程序文件中。

三.填空

1.以下程序的输出结果是_____。
main()
{ int a = 3, b = 2, c = 1;
c -= ++b;
b *= a + c;
{ int b = 5, c = 12;
c /= b * 2;
a -= c;
printf(“%d, %d, %d, ”, a, b, c );
a += --c;
}
printf(“%d, %d, %d\n”, a, b, c);
}

2.以下程序的输出结果是_____ 。
#include “st

ring.h”
#include “ctype.h”
void fun(char str[])
{ int i, j;
for(i = 0, j = 0; str[i]; i++)
if(isalpha(str[i]) )
str[j ++] = str[i];
str[j] = ‘\0’;
}
main()
{ char ss[80] = “it is!”;
fun(ss);
printf(“%s\n”, ss);
}


3.若有以下定义,请写出以下程序段中输出语句执行后的结果。
(1)_____(2)_____(3)_____
int i = -200, j =2500;
printf(“(1) %d %d”, i, j);
printf(“(2) i = %d, j = %d\n”, i, j);
printf(“(3) i = %d\n j = %d\n”, i, j);


4.若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入
10、20、30、40,正确的输入形式是_____。请用代表Enter键。
scanf(“%d%c%d%c%d%c%d%c”, &w, &a, &x,&b, &y, &c, &z, &d);

5.函数 void fun(float *sn, int n)的功能是根据以下公式计算S,计算结果通过形参指针
sn传回,n通过形参传入,n的值大于等于0。请填空。

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;
}

6.以下程序的输出结果是_____。
int ast(int x, int y, int *cp, int *dp)
{ *cp = x + y;
*dp = x - y;
}
main()
{ int a, b, c, d;
a = 4; b = 3;
ast(a, b, &c, &d);
printf(“%d %d\n”, c, d);
}

7.若输入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”);
}


8.设变量a的二进制数是00101101,若想通过运算a^b使a的高4位取反,低4位不变,
则b的二进制数应该是_____。

9.假定以下程序经编译和链接后生成可执行文件PROG.EXE,如果在DOS提示符下键入
PROG ABCD EFGH iJKL(此处代表Enter键)
则输出结果为:_____。
main()
{ while( -- argc > 0 )
printf(“%s”, argv[argc] );
printf(“\n”);
}

10.以下程序的输出结果是_____。
fun( int x , int *s)
{ int f1, f2;
if( n == 1 || n == 2) *s = 1;
else
{ fun( n - 1, &f1) ;
fun(n - 2, &f2);
*s = f1 + f2;
}
}
main()
{ int x;
fun(6, &x);
printf(“%d\n”, x );
}


四.程序设计

/*------------------------------------------------
【程序设计】
--------------------------------------------------

功能:找出一批正整数中的最大的偶数。

------------------------------------------------*/

#include
void out();

int fun(int a[],int n)
{

/

**********Begin**********/






/********** End **********/

}

main()
{
int a[]={1,2,9,24,35,18},k;
k=fun(a,6);
printf("max=%d\n",k);
out();
}

void out()
{
FILE *IN,*OUT;
int iIN[10],iOUT,i,j;
IN=fopen("28.IN","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..it May Be Changed");
}
OUT=fopen("28.out","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. it May Be Changed");
}
for(j=0;j<10;j++)
{
for(i=0;i<10;i++)
fscanf(IN,"%d",&iIN[i]);
iOUT=fun(iIN,10);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}

五.程序改错

1./*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:判断m是否为素数,若是返回1,否则返回0。

------------------------------------------------------*/
#include
/**********ERROR**********/
void fun( int n)
{
int i,k=1;
if(m<=1) k=0;
/**********ERROR**********/
for(i=1;i/**********ERROR**********/
if(m%i=0) k=0;
/**********ERROR**********/
return m;
}

void main()
{
int m,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0) printf("\n");
}
}

2./*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:求1到20的阶乘的和。

------------------------------------------------------*/
#include
fun()
{
int n,j;
float s=0.0,t=1.0;
for(n=1;n<=20;n++)
{
/**********ERROR**********/
s=1;
for(j=1;j<=n;j++)
/**********ERROR**********/
t=t*n;
/**********ERROR**********/
s+t=s;
}
/**********ERROR**********/
printf("jiecheng=%d\n",s);
}

main()
{
fun();
}

六.程序填空

1./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:产生并输出杨辉三角的前七行。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

-------------------------------------------------------*/
#include
main ( )
{
int a[7][7];
int i,j;
for (i=0;i<7;i++)
{
a[i][0]=1;
/**********FILL**********/
_____
}
for (i=2;i<7;i++)
/**********FILL**********/
for (j=1;j<_____;j++)
/**********FILL**********/
a[i][j]= _____;
for (i=0;i<7;i++)
{
/**********FILL**********/
for (j=0; _____;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}

2./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:

删除字符串中的指定字符,字符串和要删除的字符均由键盘
输入。

-------------------------------------------------------*/

#include
main()
{
char str[80],ch;
int i,k=0;
/**********FILL**********/
gets(_____);
ch=getchar();
/**********FILL**********/
for(i=0;_____;i++)
if(str[i]!=ch)
{
/**********FILL**********/
_____
k++;
}
/**********FILL**********/
_____
puts(str);
}


3./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:已定义一个含有30个元素的数组s,函数fun1的功能是按
顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序
每五个元素求一个平均值, 并将该值存放在数组w中。

-------------------------------------------------------*/
#include
long int s[30];
float w[6];
fun1(long int s[])
{
int k,i;
for(k=2,i=0;i<30;i++)
{

/**********FILL**********/
_____
k+=2;
}
}
fun2(long int s[],float w[])
{
float sum=0.0;
int k,i;
for(k=0,i=0;i<30;i++)
{
sum+=s[i];
/**********FILL**********/
_____
{
w[k]=sum/5;
/**********FILL**********/
_____
k++;
}
}
}
main()
{
int i;
fun1(s);
/**********FILL**********/
_____;
for(i=0;i<30;i++)
{
if(i%5==0) printf("\n");
printf("%8.2f",s[i]);
}
printf("\n");
for(i=0;i<6;i++)
printf("%8.2f",w[i]);
}


4./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出
其和。

-------------------------------------------------------*/

#include
#include
main()
{
int i,n,sum;
sum=0;
/**********FILL**********/
_____
/**********FILL**********/
for(i=1; _____ ;i++)
/**********FILL**********/
if(_____)
if(i%2==0)
{
sum=sum+i;
n++;
printf("%6d",i);
/**********FILL**********/
if(_____)
printf("\n");
}
printf("\ntotal=%d",sum);
}

5./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:将一个数组中的元素按逆序存放。

-------------------------------------------------------*/
#include
#define N 7
main ()
{
static int a[N]={12,9,16,5,7,2,1},k,s;
printf("\n the origanal array:\n");
for (k=0;kprintf("%4d",a[k]);
/**********FILL**********/
for (k=0;k{
s=a[k];
/**********FILL**********/
_____
/**********FILL**********/
_____
}
printf("\n the c

hanged array:\n");
for (k=0;k/**********FILL**********/
_____ ("%4d",a[k]);
}


相关文档
最新文档