一、单项选择题:(10分,每题2分)1.char*p[10];该语句声明了一个:。
A)指向含有10个元素的一维字符型数组的指针变量pB)指向长度不超过10的字符串的指针变量pC)有10个元素的指针数组p,每个元素可以指向一个字符串D)有10个元素的指针数组p,每个元素存放一个字符串2.若intx;且有下面的程序片断,则输出结果为:。
for(x=3;x<6;x++){printf((x%2)"##%d":"**%d\n",x);}A) ##3B)**3 C)**3D)##3**4**4##4##4**5##5##5**53.在while(!x)语句中的!x与下面条件表达式等价的是:。
A)x!=0B)x==1 C)x!=1D)x==04.已知structpoint{intx;inty;};structrect{structpointpt1;structpointpt2;};structrectrt;structrect*rp=&rt;则下面哪一种引用是不正确的________。
A) r t.pt1.xB) (*rp).pt1.xC) rp->pt1.xD)rt->pt1.x5.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:。
A)*(a+j*n+i)B)*(a+i*n+j)C)*(*(a+i)+j)D)*(*a+i) +jCDDDC二、分析程序并写出运行结果。
(25分,每题5分)1.#include<stdio.h>main(){intn;staticchar*monthName[]={"Illegalmonth","January","February","March","April","May","June","July","August", "September","October","November","December"};for(n=1;n<=12;n++){printf("%s\n",monthName[n]);}}运行结果是:JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember2.#include<stdio.h>#defineARR_SIZE7voidYH(inta[][ARR_SIZE],intn);voidPrintYH(inta[][ARR_SIZE],intn);main(){inta[ARR_SIZE][ARR_SIZE];YH(a,ARR_SIZE-1);PrintYH(a,ARR_SIZE-1);}voidYH(inta[][ARR_SIZE],intn){inti,j;for(i=1;i<=n;i++){for(j=1;j<=i;j++){if(j==1||i==j){a[i][j]=1;}else{a[i][j]=a[i-1][j-1]+a[i-1][j];}}}}voidPrintYH(inta[][ARR_SIZE],intn) {inti,j;for(i=1;i<=n;i++){for(j=1;j<=i;j++){printf("%4d",a[i][j]);}printf("\n");}}运行结果是:111121133114641151010513.#include<stdio.h>main(){inti,n;for(i=1;i<=5;i++){printf("Pleaseentern:");scanf("%d",&n);if(n<=0)continue;printf("n=%d\n",n);}printf("Programisover!\n");}程序运行时输入:1-23-45↙运行结果是:n=1Pleaseentern:Pleaseentern:n=3Pleaseentern:Pleaseentern:n=5Programisover!4.#include<stdio.h>voidFunc(intn);main(){inti;for(i=0;i<2;i++){Func(i);}}voidFunc(intn){staticintt=1;printf("t=%d\n",t++);}运行结果是:t=1t=25.#include<stdio.h>intFunc(inti);main(){inti;for(i=3;i<5;i++){printf("%d",Func(i));}printf("\n");}intFunc(inti){staticintk=10;for(;i>0;i--){k++;}return(k);}运行结果是:1317三、阅读并完成程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(20分,每空2分)1.下面程序用于读入10个字符串,然后找出最大的字符串并打印。
#include<stdio.h>#include<string.h>main(){charstr[10][80],maxstring[80];inti;printf("Entertenstrings:\n");for(i=0;i<10;i++){scanf("%s",str[i]);}strcpy(maxstring,str[0]);for(i=1;i<10;i++){if(strcmp(maxstring,str[i])<0)或strcmp(str[i],maxstring)>0strcpy(maxstring,str[i]);}}printf("Themaxstringis:%s\n",maxstring);}2.下面这个程序用于交换两个数组的对应元素的值。
#include<stdio.h>#defineARRAY_SIZE10voidSwap(int*x,int*y); voidExchange(inta[],intb[],intn); voidInputArray(inta[],intn); voidPrintArray(inta[],intn);main(){inta[ARRAY_SIZE],b[ARRAY_SIZE],n; printf("Inputarraylenthn<=10:"); scanf("%d",&n);printf("Inputarraya:\n"); InputArray(a,n);printf("Inputarrayb:\n"); InputArray(b,n);Exchange(a,b,n);printf("Afterswap:\n");printf("Arraya:\n");PrintArray(a,n);printf("Arrayb:\n");PrintArray(b,n);}voidSwap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;voidExchange(inta[],intb[],intn) {inti;for(i=0;i<n;i++)Swap(&a[i],&b[i]);}voidInputArray(inta[],intn){inti;for(i=0;i<n;i++)scanf("%d",&a[i]);}voidPrintArray(inta[],intn){inti;for(i=0;i<n;i++)printf("%d",a[i]);printf("\n");}3.从键盘任意输入一个年号,判断它是否是闰年。
若是闰年,输出"Yes",否则输出"No"。
已知符合下列条件之一者是闰年:能被4整除,但不能被100整除。
能被400整除。
#include<stdio.h>main(){intyear,flag;printf("Enteryear:");scanf("%d",&year);if(year%4==0&&year%100!=0||year%400==0)elseflag=0;if(flag)elseprintf("No!\n");}四、在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
(在错误的代码下边画一根横线,把正确的代码写在旁边;漏掉的代码正确插入合适的位置。
30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。
)1.编程计算矩阵相乘之积。
#include<stdio.h>#defineROW2#defineCOL3//voidMultiplyMatrix(inta[ROW][COL],intb[COL][R OW],intc[ROW][ROW]);main(){inta[ROW][COL],b[COL][ROW],c[ROW][ROW],i,j;printf("Inputarraya:\n");for(i=0;i<ROW;i++)for(j=0;j<COL;j++)scanf("d",&a[i][j]);//%dprintf("Inputarrayb:\n");for(i=0;i<COL;i++)for(j=0;j<ROW;j++)scanf("d",&b[i][j]);MultiplyMatrix(a,b,c);printf("Results:\n");for(i=0;i<ROW;i++)for(j=0;j<ROW;j++)printf("%6d",&c[i][j]);//c[i][j]printf("\n");}voidMultiplyMatrix(inta[ROW][COL],intb[COL][ROW ],intc[ROW][ROW]){inti,j,k;for(i=0;i<ROW;i++)for(j=0;j<ROW;j++)for(k=0;k<COL;k++){//c[i][j]=0;c[i][j]=c[i][j]+a[i][k]*b[j][k];//b[k][j]}}2.编程输入10个数,找出其中的最大值及其所在的数组下标位置。