当前位置:文档之家› c语言模拟题1(有答案)

c语言模拟题1(有答案)

c语言模拟题1(有答案)
c语言模拟题1(有答案)

模拟题1

一、单选题(本大题10小题,每题2分,共20分)

1.C语言表达式a=15,a%6的值是_______A

A.3

B.5

C.非法表达式

D.15

2.循环语句中,continue语句的作用是______A

A.结束本次循环

B.跳出子函数

C.|

D.从本循环体内跳出

E.终止程序

3.定义一个返回值为int 的无参函数cacul的正确语句是______C

A.void cacul(void);

B.void cacul(int);

C.int cacul();

D.int cacul;

4.下面运算优先级按从高到低的排列正确的是_____A

A.条件运算赋值运算逗号运算

B.算术运算逻辑运算关系运算

C.】

D.逻辑运算关系运算赋值运算

E.位运算算术运算赋值运算

5.以下叙述中,正确的是_____B

A.C程序中,main函数必须位于程序最前面

B.C语言本身没有输入和输出语句

C.在对一个C程序进行编译的过程中发现注释中的拼写错误

D.C程序中每行中只能写一个语句

6.数组age[2][4]的非法引用是________A

A.age[3][0]

B.&age[0][0]

C.>

D.age[0][1]

E.age[1][1+1]

7.变量定义int x, a=3, b=4;则语句x = ( a = 0 ) && ( b = 8 ); 执行之后各变量的值为______B

A.x =0, a=3, b=4

B.x =0, a=0, b=4

C.x =0, a=3, b=8

D.x =0, a=0, b=8

8.下列_________语句正确定义字符数组。C

A.char x[4]= "hello"

B.char x[5]= "hello"

C.&

D.char x[]= "hello"

E.char x[4+1]= "hello"

9.下面四个程序段中,不能输出23个*号的程序段是________D

A.for(int i=0;i<23;i++) putchar(‘*’)

B.for(int j=23;j>0;j--) putchar(‘*’)

C.int k=23;while (k>0) {putchar(‘*’);k--}

D.int i=0;while(i>23) {putchar(‘*’);i++;}

10.若x是整型变量,y是单精度浮点型变量,值为10,表达式x = y/4 的值是_____C 。

B. 二、程序填空题(本大题2小题,每题5分,共10分)

1、以下程序按每行5个数的格式输出1至n范围内能被7或17 整除的整数,并求出其和。

?

如输入:50

则输出:

7 14 17 21 28

34 35 42 49

Sum=247

源程序:

#include <>

void main()

