c语言模拟题1(有答案)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 <stdio.h>
void main()
5.以下叙述中,正确的是_____B
A.C程序中,main函数必须位于程序最前面
B.C语言本身没有输入和输出语句
C.在对一个C程序进行编译的过程中发现注释中的拼写错误
D.C程序中每行中只能写一个语句
6.数组age[2][4]的非法引用是________A
A.age[3][0]
B.&age[0][0]
}
#include <stdio.h>
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;
C.age[0][1]
D.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
printf( "\n" );
}
printf( "\nSum=%d\n", sum );
}
2.以下程序输入10个整数到a数组,找到并输出其中最大的整数及其下标。
如输入:80 290 150 520 330 -160 -99 0 200 9
则输出:a[3]=520
源程序:
#include <stdio.h>
{
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)。将结果(包括B_3_3.c文件和B_3_3.exe文件)保存。
编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_2.C文件和B_4_2.exe文件)。
功能说明:输入正整数m和n(设100≤m≤n≤999),输出m到n之间满足下列条件的三位数:它的个位数的立方加十位数的平方再加上百位数等于该数的本身(例如135=1+3*3+5*5*5)。
}
}
main()
{
f1();
f2(m,n);
printf("\n");
}
}
}
四、编程题(本大题2小题,每题20分,共40分)
1.编程题1(B_4_1.C)
编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_1.C文件和B_4_1.exe文件)。
功能说明:输入5个整数,输出其中正整数的累加和与正整数的平均值,输入输出格式如以下示例。
如输入:10 0 20 -5 31
调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_3_1.c文件和B_3_1.exe文件)保存。
功能说明:程序计算并输出1! + 2! +……+ n!(1至n阶乘的累加和),其中函数fact(n)计算n!的值,返回类型为double。
scanf( "%d", &n );
for ( i=1 ; i<=n; i++ )
sum += fact(i);
printf( "1!+2!+...+%d! = %.0lf\n", n, sum );
}
2.程序调试题2(B_3_2.C)
调试要求:下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_3_2.c文件和B_3_2.exe文件)保存。
1
11
121
1331
14641
[代码]
#include <stdio.h>
#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<M;i++)/*从第3行开始*/
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<M;i++)
{ for (j=0;j<3*(M-i);j++)
printf(" ");
for (j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
{
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______ )
for ( i=0; i<N; 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(B_3_1.C)
8.下列_________语句正确定义字符数组。C
A.char x[4]="hello"
B.char x[5]="hello"
C.char x[]="hello"
D.char x[4+1]="hello"
9.下面四个程序段中,不能输出23个*号的程序段是________D
A.for(int i=0;i<23;i++) putchar(‘*’)
则输出:Sum=61, Average=20.3
#define N 5
void f1(int a[])
{
int i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
float f2(int a[],int b[])
{
int i,sum=0,j=0;
for(i=0;i<N;i++)
{ if(j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for (i=0;i<M;i++)
{ for (j=0;j<3*(M-i);j++)
printf(" ");
for (j=0;j<=N;j++)
printf("%6d",a[i][j]);
}
模拟题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.终止程序
3.定义一个返回值为int的无参函数cacul的正确语句是______C
如输入:135 555
则输出:135 175 518
#include "stdio.h"
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");
printf("\n");
}
#include <stdio.h>
#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<M;i++) /*从第3行开始*/
for (j=0;j<N;j++) /*求每行的各个元素*/
如输入:10
则输出:1!+2!+…+10! = 4037913
原程序(见C:\KS\B_3_1.C):
#include <stdio.h>
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(int i);
printf( "1!+2!+...+%d!= %.0lf\n", n, sum );
功能说明:程序输入任意一行字符串(设字符数不大于20),提取该字符串中的数字字符并组成一个整数,输出该整数及其两倍的值。
如输入:abc12e3fgh4i
则输出:1234 2468
原程序(见C:\KS\B_3_2.C):
#include <stdio.h>
void main()
{
int i, n=0;
A.3 B. 2.5 C.2 D.2.0
二、程序填空题(本大题2小题,每题5分,共10分)
1、以下程序按每行5个数的格式输出1至n范围内能被7或17整除的整数,并求出其和。
如输入:50
则输出:
7 Biblioteka Baidu4 17 21 28
34 35 42 49
Sum=247
源程序:
#include <stdio.h>
void main()
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(B_4_2.C)
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);
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。
A.void cacul(void);
B.void cacul(int);
C.intcacul();
D.intcacul;
4.下面运算优先级按从高到低的排列正确的是_____A
A.条件运算 赋值运算 逗号运算
B.算术运算 逻辑运算 关系运算
C.逻辑运算 关系运算 赋值运算
D.位运算 算术运算 赋值运算
#define N 10
int get_max_index( int a[], int n )
{
int i, k=0;
for ( i=1; i<n; i++ )
if ( ____(1)a[k]<a[i]____ )
k = i;
return ______(2)k_____;
}
void main()
{
int i, k, a[N];
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 <stdio.h>
void main()
5.以下叙述中,正确的是_____B
A.C程序中,main函数必须位于程序最前面
B.C语言本身没有输入和输出语句
C.在对一个C程序进行编译的过程中发现注释中的拼写错误
D.C程序中每行中只能写一个语句
6.数组age[2][4]的非法引用是________A
A.age[3][0]
B.&age[0][0]
}
#include <stdio.h>
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;
C.age[0][1]
D.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
printf( "\n" );
}
printf( "\nSum=%d\n", sum );
}
2.以下程序输入10个整数到a数组,找到并输出其中最大的整数及其下标。
如输入:80 290 150 520 330 -160 -99 0 200 9
则输出:a[3]=520
源程序:
#include <stdio.h>
{
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)。将结果(包括B_3_3.c文件和B_3_3.exe文件)保存。
编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_2.C文件和B_4_2.exe文件)。
功能说明:输入正整数m和n(设100≤m≤n≤999),输出m到n之间满足下列条件的三位数:它的个位数的立方加十位数的平方再加上百位数等于该数的本身(例如135=1+3*3+5*5*5)。
}
}
main()
{
f1();
f2(m,n);
printf("\n");
}
}
}
四、编程题(本大题2小题,每题20分,共40分)
1.编程题1(B_4_1.C)
编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_1.C文件和B_4_1.exe文件)。
功能说明:输入5个整数,输出其中正整数的累加和与正整数的平均值,输入输出格式如以下示例。
如输入:10 0 20 -5 31
调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_3_1.c文件和B_3_1.exe文件)保存。
功能说明:程序计算并输出1! + 2! +……+ n!(1至n阶乘的累加和),其中函数fact(n)计算n!的值,返回类型为double。
scanf( "%d", &n );
for ( i=1 ; i<=n; i++ )
sum += fact(i);
printf( "1!+2!+...+%d! = %.0lf\n", n, sum );
}
2.程序调试题2(B_3_2.C)
调试要求:下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_3_2.c文件和B_3_2.exe文件)保存。
1
11
121
1331
14641
[代码]
#include <stdio.h>
#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<M;i++)/*从第3行开始*/
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<M;i++)
{ for (j=0;j<3*(M-i);j++)
printf(" ");
for (j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
{
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______ )
for ( i=0; i<N; 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(B_3_1.C)
8.下列_________语句正确定义字符数组。C
A.char x[4]="hello"
B.char x[5]="hello"
C.char x[]="hello"
D.char x[4+1]="hello"
9.下面四个程序段中,不能输出23个*号的程序段是________D
A.for(int i=0;i<23;i++) putchar(‘*’)
则输出:Sum=61, Average=20.3
#define N 5
void f1(int a[])
{
int i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
float f2(int a[],int b[])
{
int i,sum=0,j=0;
for(i=0;i<N;i++)
{ if(j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for (i=0;i<M;i++)
{ for (j=0;j<3*(M-i);j++)
printf(" ");
for (j=0;j<=N;j++)
printf("%6d",a[i][j]);
}
模拟题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.终止程序
3.定义一个返回值为int的无参函数cacul的正确语句是______C
如输入:135 555
则输出:135 175 518
#include "stdio.h"
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");
printf("\n");
}
#include <stdio.h>
#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<M;i++) /*从第3行开始*/
for (j=0;j<N;j++) /*求每行的各个元素*/
如输入:10
则输出:1!+2!+…+10! = 4037913
原程序(见C:\KS\B_3_1.C):
#include <stdio.h>
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(int i);
printf( "1!+2!+...+%d!= %.0lf\n", n, sum );
功能说明:程序输入任意一行字符串(设字符数不大于20),提取该字符串中的数字字符并组成一个整数,输出该整数及其两倍的值。
如输入:abc12e3fgh4i
则输出:1234 2468
原程序(见C:\KS\B_3_2.C):
#include <stdio.h>
void main()
{
int i, n=0;
A.3 B. 2.5 C.2 D.2.0
二、程序填空题(本大题2小题,每题5分,共10分)
1、以下程序按每行5个数的格式输出1至n范围内能被7或17整除的整数,并求出其和。
如输入:50
则输出:
7 Biblioteka Baidu4 17 21 28
34 35 42 49
Sum=247
源程序:
#include <stdio.h>
void main()
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(B_4_2.C)
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);
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。
A.void cacul(void);
B.void cacul(int);
C.intcacul();
D.intcacul;
4.下面运算优先级按从高到低的排列正确的是_____A
A.条件运算 赋值运算 逗号运算
B.算术运算 逻辑运算 关系运算
C.逻辑运算 关系运算 赋值运算
D.位运算 算术运算 赋值运算
#define N 10
int get_max_index( int a[], int n )
{
int i, k=0;
for ( i=1; i<n; i++ )
if ( ____(1)a[k]<a[i]____ )
k = i;
return ______(2)k_____;
}
void main()
{
int i, k, a[N];