printf(“sum=%d\taverage=%6.2f\tmax=%d\tmin=%d\n”,sum,average,max,min);
}
3.4单层循环程序设计
1、改错题
(1)以下程序可以按倒序打印26个英文字母,请改正程序中的错误。
#include"stdio.h"
voidmain()
{charc;
c='z';
while(c>='a')
{printf("%3c",c);
c--;
}
}
(2)已知鸡兔共有30只,脚共有90个,下面程序的功能计算并输出鸡兔各有多少只,请改正程序中的错误。
#include"stdio.h"
voidmain()
{intx,y;
for(x=1;x<=30;x++)
{y=30-x;
if(2*x+4*y==90)printf("%d,%d\n",x,y);
}
}
2、填空题
(1)以下程序求111111的个、十、百位上的数字之和,请填空。
#include"stdio.h"
voidmain()
{inti,x=1,y=0;
for(i=1;i<=111;i++)
x=x*111%1000;
do
{y=y+x%10;
x=x/10;
}while(x!
=0);
printf("%d\n",y);
}
(2)某学校有近千名学生,现在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,求该校学生总数。
#include“stdio.h”
voidmain()
{intn=999;
while(n>800)
{if(n%5==2&&n%7==3&&n%3==1)break;
n--;
}
printf(“%d\n”,n);
}
3、程序设计题
(1)计算1-3+5-7+…-99+101的值。
#include“stdio.h”
voidmain()
{inti,t=-1,s=0;
for(i=1;i<=101;i+=2)
{t=(-1)*t;
s=s+t*i;
}
printf(“s=%d\n”,s);
}
(2)输入若干学生成绩,以负数作结束符,输出其中的最高分和平均分。
#include“stdio.h”
voidmain()
{intgrade,max,n=0,sum=0;
scanf(“%d”,&grade);
max=grade;
while(grade>0)
{sum+=grade;
scanf(“%d”,&grade);
if(grade>max)max=grade;
n++;
}
printf(“max=%d,average=%5.2f\n”,max,1.0*sum/n);
}
3.5嵌套循环程序设计
1、改错题
(1)以下程序的功能是计算下式的值。
请改正程序中的错误。
(1)×(1+2)×(1+2+3)×(1+2+3+4)×……×(1+2+……+10)
#include"stdio.h"
voidmain()
{inti,j;
floatx,y;
y=1;
for(i=1;i<=10;i++)
{x=0;
for(j=1;j<=i;j++)
x=x+j;
y=y*x;
}
printf("%f\n",y);
}
(2)以下程序的功能是求算式xyz+yzz=532中x,y,z的值。
请改正程序中的错误。
#include"stdio.h"
voidmain()
{intx,y,z;
for(x=1;x<10;x++)
for(y=1;y<10;y++)
for(z=1;z<10;z++)
if(100*x+10*y+z+100*y+10*z+z==532)
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
2、填空题
(1)打印下面图形。
×
××
×××
××××
×××××
×
×
×
#include“stdio.h”
voidmain()
{
inti,j,k;
for(i=1;i<=5;i++)
{
for(j=1;j
printf(“×”);
printf(“\n”);
}
for(i=6;i<10;i++)
printf(“×\n”);
}
(2)若打印如下阵列,请填空。
1234
2341
3412
4123
#include"stdio.h"
voidmain()
{inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=4;j++)
printf(“%d\t”,(i+j)>5 ?
(i+j)%5 :
(i+j-1));
printf("\n");
}
}
3、程序设计题
(1)按下面的近似公式计算:
e=1+1/1!
+1/2!
+1/3!
+……1/10!
。
#include“stdio.h”
voidmain()
{inti,j,t=1;
floate=1;
for(i=1 ;i<=10 ;i++)
{t*=i ;
e+=1.0/t ;
}
printf(“e=%f\n”,e);
}
(2)取1分、2分、5分的硬币共十枚,付一角八分钱,有几种不同的取法?
怎样取?
(提示:
某一种硬币可以取零枚。
先确定取值范围,再验证满足条件。
)
#include“stdio.h”
voidmain()
{inti,j,k,n=0;
for(i=0;i<=10;i++)
for(j=0;j<=9;j++)
{k=10-i-j;
if(i+2*j+5*k==18)
printf(“%d:
%d,%d,%d\n”,++n,i,j,k);
}
}
实验6一维数组程序设计
1、改错题
(1)以下程序的功能是将若干学生成绩存于数组中,求平均成绩。
请改正程序中的错误。
#include"stdio.h"
voidmain()
{inta[50],i=0,sum=0;
floatave;
scanf("%d",&a[i]);
while(a[i]!
=-1)
{sum+=a[i];
i++;
scanf("%d",&a[i]);
}
ave=(1.0)*sum/i;
printf("average=%f\n",ave);
}
(2)以下程序输入10个整数,判断它们是否有重复,如果没有重复输出Yes,否则输出No。
请改正程序中的错误。
#include"stdio.h"
#defineN10
voidmain()
{inta[N],i,j,isyes=1;
for(i=0;iscanf("%d",&a[i]);
for(i=0;ifor(j=i+1;jif(a[i]==a[j])isyes=0;
if(isyes==1)printf("Yes\n");
elseprintf("No\n");
}
2、填空题
(1)以下程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。
请填空。
#include“stdio.h”
#defineSIZE5
voidmain()
{inta[SIZE],max,min,i,j,k;
for(i=0;imax=min=a[0];
for(i=1;i{if(a[i]>max){max=a[i];j=i;}
elseif(a[i]}
a[j]=min;a[k]=max;
for(i=0;i}
(2)以下程序中的a数组保存有10整数元素,从a中第二个元素起,分别将后项减前项之差存入b数组,并按每行3个元素输出数组b。
请填空。
#include“stdio.h”
voidmain()
{inta[10],b[10],i=0;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for(i=1;i<10;i++)
b[i]=a[i]-a[i-1];
for(i=1;i<10;i++)
{printf(“%3d”,b[i]);
if(i%3==0)printf(”\n”);
}
}
3、程序设计题
(1)输入一英文单词,将其字母按字典顺序排序后输出。
如:
输入program,输出agmoprr。
#include“stdio.h”
#include“string.h”
voidmain()
{charch[10],i,j,x;
printf(“输入英文单词:
”);
scanf(“%s”,ch);
for(i=0;ifor(j=i+1;jif(ch[i]>ch[j])
x=ch[i],ch[i]=ch[j],ch[j]=x;
printf(“%s\n”,ch)
}
(2)给一维数组a输入任意6个整数,如:
356218,建立一个以下内容的方阵并打印。
835621
183562
218356
621835
562183
356218
#include“stdio.h”
voidmain()
{inta[6],i,j,k,m;
printf(“输入6个整数:
”);
for(i=0;i<6;i++)scanf(“%d”,&a[i]);
for(i=5;i>=0;i--)
{k=a[5];
for(j=4;j>=0;j--)a[j+1]=a[j];
a[0]=k;
for(m=0;m<6;m++)printf(“%2d”,a[m]);
printf(“\n”);
}
}
实验7二维数组和字符数组程序设计
1、改错题
(1)以下程序分别统计字符串str中大写字母和小写字母的个数,请改正程序中的错误。
#include"stdio.h"
#include"string.h"
voidmain()
{charstr[80];
inta=0,b=0,i;
gets(str);
for(i=0;str[i]!
='\0';i++)
{if(str[i]>='a'&&str[i]<='z')a++;
if(str[i]>='A'&&str[i]<='Z')b++;
}
printf("%d,%d\n",a,b);
}
(2)以下程序输入n×n个数据,将其按n行n列的方阵输出。
请改正程序中的错误。
#include“stdio.h”
voidmain()
{inta[10][10],i,j,n;
scanf(“%d”,&n);
for(i=0;ifor(j=0;jscanf(“%d”,&a[i][j]);
for(i=0;i{for(j=0;jprintf(“%3d”,a[i][j]);
printf(“\n”);
}
}
2、填空题
(1)以下程序是将字符串s中所有的空格字符删去,请填空。
#include“stdio.h”
voidmain()
{
chars[]=”OurteacherteachsClanguage.”;
inti,j;
for(i=j=0;s[i]!
=’\0’;i++)
if(s[i]!
=’‘)s[j++]=s[i];
s[j]=’\0’;
printf(“%s\n”,s);
}
(2)以下程序给方阵中所有边上的元素和两个对角线上的元素置1,其它元素置0,并按方阵形式输出。
#include“stdio.h”
#defineN10
voidmain()
{
inta[N][N],i,j;
for(i=0;i{
for(j=0;j{
if(i==0||j==0||j==i||i==N-1||j==N-1||i+j==N-1)a[i][j]=1;
elsea[i][j]=0;
printf(“%3d”,a[i][j]);
}
printf(“\n”);
}
}
3、程序设计题
(1)有3名学生5门课程的考试成绩存于二维数组中,求每名学生的平均分及3名学生的总平