2007年春季省二级C试题试卷及答案
- 格式:docx
- 大小:25.98 KB
- 文档页数:6
2007年春浙江省高校输入一个正整数,按照从高位到低位输出各位数字。
运行示例:Enter an integer:1902the digits are:1 9 02#include <stdio.h>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>=100C、t!=0 D、number!=0(3)A、power==0 B、digit!=0C、number!=0D、power>=1(4)A、number/=power; B、number%=10;C、number%=power;D、number/=10;B A D(C) C试题2(第小题3分,共12分)【程序说明】连续输入一批学生的成绩,直到输入成绩的数量超过50或者输入成绩不是有效成绩(有效成绩为0-100),将输入的有效成绩存入数组mark中,在数组中查找并输出最高分。
函数getmax(array,n)在有n个元素的一维数组array中找出并返回最大值。
运行示例:enter marks:90 80 77 65 –1max=90#include <stdio.h>#define MAXNUM 50int getmax( (5) );{int k,max;max=array[0] (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、voidC、int *arrayD、int array[],int n 答案:D(6)A、max=0; B、;C、max=array[0]D、max=array[n]; 答案:C(7)A、k<MAXNUM||x>=0&&x<=100B、k<MAXNUM&&x>=0&&x<=100C、k>MAXNUM&&x>=0||x<=100D、k>MAXNUM||x>=0||x<=100 答案:B(8)A、mark,k B、markC、mark[]D、mark,n 答案:A试题3(第小题3分,共12分)【程序说明】输入一个4行4列的矩阵,计算并输出矩阵除四边以外的所有元素之和sum1,再计算和输出该矩阵主对角线以上(含主结角线)的所有元素之和sum2,主对角线为从矩阵左上角到右下角的连线。
运行示例:enter an array:1 2 3 45 6 7 8910 11 121314 15 16sum1=34sum2=70#include <stdio.h>void main(){int j,k,sum;int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};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!=0B、j!=3&&k!=3||j!=0&&k!=0C、j!=3||k!=3&&j!=0||k!=0D、j!=3&&k!=3||j!=0&&k!=0 答案:A(10)A、sum1=0; B、sum=0;C、sum2=0;D、; 答案:B(11)A、k=0 B、k=jC、k=1D、k=3 答案:B(12)A、k<=j B、k>0C、k>jD、k<4 答案:D试题4(第小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
[程序]#include <stdio.h>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;elsek=-1;//第12行printf("j=%d,k=%d\n",j,k);}(13)程序运行时,输入5,输出(13) 。
A、j=0,k=5B、j=5,k=5C、j=0,k=-1D、j=5,k=-1 答案:A(14)程序运行时,输入99,输出(14) 。
A、j=99,k=-1B、j=0,k=-1C、j=0,k=99D、j=99,k=99 答案:A(15)将第12行改为k=-1;j=i/10;,输入99,输出(15) 。
A、j=99,k=-1B、j=9,k=99C、j=99,k=99D、j=9,k=-1 答案:D(16)将第7行改为”if((i/10)>0){“第12行改为”k=-1;}”输入5,输出(16) 。
A、j=0,k=-1B、j=0,k=0C、j=5,k=5D、j=5,k=-1 答案:B试题5(第小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
[程序]#include <stdio.h>int k=1;void fun();void main(){ int j;for(j=0;j<2;j++)fun();printf("k=%d",k);}void fun(){int k=1; //第11行printf("k=%d,",k);k++;}(17)程序的输出是(17) 。
A、k=1,k=2,k=3B、k=1,k=2,k=1C、k=1,k=1,k=2D、k=1,k=1,k=1 答案:D(18)将第11行改为static int k=1; 程序的输出是(18) 。
A、k=1,k=1,k=1B、k=1,k=1,k=2C、k=1,k=2,k=1D、k=1,k=2,k=3 答案:C(19) 将第11行改为k=1; 程序的输出是(19) 。
A、k=1,k=2,k=1B、k=1,k=1,k=1C、k=1,k=1,k=2D、k=1,k=2,k=3 答案:C(20) 将第11行改为; 程序的输出是(20) 。
A、k=1,k=1,k=2B、k=1,k=2,k=3C、k=1,k=1,k=1D、k=1,k=2,k=1 答案:B试题6(第小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
[程序]#include <stdio.h>struct st{char c;char *s;};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;}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]));}(21)程序运行时,第1行输出(21) 。
A、321B、21C、123D、12 答案:C(22)程序运行时,第1行输出(22) 。
A、21B、12C、3D、1 答案:A(23)程序运行时,第1行输出(23) 。
A、3B、123C、1D、321 答案:A(24)、程序运行时,第1行输出(24) 。
A、123B、1C、3D、321 答案:D试题7(28分)某某客户购房办理商业贷款,选择了按月等额本息还款法,在贷款本金loan和月利率rate 一定的情况下,住房贷款的月还款额money取决于还款月数month,计算公式如下:1)1()1(-++⨯=month monthrate rate rate loan money (1)定义函数cal_power(x,n)计算x 的n 次幂(即x n ),函数的返回值是double ;(2)定义函数cal_money(loan,rate,month)计算月还款额,函数的返回值是double ,要求调用函数cal_power 计算x 的n 次幂;(3)定义函数main(),输入垡贷款本金loan 和月利率rate,输出还款年限-月还款客表,还款年限是5~30,输出时分别精确到年和元。