分类: C/C++
2008-04-20 15:07:13
【目的与要求】
1.要求学生能够运用所学过的基础语法知识和基本编程技能进行综合练习。
2.独立完成3套模拟试题。
【上机内容】
模拟试题一
一、选择题(每题1分 共15分)
1.设x,y为float型变量,则下列()为不合适的赋值语句
A ++x; B y=(float)3;
C x=y=0; D x*=y+8;
2.若x为int 变量,则执行下列语句x的值为()
x=65535;
printf(“%d\n”,x);
A 65535 B 1
C 无定值 D -1
3.下面()不正确的转义符()
A ‘\t’ B ‘\a’
C ‘\081’ D ‘\n’
4.在C语言中,char类数据在内存中是以()形式存储的
A原码 B反码
C 补码 D ASCII码
5.以下变量名()是合法的。
A break B $123
C lotus_2_3 D
6.判断char型变量c1是否为小写字符的最简单且正确的表达式()。
A ‘a’<=c1<=’z ‘ B (c1<=a)&&(c1<=z)
C (‘a’<=c1)&&(‘z’>=c1) D (c1>=’a’)&&(c1<=’z’)
7.在C语言中,int,char,float所占用的内存。
A 均为2个字节 B 由用户自己定义 C PC 机为2,1,4 D 2,2,4
8.. 若有说明int x,y,下面程序()不能实现以下函数关系
y= |
|
A if (x<0) y=-1;else if (x==0) y=0;else y=1;
B y=-1; if (x!=0) if (x>0) y=1;else y=0;
C y=0; if (x>=0) { if (x>0) y=1;} else y=-1;
D if (x>=0) if (x>0) y=1;else y=0; else y=-1;
9.while (!x)中(!x)与下面条件()等价
A x= =0 B x= =1
C x!=1 D x!=0
10. 以下不是无限循环的语句为()。
A for (y=0,x=1;x>=++y;x++);
B for (;;x++);
C while (1) { x++;}
D for (i=10;;i--) sum+=i;
11. 若有以下语句,则下面()是正确的描述。
Char x[]=”12345”;
Char y[]={‘1’,’2’,’3’,’4’,’5’};
A x,y完全相同。
B x,y不相同。
C x数组长度小于y数组长度。
D x,y字符串长度相等。
12. 为了判断两个字符串s1 和s2是否相等,应当使用()。
A if (s1= =s2) B if (s1=s2)
C if (strcpy(s1,s2)) D if (strcmp(s1,s2)= =0)
13. C程序中函数返回值的类型是由()决定。 A return语句中的表达式类型。
B 调用该函数的主调函数类型。
C 调用函数时临时决定。
D 定义函数时所指定的函数类型。
14 若 int t, a=5,b=6,w=1,x=2,y=3,z=4,则经过 t=(a=w>x)&&(b=y>z)计算后变量t ,a, b的值分别为()
A 0,0,0 B 0,0,6
C 1,0,0 D 1,0,6
15 如果变量grade的值为1, 则运行下列程序段后输出结果为()
switch(grade)
{ case 1:printf(“a\n”);
case 2:printf(“b\n”);
case 3:printf(“c\n”);
}
A a B a
b
c
C abc D ab
二.写出下列程序的运行结果(每题3分,共15分)
1. main()
{
int i,j,k;
char space=’ ‘;
for(i=0;i<=5;i++)
{
for (j=i;j<=i;j++)
printf(“%c”,space);
for (k=0;k<=5;k++)
printf(“%c”,’*’);
printf(“\n”);
}
}
2.main()
{
int n=0;
while(n++<=2)
printf(“%d\t”,n);
printf(“%d\n”,n);
}
3. main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,t;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
for (i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf(“%4d ”,a[i][j]);
printf(“\n”);
}
}
4. #include “string.h”
main()
{
char string1[20]=”abcd”;
char string2[]=”\\cd\t”;
strcat(string1,string2);
printf(“%d”,strlen(string1));
}
5. main()
{
int count ,sum, x;
count=sum=0;
do { scanf(“%d”,&x);
if (x%2!=0) continue;
count++; sum+=x;
} while (count<5);
printf(“sum=%d”,sum);
}
假设输入的数据为:3 6 -2 9 10 11 8 12
}
三 编程(共70分)
1.编写一个程序,输入一个字符串,按反序存放后再输出该字符串。(10分)
2.写一个程序,能分别统计出从键盘上输入的字符串中小写字符的个数、数字字符的个数和其他字符的个数。输入的字符串以“!”作为结束标记。(10分)
3.编写一个求4个数中的最大数(要求用函数实现求最大数)。(10分)
4.青年歌手参加歌曲大奖赛,有5个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。(13分)
5.编程求3~100之间所有的素数及其个数 。(12分)
6.已知在一个ASCII“stud.dat”中,有10个学生的记录,每条记录有4项数据,第1项为学号(int型),第2、3、4项为成绩(float型),编写一个程序从该文件中将这些学生的数据读出来,计算每个人的平均成绩,然后在将原有数据和计算出的平均成绩写到另外一个ASCII“aver.dat”中。(15分)
模拟试题二
一、选择题(每题2分 共26分)
1. 以下几个语句执行后i,j,k的值分别为()
int i,j,k;
i=j=0;
k=1;
if (i>j?(j--):(i--)) k++;
A 1,9,1 B 1,0,2
C -1,0,1 D 0,0,2
2. int i=0,j=0;
int a=2,b=4,c=5,d=6;
表达式(i=a-b)&&(j=c-d)的结果是()
A 1 B 0
C -2 D -1
3.若给定条件表达式(m)?(a++):(a--),则表达式m()
A 等价于(m==0) B 等价于(m==1)
C 等价于(m!=0) D 等价于(m!=1)
4 下列程序运行结束后,n的值为()
n=2;
do { n=n+n;
n--;
} while (n<20);
A 21 B 22
C 33 D 24
5.已知数组a[3][4],若给a[1][2]赋值5 ,下列操作正确的是()
A a=5 B *a[1]=5
C a[2]={0,5,3,4} D *(a[1]+2)=5
6.文件包含的含义是指()
A 定义常量 B 定义变量
C 引入已说明的函数 D 引入标准函数
7.以下变量命名合法的是()
A M.john B $123
C lotus1_2_3 D
8.下面关于”A”的说法正确的是()
A 它代表一个字符常量 B 它代表一个字符串常量
C 它代表一个字符a D 它代表一个变量
9.以下语句执行后变量c的结果是()
int a=7,b=2;
float c;
c=a/b;
A 3.5 B 3
C 3.0 D 1
10. 设定如下变量,则表达式5+’b’+i*f-d/e-‘a’的结果是()
int i;
float f;
double d;
long int e;
A 浮点型 B 长整型
C 整型 D 双精型
11. 以下不正确的定义语句是()
A double x[5]={2.0,4.0,6.0,8.0,9.0};
B int y=[5]={0,1,3,5,7,9};
C char c1[ ]={‘1’,’2’,’3’,’4’,’5’};
D char c2[ ]={‘\x10’,’\x1’,’\x8’};
12.指出哪一个不是C语言的赋值语句()
A int a=1,b=3; B i++;
C a=b=5; D y=int(i);
13. 以下哪一个是无限循环的语句为()。
A for (y=0,x=0;x>=++y;x++);
B for (x=1;;x++);
C i=15; while (x>10) { x--;}
D for (i=10;i>5;i--) sum+=i;
二.写出下列程序的运行结果(每题3分,共15分)
1.#include “stdio.h”
main()
{
int i;
for (i=1;i<=5;i++)
{ if (i%2) printf(“*”);
else continue ;
printf(“#”);
}
printf(“$\n”);
}
2. main()
{
int i;
void function(void);
for (i=0;i<3;i++)
function();
}
void function(void)
{
int i=1,j=1;
static int k=1;
i++;j++;k++;
printf(“%d,%d,%d”,i,j,k);
}
3. float x=1.0,y=2.0,z;
main()
{
double fun(void);
z=fun();
printf(“%f,%f,%f\n”,x,y,z);
}
double fun(void)
{
int y,z;
x=y=z=3.0;
return(x+y+z);
}
4.main()
{
int i=1,k=0;
while (i--) k=k+k;
printf(“k=%d\n”,k);
}
5.main()
{
int i,sum;
i=1;
for(sum=1;i<=5;i++,sum--)
sum*=sum;
printf(“%d”,sum);
}
三 编程(共59分)
1.设有一个字符串“This is a computer” ,请编程求字符“i”首次出现的位置。(8分)
2. 试编程求3*3二维数组中最大元素及其所在的行、列位置。(12分)
3.编写程序,计算并输出下面级数在求和过程中第一次出现和数大于999时的奇数项部分和OS2。(其中^表示幂运算)
1*2-2*3+3*4-4*5+……+(-1)^(n-1)*n*(n+1)+ ……(13分)
4.有一张由9个学生每人8个数据组成的二维数据表。编写程序,要求将学生的总成绩按降序(由大到小)排列,计算并输出总分第二名学生的平均成绩。(13分)
姓名 学号 年龄 政治 语文 数学 计算机 体育 总分
李明 1 19 81 89 99 98 87
张力 2 16 89 90 95 80 90
王英 3 17 91 77 88 95 78
赵锐 4 18 79 84 95 93 96
周密 5 15 95 92 98 99 93
吴川 6 17 78 88 85 86 80
孙康 7 14 91 85 94 82 88
郑重 8 15 90 92 94 90 95
胡琴 9 16 75 85 87 94 90
5.已知在正文文件da1.dat中,每个记录只有两项数据,第一项为一整数表示学生的学号,第二项为形如xx.x的一个实数,试统计计算并向文件t2.dat输出60分以上(含60分)的人数占总人数的比例R。(13分)
模拟试题三
一 选择题(每题2分 共20分)
1.下面关于”A”的说法正确的是()
A 一个字符常量 B一个字符串常量
C 一个字符a D一个字符变量
2.使用字符串函数时,必须将()头文件包含在主程序中
A“stdio.h” B”string.h”
C “math.h” D”stdlib.h”
3.下面关于‘\\’的说法不正确的是()
A转义字符 B起换行作用
C能用于输出语句 D也能用于打印机
4.C程序是由()构成
A数据文件 B文本文件
C 函数 D主函数和其他函数
5.下列关于函数的说法哪些是错误的()
A可以单独执行
B可以嵌套调用
C可以定义在主函数之前或之后
D数组可以作为函数的参数
6.一般情况下,C语言是以()表示运算结果为逻辑真。
A F B T
C 1 D 0
7.以下变量名()是合法的。
A continue B $123
C lotus_2_3 D
8.一个C语言程序总是从()开始执行的。
A 主过程 B主函数
C子函数 D按书写顺序
9.PC机中,C语言的int,char,float所占用的内存为()字节。
A 1, 2, 4 B 2,2,2
C 2,1,4 D 2,2,4
10. 若k为float型,则下列程序执行结果为()
k=2.0;
while (k!=0)
{printf(“%d”,k);
k--;}
printf(“\n”);
A 无限多次 B 0次
C 1次 D 2次
二 按题目要求填空完善下列程序(每题6分,共24分)
1. 按逆序输出一个字符串
Void reversr(str)
Char str[];
{
int len.i;
char c;
len=①;
for (i=0;i<②;i++)
{ c=③;
str[i]=str[len-i-1];
④=c;
}
}
#include
main()
{
char string[256];
gets(string);
reverse(string);
puts(string);
}
2.输出Fibonacci数列的前15项,要求每行输出5项。
#define M 15
main()
{
int fib[M];
int i,
fib[0]=1;fin[1]=1;
for (i=2;i ①=fib[i-2]+②; for(i=0;i { if ( ③ ) printf(“\n”); ④; } } 3. 用起泡法对10个按升序排序 main() { int a[10]={2,4,1,6,-1,34,56,78,-23,20}; int i,j,k; for (j=0;j<① ;j++) for (i=0; ② ;i++) if ( ③ ) { k=a[i]; ④ ; a[i+1]=k; } } 3. 输出100-200间的所有素数及其个数 main() { int m,k,I,n=0 for (m=101;m<=200;m++) { ① for (i=2;i<=k;k++) if ( ② ) break; if ( ③ ) {printf(“%d “,m); n=n+1;} } printf(“%d”,n); } 三 编程(共56分) 1.编写程序,求下面级数前n项中偶数项的和ES。在求和过程中,以第一个绝对值大于9999的项为末项,计算并输出和数ES。(其中^表示幂运算) 1!-2!+3!-4!+……+(-1)^(n-1)*n!+ …… (10分) 2.设计一个程序,对于从键盘输入的年、月、日,计算并输出相应是星期几。比如,1998年7月1日是星期三,要求输出形式为7—1—1998:<3>。 (12分) [提示] 推算公式: s=yy-1+(yy-1)/4-(yy-1)/100+(yy-1)/400+dd w=s-7*(s/7) 其中yy是年份数,dd是yy年元旦到日期d的总天数,w是星期序数,w=0,1,2,… 3.编写程序:有两个正整数a和b,已知a*b=2048,求a、b各为何值时,a+b的值最小。(11分) 4.编写程序,找出一个4位数的完全平方数,该数减去1111后,结果仍是一个完全平方数。(完全平方数是一个整数,它是另一个整数的平方。例如25是5的平方,则25是一个完全平方数。)(10分) 5.已知在正文文件test.txt中存放有120个记录,每个记录中只有一个数。在文件中,从第一个数开始,每四个数为一组,第一个数为不同商场的代号(顺序号),其余三个数代表三类商品的营业额(万元)。编写程序,统计计算并向文件t2.dat输出各商场的总营业额 (13分)