测试D.docx

上传人:b****4 文档编号:4456781 上传时间:2022-12-01 格式:DOCX 页数:13 大小:18.36KB
下载 相关 举报
测试D.docx_第1页
第1页 / 共13页
测试D.docx_第2页
第2页 / 共13页
测试D.docx_第3页
第3页 / 共13页
测试D.docx_第4页
第4页 / 共13页
测试D.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

测试D.docx

《测试D.docx》由会员分享,可在线阅读,更多相关《测试D.docx(13页珍藏版)》请在冰豆网上搜索。

测试D.docx

测试D

一、单项选择题:

(10分,每题2分)

1.设有以下定义:

inta[3][3]={1,2,3,4,5,6,7,8,9};

int(*ptr)[3]=a,*p=a[0];

则以下能够正确表示数组元素a[1][2]的表达式是。

A)*((*ptr+1)[2])

B)*(*(p+5))

C)(*ptr+1)

D)*(*(a+1)+2)

2.有如下程序片段:

inti=0;

while(i++<=2);

printf("%d",i);

则正确的执行结果是:

A)2B)3

C)4D)无结果

3.合法的数组定义是。

A)inta[]="language";

B)inta[5]={0,1,2,3,4,5};

C)chara="string";

D)chara[]={"0,1,2,3,4,5"};

4.设有如下定义:

structst

{

inta;

floatb;

}st1,*pst;

若有pst=&st1;则下面引用正确的是________。

A)(*pst.st1.b)B)(*pst).b

C)pst->st1.bD)pst.st1.b

5.如果inti=3,则printf("%d",-i++)的输出结果是,i的值是。

A)-34B)-44

C)-43D)-33

二、写出下列程序的运行结果。

(10分,每题2分)

1.

#include

main()

{

intx,y;

scanf("%2d%*2s%1d",&x,&y);

printf("%d",x/y);

}

程序运行时输入:

2345678↙

则程序运行结果是:

 

2.

#include

main()

