改成:
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