计算机二级c语言计算机二级c语言
2008年秋浙江省高等学校
计算机等级考试试卷(二级C)
说明:? 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的
对应位置上填“?”。
? 请将你的准考证号的后五位填写在答卷右下角的指定位置内;
? 考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入一批学生成绩,遇负数表示输入结束,要求统计并输出各等级成绩的学生个数。成绩等级
分为三级,分别为:A(90~100)、...
计算机二级c语言
2008年秋浙江省高等学校
计算机等级考试试卷(二级C)
说明:? 考生应将所有试
的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的
对应位置上填“?”。
? 请将你的准考证号的后五位填写在答卷右下角的指定位置内;
? 考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入一批学生成绩,遇负数表示输入结束,要求统计并输出各等级成绩的学生个数。成绩等级
分为三级,分别为:A(90~100)、P(68~89)和F(0~59)。
运行示例:
Enter scores:88 71 68 70 59 81 91 0 60 77 83 -10
A:1; P:8; F:2;
【程序】
#include
void main()
{
int mark, a, p, f;
a=p=f=0;
printf(“Enter scores:”);
while ( (1) ){
if (mark>=90) a++;
(2) p++;
(3) f++;
(4)
}
printf(“A:%d; P:%d; F:%d;\n”,a,p,f);
}
【供选择的答案】
(1) A. mark>=0 B. mark>0
C. mark<=0 D. mark<0
(2) A. else if (mark>=60) B. if (mark>=60)
C. else (mark>=60) D. if (mark<90) (3) A. else(mark<60) B. else
C. if(mark>0) D. else if (mark<=60)
(4) A. scanf(“%d”,mark) ; B. scanf(“%d”,&mark);
C. ; D. mark=getchar();
试题2(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
共76页 第1页
求1~999之间所有满足各位数字的立方和等于它本身的数。例如:153的各位数字的立方和是:
3331+5+3=153
运行示例:
153 370 371 407
【程序】
#include
void main()
{
int digit,, j, sum, x;
for(j=1; j<1000;j++){
(5)
(6)
do{
(7)
sum=sum+digit*digit*digit;
x=x/10;
}while (8) ;
if(sum==j) printf(“%d ”,sum);
}
}
【供选择的答案】
(5) A. sum=0; B. sum=1;
C. sum=j; D. ;
(6) A. x=1; B. x=j;
C. ; D. x=sum;
(7) A. digit=x/10; B. ;
C. digit=x%10; D. digit=x;
(8) A. x==0; B. j!=0;
C. j==0; D. x!=0; 试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入10个整数,将它们从小到大排序后输出。
【运行示例】
Enter 10 integers: 10 98 -9 3 6 9 100 -1 0 2
After sorted: 100 98 10 9 6 3 2 0 -1 -9
【程序】
#include
(9)
void sort( (10) )
{
int i, index, k, t;
for(k=0; ka[index]) index=1;
(11) ;
}
}
void swap(int *x, int *y) {
int t;
t=*x; *x=*y; *y=*t; }
void main()
{
int I, a[10];
printf(“Enter 10 integers:”);
for(i=0; i<10; i++)
scanf(“%d”,&a[i]);
(12) ;
printf(“After sorted:”);
for(i=0; i<10; i++)
printf(“%d”, a[i]);
printf(“\n”);
}
(9) A. void swap(int *x, int *y) B. ;
C. void swap(int *x, int *y); D. void swap(int *x, *y)
(10) A. int &a, int n B. int *a, int *n
C. int *a, int n D. int a, int *n (11) A. swap(*a[index], *a[k]) B. swap(a[index], *a[k])
C. swap(index, k) D. swap(&a[index], &a[k]) (12) A. sort(a) B. sort(a[10])
C. sort(a[], 10) D. sort(a, 10)
试题4(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
程序1
#include
void main()
{
int j, k, s1, s2;
s1=s2=0;
for(j=1; j<=5; j++){
s1++;
for(k=1; k<=j; k++)
s2++;
}
共76页 第3页
printf(“%d %d”, s1, s2); }
程序2
#include void main()
{
int j , k, s1, s2;
s1=0;
for(j=1; j<=5; j++){
s1++;
for(k=1, s2=0; k<=j; k++)
s2++;
}
printf(“%d %d”,s1, s2);
}
程序3
#include void main()
{
int j , k, s1, s2;
s1=0;
for(j=1; j<=5; j++){
s1++;
for(k=1; k<=j; k++, s2=0)
s2++;
}
printf(“%d %d”,s1, s2);
}
程序4
#include void main()
{
int j , k, s1, s2;
s1=0=s2;
for(j=1; j<=5; j++,s1=0){
s1++;
for(k=1; k<=j; k++)
s2++;
}
printf(“%d %d”,s1, s2);
}
(13) 程序1运行时,输出 (13) 。
A. 0 15 B. 5 0
C. 5 5 D. 5 15 (14) 程序2运行时,输出 (14) 。
A. 0 15 B. 5 0
共76页 第4页
C. 5 5 D. 5 15 (15) 程序3运行时,输出 (15) 。
A. 0 15 B. 5 0
C. 5 5 D. 5 15
16) 。 (16) 程序4运行时,输出 (
A. 0 15 B. 5 0
C. 5 5 D. 5 15
试题5(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
程序1
#include void main()
{
int i, m=15, y=-1;
for(i=2; i<=m/2; i++)
if(m % i= =0) y=0;
else y=1;
printf(“%d”,y);
}
程序2
#include void main()
{
int i, m=15, y=-1;
for(i=2; i<=m/2; i++)
if(m % i= =0) {y=0; break;}
printf(“%d”,y);
}
程序3
#include void main()
{
int i, m=15, y=-1;
for(i=2; i<=m/2; i++)
if(m % i= =0) break;
if(i> m/2) y=1;
else y=0;
printf(“%d”,y);
}
程序4
#include void main()
{
共76页 第5页
int i, m=15, y=-1;
for(i=2; i<=m/2; i++)
if(m % i= =0) { break; y=0; }
printf(“%d”,y);
}
17) 。 (17) 程序1运行时,输出 (
A. 1 B. 0
C. 15 D. -15
(18) 程序1运行时,输出 (18) 。
A. 1 B. 0
C. 15 D. -15
(19) 程序1运行时,输出 (19) 。
A. 1 B. 0
C. 15 D. -15
(20) 程序1运行时,输出 (20) 。
A. 1 B. 0
C. 15 D. -15
试题6(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
void main()
{
int k;
char ch, a[10], *s[10]={“one”, “two”, “three”, “four”};
k=0;
while((ch=getchar())!=?\n? && k<9)
if(ch>?5? && ch8? ) a[k++]=ch;
a[k]= „\0?;
for(k=0; a[k]= „\0?; k++)
printf(“%s”, s[(„9?-a[k])-1];
}
(21) 程序运行时,输入5678,输出 (21) 。
A. two three B. two
C. one four three D. four three two one
(22) 程序运行时,输入8561#,输出 (22) 。
A. two three B. two
C. one four three D. four three two one
(23) 程序运行时,输入7902#,输出 (23) 。
A. two three B. two
C. one four three D. four three two one
(24) 程序运行时,输入7633#,输出 (24) 。
A. two three B. two
C. one four three D. four three two one
共76页 第6页
试题7(28分)
(1) 定义函数fact(n) 计算n的阶乘:n!=1*2*……*n,函数返回值类型是double。 (2) 定义函数cal(e) 计算下列算式的值,直到最后一项的绝对值小于e,函数返回值类型是
double。
111111 ss,,11,,,,,,,,............
22!!33!!44!!
-1-2-3-n(3) 定义函数main(),输入正整数n,当精度e分别取值为10、10、10/……10时,分别计
算并输出下列算式的值,直到最后一项绝对值小于精度e,以此比较不同精度下算出的结
果。要求调用cal(e) 计算下列算式的值。
111s,1,,,,......
2!3!4!
共76页 第7页
2007年春浙江省高等学校
计算机等级考试试卷(二级C) 说明:? 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的
对应位置上填“?”。
? 请将你的准考证号的后五位填写在答卷右下角的指定位置内;
? 考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入一个正整数,按照从高位到低位的顺序输出各位数字。 运行示例:
Enter an integer: 1902
The digits are: 1 9 0 2
【程序】
#include
void main( )
{ int digit, number, power, t;
printf("Enter an integer:");
scanf("%d", &number);
number = number < 0 ? -number : number;
power = 1;
(1)
while( (2) ){
power *= 10;
t /= 10;
};
printf("The digits are:");
while( (3) ){
digit = number / power;
printf("%d " , digit);
(4)
power /= 10;
}
}
【供选择的答案】
(1) A、 t = 1; B、t = number;
C、 ; D、number = 1; (2) A、t >= 10 B、power >= 100
C、t != 0 D、number != 0 (3) A、 power == 0 B、digit != 0
C、number != 0 D、power >= 1 (4) A、number /= power; B、number %= 10;
共76页 第8页
C、number %= power; D、number /= 10; 试题2(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
连续输入一批学生的成绩,直到输入成绩的数量超过50个或者输入的成绩不是有效成绩(有效成绩为0,100),将输入的有效成绩存入数组mark中,在数组中查找并输出最高分。函数getmax(array,n)在有n个元素的一维数组array中找出并返回最大值。 运行示例:
Enter marks: 90 80 77 65 -1
Max = 90
【程序】
#include
#define MAXNUM 50
int getmax( (5) )
{ int k, max;
(6)
for(k = 1; k < n; k++)
if(max < array[k]) max = array[k];
return max;
}
void main( )
{ int k, x;
int mark[MAXNUM];
printf("Enter marks:");
k = 0;
scanf("%d", &x);
while( (7) ){
mark[k++] = x;
scanf("%d", &x);
}
if(k > 0) printf("Max = %d\n", getmax( (8) ));
else printf("No marks!\n"); }
【供选择的答案】
(5) A、int n; int array[] B、void
C、int *array D、int array[],int n (6) A、max = 0; B、;
C、max = array[0]; D、max = array[n]; (7) A、k < MAXNUM || x >=0 && x <= 100
B、k < MAXNUM && x >=0 && x <= 100
C、k > MAXNUM && x >=0 || x <= 100
D、k > MAXNUM || x >=0 || x <= 100 (8) A、mark, k B、mark
共76页 第9页
C、mark[] D、mark, n
试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入一个4 行4 列的矩阵,计算并输出该矩阵除 4 条边以外的所有元素之和sum1,再计算和输出该矩阵主对角线以上(含主对角线)的所有元素之和sum2, 主对角线为从矩阵的左上角至右下角的连线。
运行示例:
Enter an array:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
sum1 = 34
sum2 = 70
【程序】
#include
void main( )
{ int j, k, sum;
int a[4][4];
printf("Enter an array:\n");
for(j = 0; j < 4; j++)
for(k = 0; k < 4; k++)
scanf("%d", &a[j][k]);
sum = 0;
for(j = 0; j < 4; j++)
for(k = 0; k < 4; k++)
if( (9) )
sum += a[j][k];
printf("sum1 = %d\n", sum);
(10)
for(j = 0; j < 4; j++)
for( (11) ; (12) ; k++)
sum += a[j][k];
printf("sum2 = %d\n", sum); }
【供选择的答案】
(9) A、j != 3 && k != 3 && j != 0 && k !=0
B、j != 3 && k != 3 || j != 0 && k !=0
C、j != 3 || k != 3 && j != 0 || k !=0
D、j == 3 && k == 3 || j == 0 && k ==0 (10) A、sum1 = 0; B、sum = 0;
C、sum2 = 0; D、;
共76页 第10页
(11) A、k = 0 B、k = j
C、k = 1 D、k = 3 (12) A、k <= j B、k > 0
C、 k > j D、k < 4 试题4(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
void main( )
{ int i, j, k;
scanf("%d", &i);
j = k = 0;
if((i/10) > 0) /* 第7行 */
j = i;
if((i != 0) && (j == 0))
k = i;
else
k = -1; /* 第12行 */
printf("j=%d, k=%d\n", j, k); }
(13) 程序运行时,输入5,输出 (13) 。
A、j=0, k=5 B、j=5,k=5
C、j=0,k=-1 D、j=5,k=-1 (14) 程序运行时,输入99,输出 (14) 。
A、j=99, k=-1 B、j=0, k=-1
C、j=0, k=99 D、j=99, k=99 (15) 将第12行改为“k = -1;j=i/10;”后,程序运行时,输入99,输出 (15)
。
A、j=99, k=-1 B、j=9, k=99
C、j=99, k=99 D、j=9, k=-1 (16) 将第7行改为“if((i/10) > 0){”,第12行改为“k = -1;}”后,程序运行时,输
入5,输出 (16) 。
A、j=0, k=-1 B、j=0,k=0
C、j=5,k=5 D、j=5,k=-1 试题5(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
int k = 1;
void Fun();
void main()
{ int j;
for(j = 0; j < 2; j++)
共76页 第11页
Fun();
printf("k=%d", k); }
void Fun()
{ int k = 1; /* 第11行 */
printf("k=%d,", k);
k++;
}
(17)程序的输出是 (17) 。
A、k=1,k=2,k=3 B、k=1,k=2,k=1
C、k=1,k=1,k=2 D、k=1,k=1,k=1 (18)将第11行改为“static int k=1;”后,程序的输出是 (18) 。
A、k=1,k=1,k=1 B、k=1,k=1,k=2
C、k=1,k=2,k=1 D、k=1,k=2,k=3
(19) 将第11行改为“k=1;”后,程序的输出是 (19) 。
A、k=1,k=2,k=1 B、k=1,k=1,k=1
C、k=1,k=1,k=2 D、k=1,k=2,k=3
(20) 将第11行改为“;”后,程序的输出是 (20) 。
A、k=1,k=1,k=2 B、k=1,k=2,k=3
C、k=1,k=1,k=1 D、k=1,k=2,k=1 试题6(每小题3分,共12分)
#include
struct st{
char c; char s[80];
};
char * f(struct st t);
void main( )
{ int k;
struct st a[4] =
{{'1',"123"}, {'2',"321"}, {'3',"123"}, {'4',"321"}};
for(k = 0; k < 4; k++)
printf("%s\n", f(a[k])); }
char * f(struct st t)
{ int k = 0;
while(t.s[k]!='\0'){
if(t.s[k] == t.c) return t.s+k;
k++;
}
return t.s;
}
(21) 程序运行时,第1行输出 (21) 。
A、321 B、21
C、123 D、12
共76页 第12页
(22) 程序运行时,第2行输出 (22) 。
A、21 B、12
C、3 D、1
(23) 程序运行时,第3行输出 (23) 。
A、3 B、123
C、1 D、321
(24) 程序运行时,第4行输出 (24) 。
A、123 B、1
C、3 D、321
试题7 (28分)
某客户为购房办理商业贷款,选择了按月等额本息还款法,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款额(money)取决于还款月数(month),计算如下。客户打算在5,30年的范围内选择还清贷款的年限,想得到一张“还款年限,月还款额表”以供参考。
monthraterate(1),moneyloan,,month(1)1,,rate
n(1) 定义函数cal_power(x, n)计算x的n次幂(即x),函数返回值类型是double。 (2) 定义函数cal_money(loan,rate,month)计算月还款额,函数返回值类型是double,要
求调用函数cal_power(x, n)计算x的n次幂。
(3) 定义函数main(),输入贷款本金 loan(元)和月利率 rate,输出“还款年限,月还款额表”,
还款年限的范围是5,30年,输出时分别精确到年和元。要求调用函数
cal_money(loan,rate,month)计算月还款额。
2006年秋浙江省高等学校
计算机等级考试试卷(二级C) 说明:? 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的
对应位置上填“?”。
? 请将你的准考证号的后五位填写在答卷右下角的指定位置内;
? 考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入一行字符,统计并输出其中英文字母、数字和其他字符的个数。
运行示例:
Enter characters: f(x,y)=3x+5y-10
letter=5, digit=4, other=6
【程序】
#include
void main( )
{ int digit, i, letter, other;
(1) ch;
共76页 第13页
digit = letter = other = 0;
printf("Enter characters: ");
while( (2) != '\n')
if( (3) )
letter ++;
(4) (ch >= '0' && ch <= '9')
digit ++;
else
other ++;
printf("letter=%d, digit=%d, other=%d\n", letter, digit, other);
}
【供选择的答案】
(1) A、* B、float
C、double D、char
(2) A、(ch = getchar()) B、ch = getchar()
C、getchar(ch) D、putchar(ch) (3) A、(ch >= 'a' && ch <= 'z') && (ch >= 'A' && ch <= 'Z')
B、(ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
C、ch >= 'a' && ch <= 'Z'
D、ch >= 'A' && ch <= 'z' (4) A、if B、else
C、else if D、if else
试题2(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入一个整数,将它逆序输出。要求定义并调用函数reverse(long number),它的功能是返
回number的逆序数。例如reverse(12345)的返回值是54321。
运行示例:
Enter an integer: -123
After reversed: -321
【程序】
#include
void main( )
{ long in;
long reverse(long number);
printf("Enter an integer:");
scanf("%ld", &in);
printf("After reversed:%ld\n", (5) ); }
long reverse(long number)
{ int flag;
(6) ;
flag = number < 0 ? -1 : 1;
if( (7) ) number = - number;
共76页 第14页
while(number != 0){
res = (8) ;
number /= 10;
}
return flag*res;
}
【供选择的答案】
(5) A、reverse( ) B、in
C、reverse(in) D、reverse (6) A、res = 0 B、long res
C、long res = 0 D、res
(7) A、number > 0 B、number < 0
C、number != 0 D、number == 0 (8) A、number%10 B、res*10 + number%10
C、number/10 D、res*10 + number/10
试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入一个3 行2 列的矩阵,分别输出各行元素之和. 运行示例:
Enter an array:
6 3
1 -8
3 12
sum of row 0 is 9
sum of row 1 is -7
sum of row 2 is 15
【程序】
#include
void main( )
{ int j, k, sum = 0;
int a[3][2];
printf("Enter an array:\n");
for(j = 0; j < 3; j++)
for(k = 0; k < 2; k++)
scanf("%d", (9) );
for(j = 0; j < 3; j++){
(10)
for(k = 0; k < 2; k++)
sum = (11) ;
printf("sum of row %d is %d\n", (12) , sum);
}
}
共76页 第15页
【供选择的答案】
(9) A、a[j][k] B、a[k][j]
C、&a[j][k] D、&a[k][j] (10) A、; B、sum = -1;
C、sum = 1; D、sum = 0; (11) A、sum + a[j][k] B、sum + a[j][j]
C、sum + a[k][k] D、0
(12) A、k B、j
C、0 D、1
试题4(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】
#include
void main( )
{ int k;
for(k = 5; k > 0; k--){
if(k==3)
continue; /* 第6行 */
printf("%d ", k);
}
}
(13) 程序的输出是 (13) 。
A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3 (14) 将第6行中的continue改为break后,程序的输出是 (14) 。
A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3
(15) 将第6行中的continue删除(保留分号)后,程序的输出是 (15) 。
A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3
(16) 将第6行全部删除后,程序的输出是 (16) 。
A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3 试题5(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】
# include
void main()
{ char c, s[80]= "Happy New Year";
int i;
void f(char *s, char c);
c = getchar();
f(s, c);
puts(s);
}
void f(char *s, char c)
{ int k = 0, j = 0;
共76页 第16页
while(s[k] != '\0'){
if(s[k] != c){
s[j] = s[k];
j++;
}
k++;
}
s[j] = '\0';
}
(17) 程序运行时,输入字母a,输出 (17) 。
A、Happy New Year B、Hppy New Yer
C、Hay New Year D、Happy Nw Yar (18) 程序运行时,输入字母e,输出 (18) 。
A、Happy New Year B、Hppy New Yer
C、Hay New Year D、Happy Nw Yar
(19) 程序运行时,输入字母p,输出 (19) 。
A、Happy New Year B、Hppy New Yer
C、Hay New Year D、Happy Nw Yar
(20) 程序运行时,输入字母b,输出 (20) 。
A、Happy New Year B、Hppy New Yer
C、Hay New Year D、Happy Nw Yar 试题6(每小题3分,共12分)
#include
struct st{
int x, y, z;
};
void f(struct st *t, int n); void main( )
{ int k, n;
struct st time;
scanf("%d%d%d%d", &time.x, &time.y, &time.z, &n);
f(&time, n);
printf("%d:%d:%d\n", time.x, time.y, time.z);
}
void f(struct st *t, int n) {
t->z = t->z + n;
if(t->z >= 60){
t->y = t->y + t->z/60;
t->z = t->z%60;
}
if(t->y >= 60){
t->x = t->x + t->y/60;
t->y = t->y%60;
共76页 第17页
}
if(t->x >= 24) t-> x = t->x % 24;
}
(21)程序运行时,输入12 12 50 10,输出 (21) 。
A、12:12:0 B、12:12:50 C、12:12:60 D、12:13:0
(22) 程序运行时,输入12 12 30 10,输出 (22) 。
A、12:12:0 B、12:12:10 C、12:12:30 D、12:12:40
(23) 程序运行时,输入22 59 30 30,输出 (23) 。
A、23:0:0 B、22:59:60 C、22:59:30 D、22:0:0
(24) 程序运行时,输入23 59 0 300,输出 (24) 。
A、0:4:0 B、23:59:300 C、23:59:00 D、23:0:0 试题7 (14分)
编写程序,输入100个学生的成绩,统计并输出该门课程的平均分以及不及格学生的人数。 试题8 (14分)
编写程序,输入一个正整数n,计算并输出下
列算式的值。要求定义和调用函数total(n)计算1+1/2+1/3+„„+1/n,函数返回值的类型是double。
n1111s,,,,,,1..., ,1kn23k
2006年春浙江省高等学校
计算机等级考试试卷(二级C) 说明:? 考生应将所有试题的答案填写在答卷上。其中试题1,试题6,请在答卷上各小题正确选
项的对应位置处填“?”;
? 请将你的准考证号的后五位填写在答卷右下角的指定位置内;
? 考试时间为90分钟;
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
求 1 + 2/3 + 3/5 + 4/7 + 5/9 + „ 的前20项之和。
运行示例:
sum = 11.239837
【程序】
#include
void main( )
{
int i, b = 1;
double s;
(1) ;
for(i = 1; i <= 20; i++){
s = s + (2) ;
共76页 第18页
(3)
}
printf( (4) , s);
}
【供选择的答案】
(1) A、s = 0 B、s = 1
C、s = -1 D、s = 2
(2) A、i/b B、double(i)/double(b)
C、i/2*i-1 D、(double)i/(double)b
(3) A、; B、b = 2 * i – 1;
C、b = 1.0 * b; D、b = b + 2; (4) A、"sum = %d\n" B、"s = %c\n"
C、"sum = %f\n" D、"s = %s\n" 试题2(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入10个整数,将它们从大到小排序后输出。
运行示例:
Enter 10 integers: 1 4 -9 99 100 87 0 6 5 34
After sorted: 100 99 87 34 6 5 4 1 0 -9
【程序】
#include
void main( )
{ int i, j, t, a[10];
printf("Enter 10 integers: ");
for(i = 0; i < 10; i++)
scanf( (5) );
for(i = 1; i < 10; i++)
for( (6) ; (7) ; j++)
if( (8) ){
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
printf("After sorted: ");
for(i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
}
【供选择的答案】
(5) A、"%f", a[i] B、"%lf", &a[i]
C、"%s", a D、"%d", &a[i] (6) A、j = 0 B、j = 1
共76页 第19页
C、j = i D、j = i - 1 (7) A、j > i B、j < 9 - i
C、j < 10 - i D、j > i - 1 (8) A、a[i-1] < a[i] B、a[j+1] < a[j+2]
C、a[j] < a[j+1] D、a[i] < a[j] 试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入一个字符串和一个正整数m,将该字符串中的前m个字符复制到另一个字符串中,再输出
后一个字符串。
运行示例1:
Enter a string: 103+895=? Enter an integer: 6
The new string is 103+89 运行示例2:
Enter a string: 103+895=? Enter an integer: 60
The new string is 103+895=? 运行示例3:
Enter a string: 103+895=? Enter an integer: 0
The new string is
【程序】
#include
#include < (9) >
void main( )
{ char s[80], t[80], i, m;
printf("Enter a string:");
gets(s);
printf("Enter an integer:");
scanf("%d", &m);
for(i = 0; (10) ; i++)
(11) ;
(12)
printf("The new string is ");
puts(t);
}
【供选择的答案】
(9) A、ctype.h B、math.h
C、stdio.h D、string.h (10) A、i < m B、s[i]!= '\0'
C、s[i]!= '\0' && i < m D、s[i]!= '\0' || i < m
(11) A、*s++ = *t++ B、t[i] = s[i]
共76页 第20页
C、*t++ = *s++ D、s[i] = t[i] (12) A、t[i] = '\0'; B、;
C、*++s = '\0'; D、*++t = '\0';
试题4(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】
#include
void main( )
{ int s, x1, y1, z1, x2, y2, z2;
printf("Enter 6 integers:");
scanf("%d%d%d%d%d%d", &x1, &y1, &z1, &x2, &y2, &z2);
s = f(x2, y2, z2) - f(x1, y1, z1);
printf("%d\n", s);
}
f(int x, int y, int z)
{ int k, n;
int tab[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
n = (x % 4 == 0 && x % 100 != 0 || x % 400 == 0);
for(k = 1; k < y; k++)
z = z + tab[n][k];
return z;
}
(13) 程序运行时,输入1 0 0 0 0 0,输出 (13) 。
A、29 B、28 C、0 D、-1 (14) 程序运行时,输入0 0 1 0 0 0,输出 (14) 。
A、29 B、28 C、0 D、-1 (15) 程序运行时,输入2000 2 1 2000 3 1,输出 (15) 。
A、29 B、28 C、0 D、-1 (16) 程序运行时,输入1981 2 1 1981 3 1,输出 (16) 。
A、29 B、28 C、0 D、-1 试题5(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】
# include
void main ( )
{ int a = -1, b = 1;
void f1(int x, int y), f2(int *x, int *y);
void f3(int *x, int *y), f4(int x, int y);
f1(a, b);
共76页 第21页
printf("(%d,%d)\n", a, b);
a = -1, b = 1;
f2(&a, &b);
printf("(%d,%d)\n", a, b);
a = -1, b = 1;
f3(&a, &b);
printf("(%d,%d)\n", a, b);
a = -1, b = 1;
f4(a, b);
printf("(%d,%d)\n", a, b); }
void f1(int x, int y)
{ int t;
t = x; x = y; y = t; }
void f2(int *x, int *y)
{ int t;
t = *x; *x = *y; *y = t; }
void f3(int *x, int *y)
{ int *t;
t = x; x = y; y = t; }
void f4(int x, int y)
{ int *t = malloc(sizeof(t));
*t = x; x = y; y = *t; }
(17) 程序运行时,第1行输出 (17) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1) (18) 程序运行时,第2行输出 (18) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1) (19) 程序运行时,第3行输出 (19) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1) (20) 程序运行时,第4行输出 (20) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1) 试题6(每小题3分,共12分)
#include
struct card{
char *face;
char *suit;
};
void filldeck(struct card *wdeck, char *wface[],char *wsuit[])
{ int i;
for (i = 0; i < 4; i++){
共76页 第22页
wdeck[i].face = wface[i%2];
wdeck[i].suit = wsuit[i/2];
}
}
void deal(struct card *wdeck)
{ int i;
for (i = 0; i < 4; i++)
printf("(%2s of %-6s)\n", wdeck[i].face, wdeck[i].suit);
}
void main()
{ struct card deck[4];
char *face[]={"K","Q"};
char *suit[]={"Heart","Club"};
filldeck(deck,face,suit);
deal(deck);
}
(21) 程序运行时,第1行输出 (21) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club)
(22) 程序运行时,第2行输出 (22) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club) (23) 程序运行时,第3行输出 (23) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club) (24) 程序运行时,第3行输出 (24) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club) 试题7 (14分)
编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过
(60,84)和不及格(小于60)的学生人数。
运行示例:
Enter scores: 88 71 68 70 59 81 91 42 66 77 83 0
>,85:2
60-84:7
<60 2
试题8 (14分)
编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数
返回值的类型是double。
n1s,, ,1k!k
共76页 第23页
运行示例:
Enter n: 5
sum = 1.71667
2005年秋浙江省高等学校
计算机等级考试试卷(二级C)
说明:? 考生应将试题一至试题四的答案涂在答题卡上,将试题五的答案填写在答卷上,否则作无
效处理;
? 请将你的准考证号的后四位填写在答卷右下角的指定位置内;
? 考试时间为120分钟。
试题一、判断题(每题1分,共10分)
说明:在以下提供的若干个陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (1)不同类型的变量在内存中占用存储空间的大小都是一样的。
(2)程序调试就是找出并改正C源程序中的语法错误。
(3)表示数学式32) return f(n-1)+n;
else return n;
}
A、9 B、10 C、2 D、4 (18) 不正确的赋值或赋初值的方式是 (18) 。
A、char *p="hello"; B、char s[10]= "hello";
C、char s[10]; s="hello"; D、char s[5]={'h', 'e', 'l', 'l', 'o'};
(19) 若定义FILE *fp; 则文件指针fp 指向 (19) 。 A、文件在磁盘上的读写位置 B、文件在缓冲区上的读写位置 C、整个磁盘文件 D、文件类型结构体 (20) 设变量定义如下,则表达式 *p->str++ 等价于 (20) 。
struct{
int len;
char *str;
}*p;
A、*p++->str B、(*p->str)++ C、*p->(str++) D、*(p->str)++
试题三、程序填空题(每空2分,共20分)
说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。
程序1
【程序说明】
求 2/1 + 3/2 + 5/3 + 8/5 + „ 的前10项之和。(该序列从第2项起,每一项的分子是前一项分
子与分母的和,分母是前一项的分子)
【程序】
#include
void main()
共76页 第25页
{
int i, a = 1, b = 1, t;
(21) ;
for(i = 1; i <= 10; i++){
t = a;
(22) ;
b = t;
y = (23) ;
}
printf("%f\n", y);
}
(21) A、int y = 0 B、int y
C、double y = 0 D、double y (22) A、a = b B、b = a + b
C、a = a + b D、b = a (23) A、y + 1.0*a/b B、y + a/b
C、a/b D、1.0*a/b 程序2
【程序说明】
读入一批正整数(以零或负数为结束标志),输出其中的素数。函数prime(m)用于判断m是否
为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 【程序】
#include "stdio.h"
#include "math.h"
void main( )
{ int x;
int prime(int m);
scanf("%d", &x);
while( (24) ){
if(prime(x)) printf("%d\n", x);
scanf("%d", &x);
}
}
int prime(int m)
{ int k, n, res;
if(m == 1) return 0;
res = 1;
n = (int)sqrt(m);
for(k = 2; k <= n; k++)
if(m%k == 0){
(25) ;
break;
}
共76页 第26页
return (26) ;
}
(24) A、x < 0 B、x >= 0 C、x <= 0 D、x > 0 (25) A、res = 1 B、res = 0 C、res = -1 D、res = 2 (26) A、1 B、res C、0 D、-1 程序3
【程序说明】
输入1000个整数,用选择法将它们从小到大排序后输出。
【程序】
#include
void sort(int a[ ], int n);
void main( )
{ int i, a[1000];
for(i = 0; i < 1000; i++)
scanf("%d", &a[i]);
(27) ;
for(i = 0; i < 1000; i++)
printf("%d ", a[i]);
printf("\n");
}
void sort( (28) )
{ int i, index, k, t;
for(k = 0; k < n-1; k++){
index = (29) ;
for(i = k + 1; i < n; i++)
if( (30) ) index = i;
t = a[index]; a[index] = a[k]; a[k] = t;
}
}
(27) A、sort(a[ ], 1000) B、sort(a, 1000) C、sort(a) D、sort(a[1000])
(28) A、int a, int n B、int a[] C、int *a, int *n D、int *a, int n
(29) A、k B、0 C、n D、i (30) A、a[i] ?a[index] B、a[i] ? a[index] C、a[i] a[index]
试题四、程序阅读题(每空2分,共20分)
说明:阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1
#include "stdio.h"
void main( )
{ int j, k, n = 3, temp, sum = 0;
int a[6][6];
for(k = 0; k < n; k++)
for(j = 0; j < n; j++)
a[k][j] = k * n + j;
共76页 第27页
for(k = 0; k < n; k++)
sum = sum + a[k][k];
printf("%d\n", sum);
for(k = 0; k < n; k++)
sum = sum + a[k][n-k-1];
printf("%d\n", sum);
}
(31) 程序运行时,第1行输出 (31) 。
A、15 B、12 C、3 D、0 (32) 程序运行时,第2行输出 (32) 。
A、30 B、24 C、 15 D、12 程序2
#include
void main( )
{ char ch;
while((ch = getchar()) != '\n'){
if ( ch>='A' && ch<='Z' ) ch = 'a' + 'Z' - ch;
putchar(ch);
}
}
(33) 程序运行时,输入ABC,输出 (33) 。
A、abc B、zyx C、ZYX D、ABC (34) 程序运行时,输入xyz,输出 (34) 。
A、XYZ B、ABC C、cba D、xyz (35) 程序运行时,输入a+Z,输出 (35) 。
A、a+a B、z+z C、Z+a D、a+A 程序3
#include
int f(int number, int digit)
{ int count = 0;
while(number != 0){
if(number%10 == digit) count++;
number = number / 10;
}
return count;
}
void main( ){
printf("count=%d\n", f(10090, 0));
printf("count=%d\n", f(10090, 9));
}
(36) 程序运行时,第1行输出 (36) 。
共76页 第28页
A、count=0 B、count=1 C、count=3 D、count=5 (37) 程序运行时,第2行输出 (37) 。
A、count=3 B、count=9 C、count=1 D、count=5 程序4
#include
void main( )
{ int choice, i;
float price;
for( i = 1; i <= 5; i++) {
scanf("%d", &choice);
if(choice == -1) break;
switch (choice) {
case 1: price=2.5; break;
case 2: price=1.5; break;
case 3: price=4.5; break;
case 4: price=3.5; break;
default: price=0.0; break;
}
printf("%0.1f\n", price);
}
printf("Thanks \n");
}
(38) 程序运行时,输入3 7 -1,第1行输出 (38) 。
A、0.0 B、3.0 C、4.5 D、Thanks (39) 程序运行时,输入3 7 -1,第2行输出 (39) 。
A、0.0 B、3.0 C、7.0 D、Thanks (40) 程序运行时,输入3 7 -1,第3行输出 (40) 。
A、-1.0 B、0.0 C、7.0 D、Thanks 试题五、程序设计题(每题10分,共30分)
1、输入一个职工的月薪salary,计算并输出应交的个人所得税tax = rate * (salary-850)。其中rate的计算方式如下:
当 salary ?850 时,rate = 0;
当 850 , salary ? 1350 时,rate = 5%;
当 1350 , salary? 2850 时,rate = 10%;
当 2850 , salary ? 5850 时,rate = 15%;
当 5850 , salary 时,rate = 20%。
2、输出一张平方根表(如下表所示),x的取值范围是[5, 1000],请调用库函数sqrt()计算平方根。
x sqrt(x)
5 2.24
6 2.45
… …
999 31.61
共76页 第29页
1000 31.62
3、输入一个字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数。
2005年春浙江省高等学校
计算机等级考试试卷(二级C)
说明:?考生应将试题一至试题三的答案涂写在答题卡上,将试题四、试题五的答案填写在答卷上,
否则作无效处理;
?请将你的准考证号的后四位填写在答卷右下角的指定位置内;
?考试时间为120分钟。
试题一、判断题(每题1分,共10分)
说明:在以下提供的若干个陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (1) 在C 语言中,常量和变量都有数据类型。
(2) C 语言的运算符只有单目运算符和双目运算符两种。
(3) 若变量已正确定义,表达式 x + y = z符合C语言语法。
(4) C编译器可以找出C源程序中所有的语法错误和逻辑错误。
(5) 表达式3 * 5 / 2 和表达式3 / 2 * 5等价。
(6) 表达式m = n++ 的求解顺序是先计算m = n,再计算n = n + 1。
(7) 变量名fahr和Fahr代表两个不同的变量。
16(8) 若表达式sizeof(unsigned)的值为2,则unsigned 类型数据能表示的最大整数为2-1。 (9) break语句只能用于循环结构中。
(10) while语句先判断循环条件,所以循环体有可能一次也不执行。
试题二、单选题(每题2分,共20分)
(11) 执行scanf("%d%lf%d", &money, &rate, &year),输入 (11) 后,money=1000,year=3,rate=0.025。
A、1000 3 0.025 B、1000 0.025 3
C、1000, 3, 0.025 D、1000, 0.025, 3 (12) 判断变量ch 是英文字母的表达式为 (12) 。
A、( 'a' <= ch <= 'z') || ( 'A' <= ch <= 'Z')
B、(ch >= 'a' && ch <= 'z') && ( ch >= 'A' && ch <= 'Z')
C、(ch >= 'a' && ch <= 'z') || ( ch >= 'A' && ch <= 'Z')
D、( 'A' <= ch <= 'z') && ( 'A' <= ch <= 'z') (13) while( (13) ) 等价于while(!x)。
A、x == 1 B、x == 0
C、x != 0 D、x != 1
(14) 以下程序段输出字符串str,其中循环条件str[i] != '\0' 还可以写成 (14) 。
char str[80];
for(i = 0; str[i] != '\0'; i++)
putchar(str[i]);
A、str[i] != NULL B、i < 80
共76页 第30页
C、!(str[i] = '\0') D、i <= 80
(15) 设变量定义为:int n, *p; char ch, *q, *g;,则语句 (15) 是不正确的。
A、p = &n; g = q = &ch; B、p = &n; q = &ch;
C、p = &n; g = &ch; D、p = &n; q = &ch; g = p;
(16) 设变量定义如下,则对其中的结构分量num正确的引用是 (16) 。
struct student {
int num;
char name[20];
float score;
} stud[10];
A、stud[1].num = 10; B、student.stud.num = 10;
C、struct.stud.num = 10; D、struct student.num = 10; (17) 对于以下递归函数f,调用函数f(2, '1', '2', '3')的输出结果是 (17) 。
void f(int n, char a, char b, char c)
{ if (n == 1)
printf("%c->%c#", a, b) ;
else{
f(n-1, a, c, b);
printf("%c->%c#", a, b);
f(n-1, c, b, a);
}
}
A、1->2#1->3#3->2# B、3->2#1->2#1->3#
C、'1'->'3'#'3'->'2'#'1'->'2'# D、1->3#1->2#3->2# (18) 下列程序段的输出结果是 (18) 。
int t, a[3] = {10, 5, 1};
int *p;
for(p = a; p < a+3; p++)
t = t + *p;
printf("%d", t);
A、15 B、16
C、10 D、不确定
(19) 设变量定义为:int *p[3], a[3];, (19) 是正确的赋值。
A、p = &a[0] B、*p = **a
C、p[0] = a D、**p = a
(20) 对于以下的变量定义,语句 (20) 在语法和语义上都是正确的。
struct node {
float x, y;
char s[10];
} point = {1, 2, "abc"}, *p;
A、*p = point; B、p = &point;
C、point = p; D、p->x = point.y;
试题三、程序填空题(每空2分,共20分)
说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。
共76页 第31页
程序1、
【程序说明】 –6根据下式计算s的值,要求精确到最后一项的绝对值小于10。
111 s,,,,,?1357
【程序】
#include
#include
void main( )
{ int flag = 1, t = 1;
(21) ;
while( (22) ){
item = flag * 1.0 / t;
s = s + item;
(23) ;
t = t + 2;
}
printf ( "s = %f\n", s);
}
(21) A、double item = 2, s = 0; B、double item = 0, s = 0;
C、double item = 1, s = 1; D、double item = 3, s = 1;
(22) A、item < 1E-6 B、item >= 1E-6
C、fabs (item) < 1E-6 D、fabs (item) >= 1E-6 (23) A、flag = -1 B、s = -s
C、flag = -flag; D、t = -t
2、程序2
【程序说明】
验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,„,18=7+11。将6,100之间的每个偶数都表示成两个素数之和。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 【程序】
#include "stdio.h"
#include "math.h"
void main( )
{ int i, k;
int prime(int m);
for (i = 6; i <= 100; i = i+2 )
for(k = 3; k <= 50; k++)
if( (24) ){
printf("%d=%d+%d\n", i, k, i-k);
break;
}
}
共76页 第32页
int prime(int m)
{ int k,n;
if(m == 1) return 0;
n = (int)sqrt(m);
for(k = 2; k <= n; k++)
(25) ;
(26) ;
}
(24) A、prime(i) B、prime(i) && prime(k)
C、prime(k) && prime(i-k) D、prime(k) (25) A、if(m%k != 0) return 0 B、if(m%k == 0) return 0
C、if(m%k == 0) return 1 D、if(m%k != 0) return 1 (26) A、return 0; B、return 1;
C、else return 0; D、else return 1;
程序3、
【程序说明】
输入一个字符串(少于80个字符),滤去所有的非八进制字符后,组成一个新字符串(八进制形式),然后将其转换为十进制整数后输出。函数stoi(str) 将八进制形式的字符串str转换为十进制整数,例如,stoi("12")的值为10(八进制12对应十进制10)。
【程序】
#include
void main( )
{ int i, k;
char s[10];
int stoi(char *str);
gets(s);
for(i = k = 0; s[i] != '\0'; i++)
if(s[i] <= '7' && s[i] >= '0')
(27) ;
(28) ;
printf("digit = %d\n", (29) );
}
int stoi(char *str)
{ int i, n = 0;
for(i = 0; str[i] != '\0'; i++)
(30) ;
return n;
}
(27) A、s[i] = s[k]; i++ B、s[k] = s[i]
C、s[k] = s[i], k++ D、s[i] = s[k] (28) A、s[i] != '\0' B、s[k] != '\0'
C、s[i] = '\0' D、s[k] = '\0' (29) A、stoi(s) B、s
共76页 第33页
C、stoi(s[i]) D、n
(30) A、n = n * 8 + (str[i] - '0') B、n = n * 10 + (str[i] - '0')
C、n = n * 8 + str[i] D、n = n + str[i]
试题四、程序阅读题(每题5分, 共20分)
说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。 1、 程序1
#include
void main( )
{ int x = 10023;
do{
printf("%d#", x%10);
x = x / 10;
}while (x != 0);
}
2、 程序2
#include
void main( )
{ int i, x = 1, y = 1;
for (i = 1; i <= 5; i++){
x = x + y;
y++;
printf("%d#", x);
}
}
3、 程序3
# include
void main ( )
{ int x = 1, y = 1;
void f(int m,int n, int *px,int *py);
f(2004, 70, &x, &y);
printf ("%d#%d#", x, y);
f(2005, 98, &x, &y);
printf ("%d#%d#", x, y);
}
void f(int m,int n, int *px,int *py)
{ int k, flag;
int tab [2][13]= {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
};
flag = m%4==0 && m% 100!= 0 || m%400==0;
for ( k=1; n>tab[flag][k]; k++)
共76页 第34页
n = n - tab [flag][k];
*px = k;
*py = n;
}
4、 程序4
/* 假设读写文件的操作能正常完成 */
#include
#include
void main()
{ char ch, *s = "ACEDB";
int x;
FILE *in;
if ((in = fopen("file.txt","w")) != NULL)
while(*s != '\0')
fputc(*s++,in);
fclose(in);
if((in=fopen("file.txt","r")) != NULL)
while((ch=fgetc(in)) !=EOF){
switch (ch) {
case 'A': x = 95; break;
case 'B': x = 85; break;
case 'C': x = 75; break;
case 'D': x = 60; break;
default: x = 0; break;
}
printf("%d#", x);
}
fclose(in);
}
试题五、程序设计题(每题10分,共30分)
1. 输入x,计算并输出下列分段函数 f(x) 的值。可以调用数学库函数:平方根函数sqrt(),绝对值函数fabs()和幂函数pow()。
||0xx,,,xx,,,102, fx(),,3(2)24xx,,,,,254xx,,,
2. 输出一张摄氏,华氏温度转换表,摄氏温度的取值区间是[ -100?, 150? ],温度间隔5?。要求定义和调用函数ctof(c),将摄氏温度C转换为华氏温度F,计算公式:F = 32 + C * 9 / 5。
3. 输入一个正整数 n (1?n?6),再输入一个n 行 n 列的矩阵,找出该矩阵中绝对值最大的元素以及它的行下标和列下标。
共76页 第35页
4.
2004年秋浙江省高等学校
计算机等级考试试卷(二级C) 说明:? 考生应将试题一至试题三的答案涂在答题卡上,将试题四、试题五的答案填写在答卷上,
否则作无效处理;
? 请将你的准考证号的后四位填写在答卷右下角的指定位置内;
? 考试时间为120分钟。
试题二、语言基础题(本题共30分)
(一)判断题(每题1分,共10分)
说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (21) C 语言程序的三种基本结构是顺序、选择和嵌套。
(22) 在C 语言程序中,在函数内部定义的变量称为全局变量。 (23) 运算符“=”和“&=”的优先级相同。
(24) '%f' 是不正确的字符常量。
(25) 运算符“+”不能作为单目运算符。
(26) 如果运算符“*”和“/”都是右结合的,则表达式10 * 6 / 5 的值是10。 (27) s(s-a)(s-b)(s-c) 是合法的C语言表达式。
(28) 表达式 !!6的值是6。
(29) 表达式 ~(~2<<1)的值是5。
(30) 对于变量定义:int a[10], *p=a+8; 数组a的最后一个元素是p[1]。
(二)单选题(每题2分,共20分)
(31) 执行语句 printf(" (26) ", "A"); 将得到出错信息。
A、%u B、%s C、%e D、%d (32) 设c是一个字符变量,求解表达式 (27) 后,c的值不是1就是0。
A、c=getchar()!='\n' B、(c=getchar())!='\n'
C、c = '1' D、c = EOF (33) 下列定义中, (28) 定义的变量可以存放 -123.4。
A、long a; B、unsigned b;
C、int d; D、float c; (34) 对于变量定义:char *pp[100], pp是一个 (29) 。
A、函数 B、数组元素 C、指针变量 D、数组 (35) 下列程序段的输出结果是 (30) 。
char *st[ ]={"SUN", "MOON", "STAR", "X"};
printf("(%s, %c)", *(st+1)+1, *(*(st+2)+2)+2);
A、(MOON,M) B、(OON,C) C、(OON,Q) D、(OON, A) (36) 对于以下的变量定义,表达式 (31) 是不正确的。
struct node {
float x, y;
char s[10];
} point, *p=&point;
共76页 第36页
A、p->x=2.0 B、(*p).y=3.0 C、point.x=2.0 D、p->s="a"
(32) 。 (37) 下列程序段的输出结果是
int a = 10, b=0;
if ( a > 15 )
b = 1;
else if ( a < 2 )
b = 2;
else
b = 3;
printf("%d", b);
A、3 B、2 C、1 D、0
(38) 只有当输入的数据满足1<=month<=12时,循环语句 (33) 才能正常退出。
A、do{
scanf("%d", &month);
} while (month >= 1 || month <= 12);
B、do{
scanf("%d", &month);
} while (month >= 1 && month <= 12);
C、do{
scanf("%d", &month);
} while (month < 1 || month > 12);
D、do{
scanf("%d", &month);
} while (month <= 1 || month >= 12);
(39) 调用函数f(27)的输出结果是 (34) 。
void f(int n)
{ if(n<5)
printf("%d", n);
else{
printf("%d", n%5);
f(n/5);
}
}
A、102 B、2 01 C、21 D、20
(40) 下列程序段的输出结果是 (35) 。
int k=3, j=4;
int *p=&k, *q=&j;
(*p)--;
j=k;
(*q)--;
printf("(%d, %d)", k, j);
A、(2,1) B、(1,2) C、(4,3) D、(3,3)
共76页 第37页
试题三、程序填空题(每空2分,共20分)
说明:阅读下列程序说明和相应程序(段),在每小题提供的若干可选答案中,挑选一个正确答案。
程序1、
【程序说明】
输入一批以 -1结束的整数,求偶数和。
【程序】
#include
void main()
{ int x, sum;
sum=0;
scanf("%d", &x);
(36) {
if( (37) ) sum=sum+x;
(38) ;
}
printf("sum=%d ", sum);
}
(36) A、while(x == -1) B、while(x != -1)
C、if(x == -1) D、if(x != -1)
(37) A、x==2 B、x%2==2
C、x%2==0 D、x/2==0
(38) A、scanf("%d", &x) B、scanf("%d", x)
C、sum=0 D、x=sum
、程序2 2
【程序说明】
a是一个3×3的矩阵,输入a的元素,如果a是下三角矩阵, 输出“YES”, 否则, 输出“NO”。
(下三角矩阵,即主对角线以上的元素都为0, 主对角线为从矩阵的左上角至右下角的连线)
【程序】
#include
void main( )
{ int flag, i, k;
int a[3][3];
for (i=0;i<3;i++)
for (k=0;k<3;k++)
scanf("%d",&a[i][k]);
(39) ;
for (i=0;i<3&&flag;i++)
for (k=i+1; k<3&&flag;k++)
if( (40) ) (41) ;
if(flag) printf("YES\n");
else printf("NO\n");
}
共76页 第38页
(39) A、flag=0 B、flag==0 C、flag==1 D、flag=1 (40) A、a[k][i]!=0 B、a[i][k]==0 C、a[i][k]!=0 D、a[k][i]==0 (41) A、flag=0 B、flag==0 C、flag==1 D、flag=1
程序3、
【程序说明】
输入一个字符串,将其中的大写字母转换为小写字母后输出。 【程序】
#include
void main( )
{ char str[80];
int k;
gets(str);
for(k=0; str[k]!= '\0'; k++)
if ( (42) ) (43) ;
puts(str);
}
(42) A、'A'<=str[k]<='Z' B、str[k]> 'A'&&str[k]< 'Z'
C、str[k]>= 'A'&&str[k]<= 'Z' D、str[k]>= 'A'||str[k]<= 'Z'
(43) A、str[k] = str[k] – 32 B、str[k] = str[k] - 'a' + 'A'
C、tolower(str[k]) D、str[k] = str[k] - 'A' + 'a'
程序4、
【程序说明】
请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。 【程序】
int f1(char s[ ]) int f2(char *s)
{ int k=0; { char *ss;
(44) ;
while(s[k]!= '\0') while(*s!='\0')
k++; s++;
return k; return (45) ; } }
(44) A、s=ss B、ss=s C、ss=NULL D、s=NULL (45) A、ss-s B、s-ss-1 C、s-ss D、s-ss+1
试题四、程序阅读题(每题5分, 共15分)
说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。 5、 程序1
# include
void main( )
{ int j, k;
float f,s;
共76页 第39页
s=0; f=1;
for(k=1; k<=3; k++){
for(j=1; j
void main( )
{ long fun(long number);
printf("%ld\n", fun(-974)); }
long fun(long number) { int flag;
long res = 0;
flag = number<0 ? -1 : 1;
if(number<0) number = - number;
while(number!=0){
res = res*10 + number%10;
number /= 10;
printf("%d#", res);
}
return flag*res;
}
7、 程序3
#include
#include
void main()
{ FILE *in;
char *string1 = "IF YOU FAIL TO PLAN";
char *string2 = "YOU PLAN TO FAIL";
if ((in = fopen("file1.txt","w")) != NULL)
while(*string2 != '\0')
fputc(*string2++,in);
fclose(in);
if((in=fopen("file1.txt","r")) != NULL)
while(fgetc(in)!= EOF)
putchar(*string1++);
fclose(in);
}
共76页 第40页
试题五、程序设计题(每题10分,共20分)
1、输入10个整数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。 2、输入一个正实数x和一个正整数n,求下列算式的值。要求定义和调用2个函数:fact(n)计算n
n的阶乘;mypow(x, n)计算x的n次幂(即x),2个函数的返回值类型都是double。
234xxxxn1x...(1)n,,,,,,, 2!3!4!n!
2003年秋浙江省高等学校
计算机等级考试试卷(二级C) 说明:? 考生应将试题一至试题三的答案涂在答题卡上,将第四、五题的答案填写在答卷
上,否则作无效处理;
? 请将你的准考证号的后四位填写在答卷右下角的指定位置内;
? 考试时间为120分钟。
试题二、语言基础题(本题共34分)
(一)判断题(每题1分,共10分)
说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (16) C语言源程序文件通过了编译、连接之后,生成一个后缀为.EXE的文件。 (17) 在C程序中,函数既可以嵌套定义,也可以嵌套调用。
(18) 在 C 程序中,APH 和 aph 代表不同的变量。
(19) 表达式0195是一个八进制整数。
(20) 表达式 3.14%2 不符合C语言语法。
(21) 设变量定义为 char cc[ ]="12\n345" ,则表达式 sizeof(cc) 的值是7。 (22) 执行 printf ("%d",'M'-'A'+'a' -'m'); ,输出0。
(23) 表达式 !x 等价于x != 1。
(24) 表达式 (z=0, (x=2)||(z=1),z) 的值是1。
(25) 执行 printf("%x","12345"+1);,输出12346。
(二)单选题(每题2分,共24分)
(26) 运算符 (26) 的优先级最高。
A、[ ] B、+= C、? : D、++ (27) 若a是整型变量,表达式 ~(a ^ ~a ) 等价于 (27) 。
A、~a B、1 C、0 D、2 (28) 下列程序段的输出结果是 (28) 。
#define MA(x, y) ((x)*(y))
printf("%d", MA(5, 4+2)-7);
A、30 B、23 C、15 D、1 (29) 设有整型变量a, b,c,其中a,b的值分别为10与20,计算表达式“c=(a%2==0)?a:b”
后,c的值为 (29) 。
A、0 B、5 C、10 D、20
共76页 第41页
(30) 下列程序的输出结果是 (30) 。
#include
void main( )
{ int y;
double d=3.4, x;
x=(y=d/2.0)/2;
printf(" (%0.2f, %d) ", x, y);
}
A、(0.00, 1) B、(0.85, 1.7) C、(0.50, 1) D、以上都不对 (31) 程序段 (31) 的功能是将变量u、s中的最大值赋给变量t。
A、if (u>s) t=u; t=s; B、t=u; if (t>s) t=s;
C、if (u>s) t=s; else t=u; D、t=s; if (u>t) t=u; (32) 对于以下递归函数f,调用 f(3) 的返回值是 (32) 。
int f(int n)
{ if(n) return f(n-1) + n;
else return n;
}
A、10 B、6 C、3 D、0 (33) 下列程序段的输出结果是 (33) 。
int k=1;
switch(k) {
case 1: putchar('P');
case 2:
case 3: putchar('Q'); break;
case 4: putchar('R');
default: putchar('S');
}
A、P B、PQ C、PQR D、PQRS (34) 下列程序的输出结果是 (34) 。
void main()
{ int k;
for(k=1; k<5; k++) {
if(k%2) printf("#"); else continue;
printf("*");
}
}
A、#*#* B、*#*# C、## D、以上都不对 (35) 设变量定义为 int a[3]={1, 4, 7}, *p=&a[2]-2;,则*p的值是 (35) 。
A、&a[2]-2 B、5 C、2 D、1 (36) 若变量已正确定义, (36) 不能使指针p成为空指针。
A、p='\0' B、p=0 C、p=NULL D、p=EOF (37) 下列程序的输出结果是 (37) 。
#include
int x;
共76页 第42页
int p(int *y)
{ ++*y;
return x-1;
}
void main()
{ int y;
y=p(&x);
printf(" (%d, %d) ", x, y);
}
A、(-1, 0) B、(1, -1) C、(1, 0) D、出错
试题三、程序填空题(每空2分,共16分)
说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1、
【程序说明】
输出1,1000之间所有满足各位数字的立方和等于它本身的数。
【程序】
#include
void main( )
{ int digit, k, m, s;
for (k=1; k<=1000; k++){
(38)
while(m!=0){
digit=m%10; s=s+digit*digit*digit;
(39) ;
}
if( (40) ) printf("%d ", s);
}
}
(38) A、s=0; B、m=k; s=0; C、m=k; D、k=m; s=0;
(39) A、m=m/10 B、m=m%10 C、m=m D、m=k/10
(40) A、m!=s B、m==s C、k!=s D、k==s
2、程序2
【程序说明】
输入10个整数,将它们存入数组a中,再输入一个数x,然后在数组中查找x,如果找到,输
出相应的下标(如有多个元素与x相等,只要输出下标值最小的那个元素的下标),否则,输出“Not
Found”。
【程序】
#include
void main( )
{ int k, sub, x; int a[10];
共76页 第43页
for(k=0; k<10; k++) scanf("%d", &a[k]);
printf("Input x\n");
scanf("%d", &x); sub=-1;
for(k=0; k<10; k++)
if(a[k]==x) (41)
if( (42) ) printf("Index is %d\n", sub);
else printf("Not Found\n");
}
(41) A、sub=k; B、break; C、{ sub=k; break;} D、sub=k; break;
(42) A、sub!=-1 B、sub!=0 C、sub==-1 D、sub==0
程序3、
【程序说明】
当前目录下存放着文本文件from.txt,将其中除数字以外的内容显示在屏幕上。 【程序】
#include
#include
void main()
{ FILE *fr; int ch;
if( (43 ) ) {
printf(" Can not open file--> form.txt " );
exit(0);
}
while(!feof(fr)){
(44) ;
if( (45) )
putchar(ch);
}
fclose(fr);
}
(43) A、(fr=fopen("from.txt","w"))==NULL
B、(fr=fopen("from.txt","r"))==NULL
C、fr=fopen("from.txt","r")==NULL
D、fr=fopen("from.txt","a")==NULL
(44) A、ch=getchar(fr) B、ch=fgetc()
C、ch=fgetc(fr) D、ch=getchar()
(45) A、ch>='0'||ch<='9' B、ch<'0'&&ch>'9'
C、ch>='0'&&ch<='9' D、ch<'0'||ch>'9' 试题四、程序阅读题(每题5分, 共15分)
说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。
8、 程序1
共76页 第44页
#include
void main()
{ int i, k,m;
int a[8]={15,60,75,73,92,87,64,79}, s[10];
for(k=0; k<10; k++) s[k]=0;
for(i=0; i<8; i++){
k=a[i]/10; s[k]++;
}
m=s[0]; k=1;
while (k<10){
if(s[k]!=0) printf("%d#", s[k]);
if (s[k]>m) m=s[k];
k++;
}
printf("%d", m);
}
2、程序2
#include
void main()
{ int j, k;
int a[3]={3, 4, 5};
for(j=0; j<3; j++){
for(k=0; k<3; k++) printf("%d ",a[(j+k)%3]);
printf("#");
}
}
3、程序3
#include
void main( )
{ int i=0, n;
char s[10]= "298h01";
n=0;
for(i=0; s[i]!= '\0'; i++)
if(s[i]<= '9'&&s[i]>= '0') n=n*10+(s[i]- '0'); else break;
printf("%d\n", n);
}
试题五、程序设计题(每题10分,共20分)
1、输入10个整数,求它们的平均值,并输出大于平均值的数据的个数。 2、 输入两个正整数m和n(m 3、 void main()
double fact(int n) {int n,i;
{ double ep=1;
int k; scanf(“%d”,&n);
double result = 1; for(i=1; i<=n; i++)
for(k=1; k<=n; k++) {
result *=k; ep=ep/10;
return result; printf(“%f\n”,cal(ep));
} }
}
2、double cal(double e)
{
int i=1;
double s=1;
do{
i++;
s=s+1/fact(i);
}while(1/fact(i)>=e);
return s;
}
共76页 第46页
2007年春计算机等级考试(二级C)参考答案 试题1~6 B,A,C,C D,C,B,A A,B,B,D A,A,D,B D,C,C,B C, A,A,D
试题7:
3、double cal_power; 1、 Cal_power(double x, int n) double cal_money; { void main() Double k=1; {int i,j; Int i; Double loan,rate,money; If(n!=0) Printf(“input loan,rate\n”); { Scanf(“%lf%lf”,&loan,&rate); for(i=1;i #include void main() double total(int n) {float a[100],sum=0.0,aver; { int i; int i,total=0; double sum=1.0;
for (i=2;i<=n;i++) printf(“请输入100个学生的英语成绩:\n”);
sum=sum+1.0/i; for (i=0;i<100;i++) return (sum); scanf(“%f”,&a[i]); } for (i=0;i<100;i++)
void main() { sum=sum+a[i];
{double s; if ( a[i]<60) total++; int m; } printf(“请输入一个正整数:”); aver=sum/100; scanf(“%d”,&m)); printf(“平均值为:%f,不及格的学生总共
s=total(m); 有:%d\n”,aver,total); printf(“s=%f\n”,s); } }
共76页 第47页
2006年春计算机等级考试(二级C)参考答案 试题1~6 :ADDCD ACCDC BACDA BBABB ABCD
试题7 试题8
#include #include void main( ) void main( ) { int mark, a, p, f; { int i, n; c = p = f = 0; double x, sum; printf("Enter scores:"); double fact(int n);
scanf ("%d", &mark); scanf("%d", &n); while (mark >= 0){ sum = 0; if(mark >= 85) a++; for(i=1; i<=n; i++)
else if (mark >= 60) p++; sum = sum + 1/fact(i);
else f++; printf("sum=%f\n", sum); scanf ("%d", &mark); } } double fact(int n) printf(">=85:%d\n", a); { int i; printf("60-84:%d\n", p); double res = 1;
printf("<60:%d\n", f); for(i=1; i<=n; i++) res = res*i; } return res;
}
2005年秋计算机等级考试(二级C)参考答案 试题1 : BBBBA BBAAA
试题2~4 :ADBCA DACBD CCADB BBDAC BBBDA CCCAD
试题五、程序设计题(每题10分,共30分)
1、 2、
#include #include
void main( ) #include { double rate, salary, tax; void main()
scanf("%lf", &salary); { int x; if (salary <= 850) rate = 0; printf("x sqrt(x)\n"); else if(salary <= 1350) rate=0.05; for(x=5;x<=1000;x++) else if(salary <= 2850) rate=0.10; printf("%d %f\n", x, sqrt(x));
else if(salary <= 5850) rate=0.15; }
else rate = 0.20; tax = rate * (salary-850); printf("tax=%0.2f\n", tax); }
3
#include void main() { char str[80], ch;
int count=0, i=0;
gets(str); ch = getchar();
共76页 第48页 for(i=0; str[i]!='\0'; i++)
if(str[i] == ch) count++;
printf("count = %d\n", count);
}
2005年春计算机等级考试(二级C)参考答案 试题一:A,B,B,B,B,A,A,A,B,A 试题二:B,C,B,A,D,A, D,D,C,B
试题三:1、A,D,C 2、C,B,B 3、C,D,A,A 试题四:
1、3#2#0#0#1#
2、2#4#7#11#16#
3、3#10#4#8#
4、95#75#0#60#85#
试题五:
1、 2
#include #include
#include float ctof(int c) void main() {
{float x,y return (32+c*9.0/5); } printf(“请输入x:”); void main() scanf(“%f”,&x);
{float F;; if (x<0) y=fabs(x);
int i; else if (x>=0&&x<2) y=sqrt(x+1); printf(“摄氏温度与华氏温度对应表:\n”); else if (x>=2&&x<4 ) y=pow((x+2),3); else if (x>=4) y=2*x+5; printf(“摄氏温度\t华氏温度\n”); printf(“y=%f\n”,f); for (i=-100;i<=150;i+=5) } printf(“%d\t%f\n”,i,ctof(i));
}
3、
#include
void main()
{int a[10],n,i,j,x,y,max;
printf(“请输入一个正整数n(1?n?6):”); scanf(“%d”,&n); printf(“请输入一个n行n列的矩阵:\n”); for (i=0;imax) {max=a[i][j];x=i;y=j;}
printf(“绝对值最大的元素为:%d,下标分别为:%d,%d\n”,max,x,y); }
2004年秋计算机等级考试 (二级C) 参考答案
试题1,2:ABAAA ABBAB CCDDB DACBA 试题3:1、BCA 2、DCA 3、CD 4、BA
共76页 第49页
试题四、程序阅读题(每题5分,共15分)
1 1#3# 21# 错1项扣2分
2 4#47#479#-479 错1项扣2分
3 IF YOU FAIL TO PL 错1项扣2分
试题五、编程题(每题10分,共20分)
1、
#include #include
main( )
{ int i, sub, t; int a[10];
for(i=0; i<10; i++)
scanf("%d", &a[i]); sub=0;
for(i=1; i<10; i++)
if(abs(a[sub])>abs(a[i])) sub=i; t=a[sub];
a[sub]=a[9];
a[9]=t; for(i=0; i<10; i++)
printf("%d ", a[i]);
}
2、
#include double fact(int n)
main( ) { int i; { int flag, i, n; double res=1; double x, sum; for(i=1; i<=n; i++) double fact(int n); res=res*i;
double mypow(double x, int n); return res;
scanf("%lf%d", &x, &n); } sum = 0; double mypow(double x, int n) flag = 1; { int i; for(i=1; i<=n; i++){ double res=1;
sum = sum + flag*mypow(x,i)/fact(i); for(i=1; i<=n; i++)
flag = -flag; res=res*x; } return res; printf("%f\n", sum); } }
2003年秋计算机等级考试 (二级C) 参考答案
试题1,2:ABAAB BABB B ACBCA DBBAD AC 试题3:1、BAD 2、DA 3、BCD
试题4、
1、1#2#3#1#1#3
2、3 4 5 #4 5 3 #5 3 4 #
3、298
共76页 第50页
试题5、
1. 2.
#include //参考答案 #include //参考答案
#include void main( ) void main() {
{ int a[10],i,c=0,sum=0;
int isprime(int x); float ave; int m,n,sum=0,i; for(i=0;i<10;i++)
while(1) {
{ scanf("%d,%d",&m,&n); scanf("%d",&a[i]); if(mave)c++;
printf("Sum=%d\n",sum); }
} printf("%d",c);
int isprime(int x)
{ }
int i;
for(i=2;i
#include
#include
void main()
{
int i,n;
/***** 1 *****/
struct axy { float x,y; } a; //struct axy { float x,y; } *a;
scanf("%d",&n);
a=(float*) malloc(n*2*sizeof(float));
for(i=0;i
#define N 10
void main()
{
int i,j,min,temp;
int a[N]={5,4,3,2,1,9,8,7,6,0};
printf("\nThe array is:\n"); /* 输出数组元素 */
for (i=0;i=a[j]) min =j;
/****** 2 ******/
temp=a[min]; a[min]=a[j]; a[j]=temp; //temp=a[min]; a[min]=a[i]; a[i]=temp;
}
printf("\nThe sorted numbers: \n"); /* 输出排序结果 */
for (i=0;i
#include
void fun(char *s,char *t)
{
int i,sl;
sl=strlen(s);
for(i=0;i
#include
void main()
{ float x,eps,s=1,t=1,i=1;
scanf("%f%f",&x,&eps);
do {
/***** 1 *****/
t=-t*x/++i; //t=-t*x/i++;
s+=t;
/***** 2 *****/
} while(fabs(t)=eps);
printf("%f\n",s);
}
5(运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+33333+333333。
#include
void main()
{ int i,a,n; long t=0;
/********* 1 *******/
s=0; // long s=0;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++) {
共76页 第53页
/******* 2 ******/
t=t*10+i; //t=t*10+1;
s=s+t;
}
s=s*a;
printf("%ld\n",s); }
6(输入一个字符串,将组成字符串中所有非英文字母的字符删除后输出。(例如:输
入”abc123+xyz.5”,应输出”abcxyz”)
#include
#include
void main()
{
char str[256];
int i,j,k=0,n;
gets(str);
n=strlen(str);
for(i=0;i'z')
//if (tolower(str[i])>='a' && tolower(str[i])<='z')
{
/********2********/
str[n]=str[i]; n++; //str[k]=str[i]; k++;
}
str[k]='\0';
printf("%s\n",str);
}
7(用递归法将一个六位整数n转换成字符串。(例如:输入123456,应输出字符串“123456”)
#include
void itoa(long i,char *s) {
if(i==0)
return;
/****** 1 ******/
*s = '1'+i%10; // *s = '0'+i%10;
itoa(i/10,s-1);
}
void main()
{
long n;
char str[7]="";
scanf("%ld",&n);
/****** 2 ******/
itoa(n,str+6); // itoa(n,str+5);
printf("%s",str);
共76页 第54页
}
8(运行时输入10个数,然后分别输出其中的最大值,最小值。 #include
void main()
{ float x,max,min; int i;
/******** 1 *******/
for(i=0;i<=10;i++) { //for(i=0;i<10;i++) {
scanf("%f",&x);
/******* 2 ********/
if(i= =0) { max=x;min=x;} //if(i==1) { max=x;min=x;}
if(x>max) max=x;
if(x
void main()
{ int n,i;
scanf("%d",&n);
/****** 1 ******/
i=1; //i=2;
while(n>1)
if(n%i==0) {
printf("%d\t",i);
n/=i;
}
else
/******** 2 *******/
n++; //i++; }
共76页 第55页
程序填空题及答案 该文件中”_______N______”是根据程序功能需要填充的部分,请完成程序填充。(注意:不得加行、
减行、加句、减句,否则后果自负)
(注:注释符号”//”后为参考答案)
1(程序功能:求输入的整数各位数字之和,如输入234则输出9,输入-321则输出6。
#include
#include
#include
void main()
{
int n,s=0;
scanf("%d",&n);
______ 1 ______ //n=abs(n);
while(n!=0) {
______ 2 ______ // s=s+n%10;
n=n/10;
}
printf("%d\n",s);
}
2(将字符串s中所有的字符?c?删除。
#include
void main()
{
char s[80];
int i,j;
gets(s);
for(i=j=0;______1______;i++) //s[i]!='\0'
if(s[i] != 'c')
{
s[j]=s[i];
______2______ //j++;
}
s[j]='\0';
puts(s);
}
3(输入三个整数,按由小到大的顺序输出这三个数。 #include
void swap(______1______) //int *pa,int *pb
{ /*交换两个数的位置*/
int temp;
temp = *pa;
*pa = *pb;
*pb = temp;
}
void main()
共76页 第56页
{
int a,b,c,temp;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
swap(&a,&b);
if(b>c)
swap(&b,&c);
if(______2______) //a>b
swap(&a,&b);
printf("%d,%d,%d",a,b,c); }
(输入m、n (要求输入数均大于0),输出他们的最大公约数。 4
#include
void main()
{ int m,n,k;
while(scanf("%d%d",&m,&n), _______1_____ ); //m<=0||n<=0
for( ____2____; n%k!=0||m%k!=0; k--); //k=m>n?m:n
printf("%d\n",k);
}
5.输入1个整数后,输出该数的位数。(例如:输入3214则输出4,输入-12345则输出5)。 #include
void main()
{ int n,k=0;
scanf("%d",&n);
while( _____1_____ ){ //n!=0
k++;
_____2_____; //n=n/10
}
printf("%d\n",k);
}
6. 数列第1、2项均为1,此后各项值均为该项的前2项之和。计算数列第30项的值。 #include
_______1______ //long f(int n); void main()
{
printf("%ld\n",f(30));
}
long f(int n)
{
if( ______2______ ) //n==0 || n==1
return 1;
else
return f(n-1)+f(n-2); }
7(调用函数f, 将1个整数首尾倒置。例如:若程序输入12345,则输出54321,如程序输入-76543,
共76页 第57页
则输出-34567。
#include
#include
long f(long n)
{ long m,y=0; m=fabs(n);
while(m!=0) {
y=y*10+m%10;
____1____ //m=m/10;
}
if(n>=0) return y;
else _____2_____ //return -y; }
void main()
{
printf("%ld\t",f(12345)); printf("%ld\n",f(-34567));
}
8(找出100~999间所有的Armstrong数。所谓Armstrong数是指这个3位数各位数字的立方和等于自身。(例如:371=3*3*3+7*7*7+1*1*1,则371就是Armstrong数 )。
#include
#include
void main()
{
int i,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100;
_______1_______ //b=(i-a*100)/10;
c=i%10;
if (________2________) //pow(a,3)+pow(b,3)+pow(c,3)==i
printf("%d is a Armstrong number!\n",i);
}
}
9(将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。(例如:输入十进制数79,将输出十六进制数4f)
# include
# include
char trans(int x)
{
if(x<10) return '0'+x;
else _______1________ //return 'a'+x-10; }
int DtoH(int n,char *str)
{
int i=0;
while(n!=0)
{
共76页 第58页
________2________ //str[i]=trans(n%16);
n/=16;i++;}
return i-1;
}
void main()
{
int i,k,n;
char *str;
scanf("%d",&n);
k=DtoH(n,str);
for (i=0;i<=k;i++) printf("%c",str[k-i]); }
10(调用函数f,从字符串中删除所有的数字字符。
#include
#include
#include
void f(char *s)
{ int i=0;
while(s[i]!='\0'){
if(isdigit(s[i])) ____1____(s+i,s+i+1); //{strcpy
___2___ i++;} //i--;} }
void main()
{ char str[80];
gets(str); f(str); puts(str); }
11(求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。(例如:b[1]=a[1]+a[0],…b[9]=a[9]+a[8])
#include
void main()
{
int a[10],b[10],i;
printf("\nInput 10 numbers: ");
for (i=0; i<10;i++) /* 数组输入 */
scanf("%d", &a[i]);
for (i=1; i<10; i++)
b[i]=______1______; /* 计算b数组中的元素 */
//a[i-1]+a[i]
for (i=1; i<10; i++)
{
printf("%3d",b[i]);
if (______2______) printf("\n"); /* 每行打印3个数据 */
//i%3==0
}
}
12(调用函数f,去除数组中的负数,输入数组x[7],数出结果为:1 3 4 6
共76页 第59页
#include
void f(int *a,int *m)
{ int i,j;
for(i=0;i<*m;i++)
if(a[i]<0) {
for(j=i--;j<*m-1;j++) a[j]=a[j+1];
_____1_____; //(*m)--
}
}
void main()
{ int i,n=7,x[7]={1,-2,3,4,-5,6,-7};
_______2_______; //f(x,&n)
for(i=0;i
void main()
{
char c;
c=getchar();
if(______1______) //c>='a' && c<='u'
c=c+5;
else
if (c>='v' && c<='z')
______2______ //c=c-21;
putchar(c);
}
14(输入整数n (n>0),求m使得2的m次方小于或者等于n,2的m+1次方大于或者等于n。 #include
void main()
{ int m=0,t=1,n;
while( _____ 1 ________); //scanf("%d",&n),n<=0
while(!(t<=n&&t*2>=n)){
_____ 2 _____ //t*=2;
m++;
}
printf("%d\n",m);
}
14(该程序计算4位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。 #include
struct STUDENT
{
char name[16];
int math;
int english;
共76页 第60页
int computer;
int average;
};
void GetAverage(struct STUDENT *pst) /* 计算平均成绩 */
{
int sum=0;
sum = ______1______; //pst->math+pst->english+pst->computer;
pst->average = sum/3;
}
void main()
{
int i;
struct STUDENT st[4]={{"Jessica",98,95,90},{"Mike",80,80,90},
{"Linda",87,76,70},{"Peter",90,100,99}};
for(i=0;i<4;i++)
{
GetAverage(______2______); //st+i
}
printf("Name\tMath\tEnglish\tCompu\tAverage\n");
for(i=0;i<4;i++)
{
printf("%s\t%d\t%d\t%d\t%d\n",st[i].name,st[i].math,st[i].english,
st[i].computer,st[i].average);
}
}
15(调用函数f 计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x,当x=1.7时的值。 #include
float f(float,float*,int);
void main()
{ float b[5]={1.1,2.2,3.3,4.4,5.5};
printf("%f\n",f(1.7,b,5));
}
float f( _______1________ ) //float x,float *a,int n { float y=a[0],t=1; int i;
for(i=1;i
#include
void main()
{ char a[80]; int n[3]={0},i; gets(a);
________1________ //i=0;while(a[i++]!='\0')
{if (tolower(a[i])>='a' && tolower(a[i])<='z') /*统计字母个数*/
n[0]++;
else if (________2________) /*统计数字个数*/ //a[i]>='0' && a[i]<='9'
共76页 第61页
n[1]++;
else
n[2]++;
}
for(i=0;i<3;i++) printf("%d\n",n[i]);
}
(调用find函数再输入的字符串中查找”the”这个单词,如果查到返回出现的次数;如果未找到返17
回0。
#include
int find(char *str)
{
char *fstr="the";
int i=0,j,n=0;
while (str[i]!='\0')
{
for(______1______) //j=0;j<3;j++
if (str[j+i]!=fstr[j]) break;
if (______2______) n++; //j>=3
i++;
}
return n;
}
void main()
{ char a[80];
gets(a);
printf("%d",find(a));
}
共76页 第62页
程序设计题及答案
1( 设计编程并运行程序,完成以下功能:x[i],y[i]分别表示平面上1个点的x,y坐标,求下列5点各
点距离总和,并将该数以格式”%.4f”写入到考生文件夹中paper子文件夹下的文件design1.dat中。 (注:由于每个考生准考证号码不一样,所以题目答案中直接写入当前目录的design1.dat或者design2.dat文件,考试时考生应对文件目录做相应变换。)
#include
#include //参考答案 #include
#include void main()
void main() { FILE *p;
{ FILE *p; float s,x[5]={-1.5,2.1,6.3,3.2,-0.7};
float s,x[5]={1,2,3.0,4.0,5}; float y[5]={7,5.1,3.2,4.5,7.6}; int i,j;
float y[5]={1,2,3.0,4.0,5}; int i,j; /*
s=0; *
p=fopen("d:\\result\\...\\paper\\design1.dat","w"); *
for(i=0;i<5;i++) * 考生在这里添加代码
for(j=i+1;j<5;j++) *
s=s+sqrt(pow((x[i]-x[j]),2)+pow((y[i]-y[j]),2)); *
fprintf(p,"%.4f",s); */
fclose(p); }
}
2(设计编程并运行程序,完成以下功能:对x=1,2,…10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式”%.3f” 写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 #include #include void main() void main() { FILE *p; float f(float),max,x; { FILE *p; float f(float),max,x; /* p=fopen("d:\\result\\...\paper\\design1.dat ","w"); * x=1; max=x-10*cos(x)-5*sin(x); * for(x=2;x<=10;x++) * 考生在这里添加代码 if(max
#include //参考答案 #include
#include void main()
void main() {
{ FILE *fp;
FILE *p; float n=1,t=1,pi=0;
float n=1,t=1,pi=0; int i;
int i;
共76页 第63页
/*
* i=1;
* p=fopen("d:\\result\\...\\paper\\design1.dat
* 考生在这里添加代码 ","w");
* while(t>=0.000001)
* { pi=pi+n*t; t=1.0/(i+2);
*/ n=-n; i=i+2; } }
pi*=4;
fprintf(p,"%.4f",pi);
fclose(p); 4(将满足条件pow(1.05,n)<1e6<(1.05,n+1)的n及其相应的pow(1.05,n)值以格式”%d,%.0f” 写入到考}
生文件夹中paper子文件夹下的文件design1.dat中。 #include
#include //参考答案 #include
#include void main()
void main() { float y=1.05; int n=1; FILE *p;
{ float y=1.05;int n=1; FILE *p; /*
p=fopen("d:\\result\\...\\paper\\design1.dat *
","w"); *
while(y<=100000) * 考生在这里添加代码
{ y=pow(1.05,n); *
n=n+1; *
} */
n=n-2; fprintf(p,"%d,%.0f",n,pow(1.05,n));
fprintf(p,"%d,%.0f",n,pow(1.05,n)); fclose(p);
fclose(p); }
}
5. 计算字符串s中每个字符串的权重值,所谓权重值就是字符再字符串重的位置值与该字符的ASCII
码值的乘积。位置值从1开始依次递增,将每个字符权重值以格式”%d” 写入到考生文件夹中paper
子文件夹下的文件design1.dat中。
#include
#include //参考答案 #include
void main() void main()
{ FILE *p;int i,w; {
char *s="we45*&y3r#$1"; FILE *p; int i,w;
p=fopen("d:\\result\\...\\paper\\design1.dat char *s="we45*&y3r#$1";
","w"); /*
for(i=0;*(s+i)!='\0';i++) *
{ w=*(s+i)*(i+1); *
fprintf(p,"%d,",w); * 考生在这里添加代码
} *
fclose(p); *
} */
}
6(计算表达式1+2!+3!+…+12!,并将计算结果以格式”%ld”写入到考生文件夹中paper子文件夹下
共76页 第64页
#include //参考答案 的文件design1.dat中。
void main() #include
{ FILE *p;long s=1,k=1;int i; void main()
p=fopen("d:\\result\\...\\paper\\design1.dat { FILE *p; long s=1,k=1; int i;
","w"); /*
for(i=2;i<=12;i++) *
{ k=k*i; *
s=s+k; * 考生在这里添加代码
} *
fprintf(p,"%ld",s); *
fclose(p); */
} }
7(在数组a 的10个数中求平均值v,将大于等于v数组元素进行求和,并将结果以格式”%.5f”写
入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include
#include //参考答案 void main()
void main() { FILE *p; int i;
{ FILE *p;int i; float a[10];
float a[10]; float sum,v=0;
float sum,v=0; a[10]={7.23,1.5,5.24,
a[10]={7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81} 2.1,2.45,6.3,5,3.2,0.7,9.81}
p=fopen("d:\\result\\...\\paper\\design1.dat /*
","w"); *
for(i=0;i<=9;i++) *
sum=sum+a[i]; * 考生在这里添加代码
v=sum/10.0;sum=0; *
for(i=0;i<=9;i++) *
if (a[i] #include //参考答案
void main() void main()
{ FILE *p; { FILE *p;
int i,j,temp,n=0; int i,j,temp,n=0;
int a[10]={7,6,20,3,14,88,53,62,10,29} int a[10]={7,6,20,3,14,88,53,62,10,29};
int b[10]; int b[10];
/* j=0;
* for(i=0;i<10;i++)
if(a[i]%2==0) *
{ b[j]=a[i];j++;n++;} * 考生在这里添加代码 n--; *
*
共76页 第65页
*/ for(i=0;ib[j]) {temp=b[i];b[i]=b[j];b[j]=temp;} p=fopen("d:\\result\\...\\paper\\design1.dat
t","w");
for(i=0;i #include //参考答案 #include #include
void main() void main()
{ FILE *p; char *s="634,.%@\\w|SQ2",c; { FILE *p;char *s="634,.@\\w|SQ2",c;
int i,j,k,n=strlen(s); int i,j,k,n=strlen(s);
/* p=fopen("d:\\result\\...\\paper\\design1.dat ","w");
* for(i=0;is[j])k=j;
* if(i!=k){c=s[i];s[i]=s[k];s[k]=c;} }
*/ for(i=0;i #include //参考答案 void main() void main()
{ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
FILE *p; FILE *p;
/* int i,j; float t;
* p=fopen("d:\\result\\...\\paper\\design1.dat ","w");
* for(i=0;i<3;i++)
* 考生在这里添加代码 { t=a[i][i];
* for(j=0;j<3;j++)
* a[i][j]=a[i][j]/t;
*/ }
for(int i=0;i<3;i++) { for(i=0;i<3;i++) {
for(int j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]); for(j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]);
fprintf(p,"\n"); fprintf(p,"\n");
} }
fclose(p); fclose(p);
} }
共76页 第66页
11(已知公鸡每只5元,母鸡每只3元,小鸡1元3只。求出用100元买100只鸡的解。
将得到的解按公鸡、母鸡、小鸡的只数以”%d,%d,%d\n”的格式写入到考生文件夹paper子文件夹下
的文件design1.dat中。
#include //参考答案 #include
void main() void main()
{ FILE *p; { FILE *p;
int cock,hen,chick; int cock,hen,chick;
p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); /*
for(cock=0;cock<=100;cock++) *
for(hen=0;hen<=100;hen++) *
{ chick=100-cock-hen; * 考生在这里添加代码
if(5*cock+3*hen+chick/3.0==100) *
fprintf(p,"%d,%d,%d\n",cock,hen,chick); *
} */
fclose(p); }
}
12(计算500~800区间内素数的个数cnt和素数和sum,请编写函数JSValue( )实现程序的要求,最
后把cnt和sum的值写入到考生文件夹paper子文件夹下的文件design1.dat中。
#include
#include //参考答案 int cnt,sum;
int cnt,sum; void JSValue()
void JSValue() {
{ int i,j,half; int i,j,half;
cnt=0;sum=0; /*
for(i=500;i<=800;i++) *
{ half=i/2; *
for(j=2;j<=half;j++) * 考生在这里添加代码
if(i % j==0) break; *
if(j>half){cnt++;sum+=i;} *
} */
} }
void main() void main()
{ FILE *p; {
p=fopen("d:\\result\\...\\paper\\design1.dat FILE *p;
","w"); p=fopen("design.dat","w");
JSValue(); JSValue();
fprintf(p,"%d,%d",cnt,sum); fprintf(p,"%d,%d",cnt,sum);
fclose(p); fclose(p);
} }
13(有数列2/1,3/2,5/3,8/5,13/8,21/13…求出数列前40项的和。将计算结果格式”%.6f”写入到考生文
件夹中paper子文件夹下的文件design1.dat中。 #include
void main()
{
共76页 第67页
FILE *p;
int i; #include //参考答案
float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s; void main()
float f,t; { FILE *p;
s=t1/f1+t2/f2; int i;
/* float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s;
* float f,t;
* s=t1/f1+t2/f2;
* 考生在这里添加代码 p=fopen("d:\\result\\...\\paper\\design1.dat ","w");
* for(i=0;i<19;i++)
* { t1=t1+t2; f1=f1+f2;
*/ s+=t1/f1; f2=f1+f2; } t2=t1+t2; s+=t2/f2;
}
fprintf(p,"%.6f",s);
fclose(p);
}
14.计算多项式a0+a1*sin(x)+a2*sin(x*x)+…..+a9*sin(x*x* x*x* x*x* x*x*x)的值,将计算结果格
式”%.6f”写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include
#include //参考答案 #include
#include void main()
void main() {
{ FILE *p; FILE *p;
int i; float x=2.345,t=1.0,y=0.0; int i; float x=2.345,t=1.0,y=0.0;
float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9}; float a[10]={1.2,-1.4,-4.0,1.1,
p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); 2.1,-1.1,3.0,-5.3,6.5,-0.9};
for(i=0;i<10;i++) /*
{ t=t*x; *
y=y+a[i]*sin(t); *
} * 考生在这里添加代码
fprintf(p,"%.6f",y); *
fclose(p); *
} */
}
15(数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,将结果格式”%.3f”
写入到考生文件夹中paper子文件夹下的文件design1.dat中。
#include
#include
void main()
{ FILE *p; float s=0,a=81;int i;
/*
*
共76页 第68页
#include //参考答案 *
#include * 考生在这里添加代码
void main() *
{ FILE *p; float s=0,a=81;int i; *
p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); */
for(i=1;i<=30;i++) }
{ s=s+a;
a=sqrt(a);
}
fprintf(p,"%.3f",s);
fclose(p);
}
16(在正整数中找出1个最小的、被3,5,7,9除余数分别是1,3,5,7的数,将该数以格式”%d”
写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include
#include //参考答案 #include
#include void main()
void main() {
{ FILE *p; int i=1; /*
p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); *
while(1) { *
if((i%3==1)&&(i%5==3)&&(i%7==5)&&(i%9==7)) * 考生在这里添加代码
{fprintf(p,"%d",i);break;} i++; *
} *
fclose(p); */
} }
17. z=f (x,y)=(3.14*x-y)/(x+y),若x,y取值为区间[1,6]的整数,找出使z取最小值的x1,y1,并将x1,y1
以格式”%d,%d”写入到考生文件夹中paper子文件夹下的文件design1.dat中。
#include #include //参考答案
void main() void main()
{ FILE *p; float f(float x,float y),min; { FILE *p; float f(float x,float y),min;
int x,y,x1,y1; int x,y,x1,y1;
/* p=fopen("d:\\result\\...\\paper\\design1.dat ","w");
* min=f(1,1);x1=1;y1=1;
* for(x=1;x<=6;x++)
* 考生在这里添加代码 for(y=1;y<=6;y++)
* if(f(x,y)
#include //参考答案 int Year(int x)
int Year(int x) {
{ int p=11.5,y=1999; int p=11.5,y=1999;
while(p
#include //参考答案 void main()
void main() { FILE *p; long s=1,k=1; int i;
{ FILE *p; long s=1,k=1; int i; /*
p=fopen("d:\\result\\...\\paper\\design1.dat *
","w"); *
for(i=1;i<=12;i++) * 考生在这里添加代码
{ k=k*i; s=s+k; } *
fprintf(p,"%ld",s); *
fclose(p); */
} }
20将数组a 的每行均除以该行上绝对值最大的元素,然后将a 数组写入到考生文件夹中paper子文
件夹下的文件design1.dat中。
#include
#include
void main()
{ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},
{3,4,1.27}};
共76页 第70页
#include //参考答案
#include
FILE *p; float x; int i,j; void main()
/* { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
* FILE *p; float x; int i,j;
* float max;int k;
* 考生在这里添加代码 for(i=0;i<3;i++)
* { x=abs(a[i][0]);
* for(j=0;j<3;j++)
*/ { if(x
#include
void main()
{ FILE *p; int i,k=0;
float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
/* #include //参考答案
* #include
* void main()
* 考生在这里添加代码 { FILE *p; int i,k=0;
* float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
* float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
*/ p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); } for(i=0;i<10;i++)
if(pow((x[i]-1),2)+pow((y[i]+0.5),2)<=25) k++;
fprintf(p,"%d",k);
fclose(p);
}
22(寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。所谓回文就是指各位数字左右对称。请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,否则返回0。将结果写入到考生文件夹中paper子文件夹下的文件design1.dat中。
共76页 第71页
#include #include //参考答案 #include #include
#include #include
int JSValue(long m) int JSValue(long m)
{ { char s[25]; int n,i; itoa(m,s,10); n=strlen(s);
/* for(i=0;i=n/2) return 1; else return 0;
* }
* void main()
*/ { FILE *p;long m;
} p=fopen("d:\\result\\...\\paper\\design1.dat ","w");
for(m=11;m<1000;m++){
if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m)) void main() fprintf(p,"%ld ",m); { }
FILE *p;long m; fclose(p);
p=fopen("design.dat","w"); }
for(m=11;m<1000;m++) {
if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m))
fprintf(p,"%ld ",m);
}
fclose(p);
}
23(累加a字符串中各个字符的ASCII值,然后将累加和以格式”%d”写入到考生文件夹中paper子
文件夹下的文件design1.dat中。
#include
#include //参考答案 void main()
void main() { FILE *p; int s=0,i=0;
{ FILE *p; int s=0,i=0; char *a="r235%^%34cdDW,.";
char *a="r235%^%34cdDW,."; /*
p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); *
for(i=0;*(a+i)!='\0';i++) *
s=s+*(a+i); * 考生在这里添加代码
fprintf(p,"%d",s); *
fclose(p); *
} */
}
24(在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式”%.5f”写入到考
生文件夹中paper子文件夹下的文件design1.dat中。
#include
#include
共76页 第72页
void main()
{ FILE *p; int i,k=0;
float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81};
for(i=0;i<10;i++) v+=x[i]; v=v/10; d=fabs(x[0]-v);
float d,v=0;
#include //参考答案
#include /*
void main() *
{ FILE *p; int i,k=0; *
float d,v=0; * 考生在这里添加代码
float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81}; *
for(i=0;i<10;i++) v+=x[i]; v=v/10; d=fabs(x[0]-v); *
p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); */
for(i=1;i<10;i++) }
if(d>fabs(x[i]-v)) {d=fabs(x[i]-v);k=i;}
fprintf(p,"%.5f",x[k]);
fclose(p);
}
25(若a,b为1的对亲密数,则a的因子和等于b,b的因子和等于a,且a不等于b。如:220,284
是1对亲密数,284,220是1对亲密数。在6至5000内找出所有的亲密数对,并将每对亲密数用
语句fprintf(p,”%6d,%6d\n”,a,b) 写入到考生文件夹中paper子文件夹下的文件design1.dat中。
#include
#include //参考答案 void main()
void main() { FILE *p; int a,b,c,k;
{ FILE *p; int a,b,c,k; p=fopen("design.dat","w");
p=fopen("d:\\result\\...\paper\\design1.dat ","w"); /*
for(a=6;a<=400;a++) *
{ for(b=6;b<=400;b++) *
{ c=0; * 考生在这里添加代码
for(k=1;k<=a;k++) *
if (a%k==0)c=c+k; *
for(k=b;k>=1;k--) */
if (b%k==0) c=c-k; }
if(c==0 && a!=b) fprintf("%d,%d \n",a,b);
} }
fclose(p);
}
26(计算2的平方根,3的平方根。。。。10的平方根之和,要求计算结果具有小数点后10位有效位
数,并将其以格式”%.10f”写入到考生文件夹中paper子文件夹下的文件design1.dat中。
#include
#include
void main()
{ FILE *p;
/*
共76页 第73页
*
*
#include //参考答案 * 考生在这里添加代码
#include *
void main() *
{ FILE *p;int i;double sum=0; */
p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); }
for(i=2;i<=10;i++)
sum=sum+sqrt(i);
fprintf(p,"%.10lf",sum);
fclose(p);
}
27(求Fibonacci数列中大于t的最小的一个数,结果由函数JSValue返回,其中Fibonacci数列F(n)
的定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+f(n-2),分别计算当t=1000和t=3000时的结果,将计算结果写
入到考生文件夹中paper子文件夹下的文件design1.dat中。
#include
#include //参考答案 int JSValue(int t)
int JSValue(int t) {
{ int f1=1,f2=1,f; /*
do *
{ f=f2; *
f1=f1+f2; * 考生在这里添加代码
f2=f1+f; *
printf("%d,%d\n",f1,f2); *
}while(f1<=t); */
return(f1); }
}
void main()
{ FILE *p;
p=fopen("d:\\result\\...\\paper\\design1.dat ","w");
fprintf(p,"%d,%d",JSValue(1000),JSValue(3000)); void main()
fclose(p); {
} FILE *p;
p=fopen("design.dat","w");
fprintf(p,"%d,%d",JSValue(1000),JSValue(3000));
fclose(p);
}
共76页 第74页
二级C程序设计考试大纲
基本要求
1(掌握C 语言的基本知识,包括C语言的功能和语法;
(基本具备C语言程序设计能力,能熟练地阅读、理解和编写简短的C程序; 2
3(掌握一种C语言的编译和编程环境,能熟练地调试程序; 4(熟练掌握结构化程序设计的方法;
(掌握程序设计中常用的基本算法。 5
考试范围
一、数据的定义
1. 基本类型(整型,实型,字符型)
常量 (1)
各种表示形式的整数、实数和字符(串)常量,符号常量的定义和使用,包括整数的十进
制、八进制和十六进制的表示形式、长整型常量的表示形式,实数的浮点表示法和科学记数
法,字符的转义序列,常用符号常量的含义(如NULL、EOF等);
(2) 变量
变量的定义和初始化。
2. 构造类型
(1) 数组
一维和二维数组的定义和初始化,数组元素的引用,包括一维字符数组和字符串,二维
字符数组和字符串数组。
(2) 结构
结构类型的定义,结构变量的定义和初始化,结构变量成员的引用。
3. 指针
(1) 指针和地址的概念;
(2) 指针变量的定义和初始化;
(3) 通过指针引用指向实体。
4. 构造类型和指针类型的混合定义及应用
(1) 指针、数组和地址间的关系;
(2) 指针数组;
(3) 结构数组;
(4) 结构指针;
(5) 结构中含指针或数组;
(6) 指向指针的指针(即二级指针)。
5. 空类型的定义和使用
6. 变量的存储类别、作用域和生存期
(1) 变量的存储类别,包括auto 自动型、static 静态型、extern 外部参照型;
(2) 全局变量和局部变量,包括自动局部变量和静态局部变量、全局变量和静态全局变
量、外部变量。
二、运算及流程控制
1. 基本运算
运算符的功能,运算符的优先级、结合性和目数,隐式类型转换和强制类型转换。
共76页 第75页
2. 表达式
各类表达式的组成和计算过程。
3. 语句
(1) 表达式语句、空语句、复合语句;
(2) 简单控制语句(break、continue、return); (3) 选择控制语句(if、switch);
(4) 重复控制语句(for、while、do—while)。
三、程序结构和函数
1. 程序结构
main函数与其他函数之间的关系,包括库函数和自定义函数。 2. 函数的定义
(1) 函数定义的ANSI C格式;
(2) 函数的参数(形式参数和实在参数)及参数传递,包括指针作为函数的参数;
(3) 函数的返回值,包括指针作为函数的返回值。 3. 函数的调用
(1) 函数调用的一般格式;
(2) 函数的嵌套调用和递归调用;
(3) 标准库函数的调用。
常用数学函数:cos、sqrt、pow、exp、fabs、log、log10等; 常用字符函数:isalnum、isalpha、isdigit、islower、toupper等;
常用字符串函数:strcpy、strcmp、strcat、strlen等。
四、数据的输入和输出
1. 文件的基本概念;
2. 标准文件的输入和输出,常用输入输出函数:scanf、printf、getchar、putchar、
gets、puts等;
3. 缓冲文件系统(文本文件)
(1) 文件的打开和关闭,常用函数:fopen和fclose; (2) 文件的基本读写操作,常用函数:fscanf、fprintf、fgetc、fputc、fgets、fputs
等;
(3) 文件的状态检测,常用函数feof等。
五、编译预处理
1. 编译预处理的基本概念;
2. 宏定义;
3. 文件包含。
六、常用算法
1. 分类(排序)算法:冒泡和选择;
2. 检索(查找)算法
(1) 无序数据序列的查找;
(2) 有序数据序列的查找:二分法。
共76页 第76页
本文档为【计算机二级c语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。