{

int i, n, ct=0, sum=0;

{

scanf( "%d", &n );

for ( i=1; i<=n; i++ )

if ( ____(1)i%7==0||i%17==0 _____ )

{

printf( "%d\t", i );

_____(2)sum=sum+i_______;

ct++;

if ( ___(3)ct%5==0______ )

printf( "\n" );

}

printf( "\nSum=%d\n", sum );

}

2.以下程序输入10个整数到a数组,找到并输出其中最大的整数及其下标。

如输入:80 290 150 520 330 -160 -99 0 200 9

则输出:a[3]=520

源程序:

#include <>

#define N 10

int get_max_index( int a[], int n )

'

{

int i, k=0;

for ( i=1; i

if ( ____(1)a[k]

k = i;

return ______(2)k_____;

}

void main()

{

int i, k, a[N];

for ( i=0; i

scanf( "%d", &a[i] );

k = _______(3)get_max_index(a,10)______;

printf( "a[%d]=%d\n", k, a[k] );

}

三、程序调试题(本大题3小题,每题10分,共30分)

1. 程序调试题1()

调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括文件和文件)保存。

功能说明:程序计算并输出1! + 2! + ……+ n!(1至n阶乘的累加和),其中函数fact(n)计算n!的值,返回类型为double。

如输入:10

则输出:1!+2!+…+10! = 4037913

原程序(见C:\KS\):

#include <>

double fact( int n )

{

int i;

double result = 1;

for ( i=1; i

result = result * i;

%

return result;

}

void main()

{

int i, n;

double sum = 0;

scanf( "%d", &n );

for ( i=1 ; i<=n; i++ )

sum += fact(int i);

printf( "1!+2!+...+%d! = %.0lf\n", n, sum );

(

}

#include <>

double fact( int n )

{

int i;

double result=1;

for ( i=1; i<=n; i++ )

result = result * i;

return result;

}

~

void main()

{

int i, n;

double sum = 0;

scanf( "%d", &n );

for ( i=1 ; i<=n; i++ )

sum += fact(i);

printf( "1!+2!+...+%d! = %.0lf\n", n, sum );

}

2. 程序调试题2()

;

调试要求:下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括文件和文件)保存。

功能说明:程序输入任意一行字符串(设字符数不大于20),提取该字符串中的数字字符并组成一个整数,输出该整数及其两倍的值。

如输入:abc12e3fgh4i

则输出:1234 2468

原程序(见C:\KS\):

#include <>

void main()

{

int i, n=0;

char str[80];

*

gets(str[80]);

for ( i=0; str[i]!='\0'; i++ )

if ( str[i]>=0 && str[i]<=9 )

n = n*10 + str[i];

printf("%d %d\n", n, 2*n);

}

#include <>

void main()

{

int i, n=0;

}

char str[80];

gets(str);

for ( i=0; str[i]!='\0'; i++ )

if ( str[i]>='0' && str[i]<='9' )

n=n*10+(str[i]-48);

printf("%d %d\n", n, 2*n);

}

3、输出杨辉三角的前N行(N<10)。将结果(包括文件和文件)保存。

1

1 1

1 2 1

133 1

1 4 6 4 1

[代码]

}

#include <>

#define M 10

#define N 10

main()

{ int a[M][N],i,j;

a[0][0]=1;

a[1][0]=1;

a[1][1]=1;

for (i=2;i

for (j=0;j<=i;j++) /*求每行的各个元素*/

{ if(j==0 )

a[i][j]=1;

else

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

for (i=0;i

{ for (j=0;j<3*(M-i);j++)

printf(" ");

for (j=0;j<=N;j++)

printf("%6d",a[i][j]);

}

printf("\n");

}

#include <>

#define M 10

#define N 10

main()

{ int a[M][N]={0},i,j;

a[0][0]=1;

a[1][0]=1;

a[1][1]=1;

!

for (i=2;i

for (j=0;j

{ if(j==0)

a[i][j]=1;

else

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

for (i=0;i

{ for (j=0;j<3*(M-i);j++)

printf(" ");

>

for (j=0;j<=i;j++)

printf("%6d",a[i][j]);

printf("\n");

}

}

四、编程题(本大题2小题,每题20分,共40分)

1.编程题1()

编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括文件和文件)。功能说明:输入5个整数,输出其中正整数的累加和与正整数的平均值,输入输出格式如以下示例。

?

如输入:10 0 20 -5 31

则输出:Sum=61, Average=

#define N 5

void f1(int a[])

{

int i;

for(i=0;i

scanf("%d",&a[i]);

}

float f2(int a[],int b[])

/

{

int i,sum=0,j=0;

for(i=0;i

if(a[i]>0) {sum=sum+a[i];j++;}

b[0]=sum;

return (float)sum/j;

}

main()

{

int a[N],b[1];float ave;

"

f1(a);

ave=f2(a,b);

printf("sum=%d ave=%.1f\n",b[0],ave);

}

2.编程题2()

编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括文件和文件)。功能说明:输入正整数m和n(设100≤m≤n≤999),输出m到n之间满足下列条件的三位数:它的个位数的立方加十位数的平方再加上百位数等于该数的本身(例如135=1+3*3+5*5*5)。

如输入:135 555

则输出:135 175 518

#include ""

·

int m,n;

void f1()

{ int t;

do

{

printf("inpput value to m\n");

scanf("%d",&m);

}while(m<100||m>999);

do

{

printf("inpput value to n\n");

scanf("%d",&n);

}while(n<100||n>999);

if(m>n) {t=m;m=n;n=t;}

}

void f2(int m,int n)

{

int i;

for(i=m;i<=n;i++)

{

if((i%10)*(i%10)*(i%10)+(i/10%10)*(i/10%10)+i/100==i) printf("%5d",i);

}

}

main()

{

f1();

f2(m,n);

printf("\n");

}

相关主题
文本预览
相关文档 最新文档