{

inti=0;

while(i<3)

{

switch(i++)

{

case0:

printf("fat");

break;

case1:

printf("hat");

case2:

printf("cat");

default:

printf("Ohno!

");

}

putchar('\n');

}

}

运行结果是:

 

3.

#include

intSquare(inti);

main()

{

inti=0;

i=Square(i);

for(;i<5;i+=2)

{

staticinti=1;

i+=Square(i);

printf("%d\t",i);

}

printf("%d\n",i);

}

intSquare(inti)

{

returni*i;

}

程序运行结果是:

26426

 

4.

#include

voidinv(int*p,intn);

main()

{

inti;

inta[10]={13,7,9,11,0,6,7,5,4,2};

for(i=0;i<10;i++)

{

printf("%d,",a[i]);

}

printf("\n");

inv(a,10);

for(i=0;i<10;i++)

{

printf("%d,",a[i]);

}

}

voidinv(int*p,intn)

{

int*i,*j,m=(n-1)/2,t;

j=p+n-1;

for(i=p;i<=p+m;i++,j--)

{

t=*i;*i=*j;*j=t;

}

}

程序运行结果:

inv

 

5.

#include

structname

{

charfirst[20];

charlast[20];

};

structbeam

{

intlimbs;

structnametitle;

charty[30];

};

main()

{

structbeam*pb;

structbeamdeb={6,{"Berbnazel","Gwolkapwolk"},

"Arcturan"};

pb=&deb;

printf("%d\n",deb.limbs);

printf("%s\n",pb->ty);

printf("%s\n",pb->ty+2);

}

运行结果是:

6

Arcturan

cturan

 

三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

(8分,每空1分)

1.下面这个程序的功能是对含有n个元素(最多10个)的一维数组按升序进行排序。

#include

#defineARRAY_SIZE10

voidSort(inta[],intn);

voidInputArray(inta[],intn);

voidPrintArray(inta[],intn);

main()

{

inta[ARRAY_SIZE],n;

printf("Inputarraylenthn<=10:

");

scanf("%d",&n);

printf("输入数组a:

\n");

InputArray(a,n);

Sort(a,n);

printf("打印排序后的数组a:

\n");

PrintArray(a,n);

}

voidSort(inta[],intn)

{

inti,j,p,temp;

for(i=0;i<;i++)

{

p=i;

for(j=;j

{

if()p=j;

}

if()

{

temp=a[p];

a[p]=a[i];

a[i]=temp;

}

}

}

voidInputArray(inta[],intn)

{

inti;

for(i=0;i

{

;

}

}

voidPrintArray(inta[],intn)

{

inti;

for(i=0;i

{

printf("%d",a[i]);

}

printf("\n");

}

2.下面程序的功能是从键盘输入一行字符,统计其中有多少单词。

假设单词之间以空格分开。

[提示:

判断是否有新单词出现的方法是------当前被检验的字符不是空格,而前一被检验字符是空格,则表示有新单词出现。

]

#include

main()

{

charstr[80];

inti,num;

gets(str);

if(str[0]!

='')

{

num=1;

}

else

{

num=0;

}

for(i=1 ;str[i];i++)

{

if(str[i] &&str[i-1])

{

num++;

}

}

printf("num=%d\n",num);

}

四、在下面给出的4个程序中,共有16处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。

(30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。

只要找对15个即可,多找不加分。

1.在给定的一组书名中,从键盘任意输入一个书名(书名可以有空格)。

若找到,则打印该书名,否则打印”没找到”。

#include

#include

main()

{

inti,findFlag=0;

charx;

charstr[][13]={"Pascal","Basic","Fortran","Java",

"VisualC","VisualBasic"};

printf("请输入一个字符串:

");

gets(x);

while(i<6&&!

findFlag)

{

if(x==str[i])

{

findFlag=1;

}

i++;

}

if(findFlag)

{

printf("%s\n",x);

}

else

{

printf("没找到!

\n");

}

}

2.打印100~200之间的所有素数。

#include

#include

main()

{

intm,i;

for(m=100;m<=200;m++)

{

for(i=2;i

{

if(m%i==0)

flag=0;

}

if(flag)

{

printf("%d",m);

}

}

}

3.从键盘输入任意一个学生的学号,在班级学生表中(学生表的学号是按升序排序的,且班级最多30人)查找该学号是否存在,存在打印其考试成绩,否则打印“Notfind!

”。

#include

#defineARR_SIZE30;

intSearch(long*p,intn,longx);

main()

{

longnum[ARR_SIZE],x;

floatscore[ARR_SIZE];

inti,n,pos;

printf("输入班级实际人数:

");

scanf("%d",&n);

printf("输入学生学号和成绩");

for(i=0;i

{

scanf("%ld%f\n",&num[i],&score[i]);

}

printf("输入待查找学号:

");

scanf("%d",&x);

pos=Search(num,n,x);

if(pos+1)

printf("score=%f\n",score[pos]);

else

printf("Notfind!

\n");

}

intSearch(long*p,intn,longx);

{

inti,flag;

for(i=0;i

{

if(*(p+i)==x)

{

flag=i;

break;

}

else

{

flag=-1;

}

}

returnflag

}

4.该程序的作用是将一个字符串中的元音字母复制到另一个字符串,然后输出。

#include

main()

{

charstr1[80],str2[80];

printf("输入一个字符串:

");

gets(str1);

Cpy(str1[],str2[]);

printf("输出一个字符串\n");

puts(str2);

}

voidCpy(chars[],charc[])

{

inti,j;

for(i=0;s[i] !

='\0';i++)

{

if(s[i]='a'||s[i]='A'||s[i]='e'||s[i]='E'||

s[i]='i'||s[i]='I'||s[i]='o'||s[i]='O'||

s[i]='u'||s[i]='U')

{

s[i]=c[j];

j++;

}

}

}

五、编程(42分)

1.编程计算:

1!

+3!

+5!

+…+(2n-1)!

的值。

其中,n值由键盘输入。

(14分)

2.不用标准库函数strlen,自己编写一个函数MyStrlen,实现计算字符串长度的功能。

要求在主函数中输入一个字符串(可以读入空格),并在主函数中打印字符串的长度。

(14分)

请按以下给定的函数原型编写程序:

intMyStrlen(charstr[]);

intMyStrlen(char*p);

注:

不按给定的函数原型或使用全局变量编写程序不给分。

3.编写一个函数,求最大值及最大值所在元素的下标。

要求在主函数中通过键盘任意输入一组数(最多10个),且在主函数中打印最大数及最大数元素的下标。

(14分)

请按以下给定的函数原型编写程序:

voidFindmax(intnum[],intn,int*pMaxNum,int*pMaxPos);

voidFindmax(int*p,intn,int*pMaxNum,int*pMaxPos);

注:

不按给定的函数原型或使用全局变量编写程序不给分。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1