哈尔滨工程大学c语言.docx

上传人:b****6 文档编号:6310930 上传时间:2023-01-05 格式:DOCX 页数:50 大小:29.77KB
下载 相关 举报
哈尔滨工程大学c语言.docx_第1页
第1页 / 共50页
哈尔滨工程大学c语言.docx_第2页
第2页 / 共50页
哈尔滨工程大学c语言.docx_第3页
第3页 / 共50页
哈尔滨工程大学c语言.docx_第4页
第4页 / 共50页
哈尔滨工程大学c语言.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

哈尔滨工程大学c语言.docx

《哈尔滨工程大学c语言.docx》由会员分享,可在线阅读,更多相关《哈尔滨工程大学c语言.docx(50页珍藏版)》请在冰豆网上搜索。

哈尔滨工程大学c语言.docx

哈尔滨工程大学c语言

一、选择题

1.对一维数组a的正确说明是D。

A)inta(10);B)intn=10,a[n];C)intn;D)#defineSIZE10

scanf("%d",&n);inta[SIZE];

inta[n];

2.能对二维数组a进行正确初始化的语句是B。

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

C)inta[2][4]={{1,2,3},{4,5},{6}};D)inta[][3]={{1,0,1},{1,2,3,4},{1,1}};

3.对两个数组a和b进行如下初始化

chara[]="ABCDEF";

charb[]={'A','B','C','D','E','F'};

则以下叙述正确的是D。

A)a与b数组完全相同B)a与b长度相同

C)a和b中都存放字符串D)a数组比b数组长度长

4.以下数组定义中不正确的是D。

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

C)intc[100][100]={0};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

5.以下选项中,不能正确赋值的是A。

A)chars1[10];s1="Ctest";B)chars2[]={'C','t','e','s','t'};

C)chars3[20]="Ctest";D)chars4[]="Ctest\n"

二、阅读程序写出结果

1.

#include

voidmain()

{charch[7]={"12ab56"};

inti,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

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

}

答案:

1

2.

#include

voidmain()

{inta[10]={1,2,2,3,4,3,4,5,1,5};

intn=0,i,j,c,k;

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

{c=a[i];

for(j=i+1;j<10-n;j++)

if(a[j]==c)

{n++;

for(k=j;k<10-n;k++)

a[k]=a[k+1];

}

}

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

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

}

答案:

12345

3.

#include

voidmain()

{inti;

chara[]="Time",b[]="Tom";

for(i=0;a[i]!

='\0'&&b[i]!

='\0';i++)

if(a[i]==b[i])

if(a[i]>='a'&&a[i]<='z')

printf("%c",a[i]-32);

else

printf("%c",a[i]+32);

elseprintf("*");

}

答案:

t*M

4.

#include

#defineLEN4

voidmain()

{intj,c;

staticcharn[2][LEN+1]={"8980","9198"};

for(j=LEN-1;j>=0;j--)

{c=n[0][j]+n[1][j]-2*'0';

n[0][j]=c%10+'0';

}

for(j=0;j<=1;j++)puts(n[j]);

}

答案:

70789198

 

三、程序填空

1.

程序的功能是在a数组中查找与x值相同的元素的所在位置。

#include

voidmain()

{

inta[11],x,i;

printf("Enter10integers:

\n");

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

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

printf("Enterx:

");

scanf("%d",&x);

a[0]=x;

i=10;

while(x!

=a[i])

(1);

if(

(2))

printf("%5d'spositionis:

%4d\n",x,(3));

else

printf("%dNotbeenfound!

\n",x);

}

答案:

(1)i—

(2)i>=1

(3)i

2.

数组a包括10个整型元素,从数组a的第2个元素开始,分别将后项减前项之差存入数组b,并按每行3个元素的格式输出数组b。

例如b[0]=a[1]-a[0]。

#include

voidmain()

{inta[10],b[10],i;

for(i=0;

(1);i++)

scanf("%d",&a[i]);

for(i=1;

(2);i++)

b[i]=a[i]-a[i-1];

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

{printf("%3d",b[i]);

if((3))

printf("\n");

}

}

答案:

(1)i<=9

(2)i<=9

(3)i%3==0

四、程序改错

1.

程序的功能是:

计算数组各元素之和,并存入首元素中。

#include

voidmain()

{

inta[10]=[0];/****found****/

inti;

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

scanf("%d",&a[i]);

for(i=1;i<=10;i++)a[0]=a[0]+a[i];/****found****/

printf("%d\n",a[0]);

}

答案:

(1)inta[3]={0};

(2)for(i=1;i<3;i++)a[0]=a[0]+a[i];

2.

函数fun的功能是:

将数组s中的字符串的反序和正序连接后形成的新字符串放在数组t中。

例如,当数组s所存的字符串为"ABCD"时,

数组t应为"DCBAABCD"。

#include

#include

#include

voidfun(chars[],chart[])

{

inti,d;

d=strlen(s);

for(i=1;i

t[i]=s[d-1-i];

for(i=0;i

t[d+i]=s[i];

t[2*d]='/0';/****found****/

}

voidmain()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstringS:

");

scanf("%s",&s);/****found****/

fun(s,t);

printf("\nTheresultis:

%s\n",t);

}

答案:

(1)for(i=0;i

(2)t[2*d]='\0’

(3)scanf(“%s”,s)

五、程序问答

1.

#include

voidmain()

{

inta[100],i,j,n,p;

printf("输入数值的个数n和数列a\n");

scanf("%d",&n);

scanf("%d",&a[0]);

for(i=1;i<=n-1;i++)

{

scanf("%d",&a[i]);

p=a[i];

j=i-1;

while(p=0)

{

a[j+1]=a[j];

j--;

}

a[j+1]=p;

}

for(i=0;i

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

printf("\n");

}

问题1:

该程序的功能是什么?

问题2:

如果先输入一个10,再输入下面的10个数:

1928374655

则该程序输出什么?

答案:

(1).升序

(2).1234556789

2.

#include

voidmain()

{inta[]={11,33,27,33,-1,22,-8,12};

inti,t,j;

for(i=0;i<8-1;i++)

for(j=8-1;j>i;j--)

if(a[j-1]

{t=a[j-1];

a[j-1]=a[j];

a[j]=t;}

for(i=0;i<8;i++)printf(“%4d”,a[i]);

}

问题1:

此程序的运行结果是什么?

问题2:

若将函数中的语句:

if(a[j-1]

改成:

if(a[j-1]>a[j])

则程序的运行结果是什么?

答案:

(1).333327221211-1-8

(2).-8-1111222273333

六、编程

1.在一组数中找出最大与最小值之差。

#include

voidmain()

{

inta[10],i,x,y;

printf("pleaseinputthenumber:

\n");

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

scanf("%d",&a[i]);

x=a[0];

y=a[0];

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

{if(a[i]>x)

x=a[i];

if(a[i]

y=a[i];

}

printf("theansweris%d",x-y);

}

2.用选择法将一组整数按降序排序。

#include

voidmain()

{

inta[10],i,j,k,t;

printf("pleaseinputthenumbers:

\n");

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

scanf("%d",&a[i]);

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

{

k=i;

for(j=i+1;j<=9;j++)

if(a[j]>a[k])

k=j;

t=a[k];

a[k]=a[i];

a[i]=t;

}

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

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

}

3.在一个按升序排列的数组中插入一个数,使数组仍有序。

#include

voidmain()

{

inta[7]={3,5,7,9,11,23};

intb,i,k;

scanf("%d",&b);

a[6]=b;

i=5;

while(b=0)

{

a[i+1]=a[i];

a[i]=b;

i--;

}

printf("charuhoudeshuzu\n");

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

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

}

4.用“顺序”查找法,在一组数中查找一个值为K的元素。

若有,输出YES;若无,输出NO。

#include

voidmain()

{

inta[10],i,j,k;

printf("pleaseinputthenumbers:

\n");

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

scanf("%d",&a[i]);

printf("pleaseinputtheaimnumber:

\n");

scanf("%d",&k);

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

if(a[i]==k)

break;

if(i>9)

printf("NO\n");

else

printf("YES\n");

}

5.输出以下形式的图案:

*******

*****

***

*

#include

voidmain()

{

inti,j;

for(i=1;i<=4;i++)

{

for(j=1;j<=i-1;j++)

printf("");

for(j=1;j<=9-2*i;j++)

printf("*");

printf("\n");

}

}

6.将一个数组按逆序重新存放在该数组中。

#include

voidmain()

{

inta[10],i,t;

printf("pleaseinputthenumbers:

\n");

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

scanf("%d",&a[i]);

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

{

t=a[i];

a[i]=a[10-1-i];

a[10-1-i]=t;

}

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

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

}

7.打印一个5行的杨辉三角形。

#include

voidmain()

{

inta[5][5]={0},i,j;

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

a[i][0]=a[i][i]=1;

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

for(j=1;j

a[i][j]=a[i-1][j]+a[i-1][j-1];

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

{

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

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

printf("\n");

}

}

8.用二维字符数组存储下列图形并输出。

*****

****

***

**

*

#include

voidmain()

{

charc[5][5]={'\0'};

inti,j;

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

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

c[i][j]='*';

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

{

for(j=0;j<5;j++)

printf("%c",c[i][j]);

printf("\n");

}

}

9.计算二维数组主对角线元素之和。

#include

voidmain()

{

inta[3][3],i,j,x;

printf("pleaseinputthenumbers:

\n");

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

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

x=0;

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

x=x+a[i][i];

printf("theansweris%d\n",x);

}

10.用“折半”查找法,在一组按降序排列的数中查找一个值为K的元素。

若有,输出YES;若无,输出NO。

#include

voidmain()

{

inta[10]={10,9,8,7,6,5,4,3,2,1},l,r,m,k;

printf("pleaseinputthenumbers:

\n");

scanf("%d",&k);

l=0;

r=9;

m=(1+r)/2;

while(l<=r)

if(a[m]==k)

break;

else

{

if(k>a[m])

r=m-1;

else

l=m+1;

m=(l+r)/2;

}

if(l<=r)

printf("\nYES");

else

printf("\nNO");

}

11.编写一个程序计算一个字符串的长度。

(不使用库函数)

#include

#include

voidmain()

{

chars[80];

intn=0;

gets(s);

while(s[n])n++;

printf("length=%d",n);

}

12.比较两个字符串S1、S2的大小。

(不使用库函数)若S1>S2,输出1;若S1=S2,输出0;若S1

#include

#include

voidmain()

{

chars1[80],s2[80];

inti,n;

gets(s1);

gets(s2);

i=0;

while(s1[i]&&s2[i]&&s1[i]==s2[i])i++;

if(!

s1[i]||s1[i]

n=-1;

if(!

s2[i]||s1[i]>s2[i])

n=1;

if(!

s1[i]&&!

s2[i])

n=0;

printf("jieguoshi%d",n);

}

13.用“冒泡”法将一组数按升序排序。

#include

voidmain()

{

inta[10],i,j,x;

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

scanf("%d",&a[i]);

for(j=0;j<9;j++)

for(i=0;i<9-j;i++)

if(a[i]>a[i+1])

{

x=a[i];

a[i]=a[i+1];

a[i+1]=x;

}

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

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

}

14.在一个二维数组中形成并输出如下矩阵

11111

21111

32111

43211

54321

#include

voidmain()

{

inta[5][5];

inti,j;

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

for(j=0;j<5;j++)

if(i<=j)

a[i][j]=1;

else

a[i][j]=i-j+1;

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

{

for(j=0;j<5;j++)

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

printf("\n");

}

}

15.有一个3╳4的矩阵,求其中的最大元素的值及位置。

#include

voidmain()

{

inta[3][4],i,j,x,l,r;

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

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

x=a[0][0];

l=r=0;

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

for(j=0;j<4;j++)

if(a[i][j]>x)

{

x=a[i][j];

l=i;

r=j;

}

printf("Maxnumberis%d,positionis%d,%d\n",x,l,r);

}

一、选择题

1.根据下面的定义,能打印出字母M的语句是(D)。

structperson{charname[9];

intage;};

structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};

A.printf("%c\n",class[3].name);

B.printf("%c\n",class[3].name[1]);

C.printf("%c\n",class[2].name[1]);

D.printf("%c\n",class[2].name[0]);

2.若有以下结构体定义:

structexample

{intx1;

inty1;

};

则B是正确的使用方式。

A.structexample.x1=100;B.structexamplexy;xy.x1=100;

C.structxy;xy.x1=100;D.structexamplexy={100};

3.下面结构体数组的定义,错误的是(D)。

A.structstudent

{intnum;

charname[10];

floatscore;

};

structstudentstu[30];

B.struct

{intnum;

charname[10];

floatscore;

}stu[30];

C.structstudent

{intnum;

charname[10];

floatscore;

}stu[30];

D.structstu[30]

{intnum;

charname[10];

floatscore;

};

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

(1)

#include

voidmain()

{structcmplx{intx;

inty;

}cnum[2]={1,3,2,7};

printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);

}

答案:

6

(2)

#include

voidmain()

{structdate

{intyear,month,dat;

}today;

printf("%d\n",sizeof(structdate));

}

答案:

6

(3)

#include

voidmain()

{structMING

{struct{intx;

inty;

}in;

inta;

intb;

}e;

e.a=1;e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf("%d,%d",e.in.x,e.in.y);

}

答案:

2,3

(4)

#include

voidmain()

{

structabc

{inta,b,c;};

structabcs[2]={{1,2,3},{4,5,6}};

intt;

t=s[0].a+s[1].b;

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

}

答案:

6

(5)

#include

#include

structstudent

{ch

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

当前位置:首页 > 小学教育 > 数学

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

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