k=i;
for(i=k;i<9;i++)
a[i]=a[i+1];
for(i=0;i<9;i++)
printf("%4d",a[i]);
}
(1)运行结果:
(2)运行结果分析:
7.以下程序的功能是:
从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
请填空:
#include
voidmain()
{floatx[1000],sum=0.0,ave,a;
intn=0,i;
printf("Entermark:
\n");
scanf("%f",&a);
while(a>=0.0&&n<1000)
{sum+=;
x[n]=;
n++;
scanf("%f",&a);
}
ave=;
printf("Output:
\n");
printf("ave=%f\n",ave);
for(i=0;iif()printf("%f\n",x[i]);
}
解答:
(1)源代码:
#include
voidmain()
{
floatx[1000],sum=0.0,ave,a;
intn=0,i;
printf("Entermark:
\n");
scanf("%f",&a);
while(a>=0.0&&n<1000)
{
sum+=a;
x[n]=a;
n++;
scanf("%f",&a);
}
ave=sum/n;
printf("Output:
\n");
printf("ave=%f\n",ave);
for(i=0;iif(x[i]printf("%f\n",x[i]);
}
(2)运行结果:
(3)运行结果分析:
8.综合编程题:
打印如下杨辉三角形
1
11
121
1331
14641
15101051
解答:
(1)源代码:
#include
voidmain()
{
inti,j,a[6][6];
for(i=0;i<6;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<6;i++)
{
for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<6;i++)
{
for(j=0;j<=i;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
(2)运行结果:
(3)运行结果分析:
9.调试下列程序,使之具有如下功能:
任意输入两个字符串(如:
“abc123”和“china”),并存放在a,b两个数组中。
然后把较短的字符串放在a数组,较长的字符串放在b数组。
并输出。
#include
#include
voidmain()
{chara[10],b[10];
intc,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c=strlen(a);
d=strlen(b);
if(c>d)
for(k=0;k{ch=a[k];a[k]=b[k];b[k]=ch;}
printf("a=%s\n",a);
printf("b=%s\n",b);
}
解答:
(1)源代码:
#include
#include
voidmain()
{
chara[100],b[100];
charstr1[100],str2[100];
scanf("%s%s",str1,str2);
strcpy(a,strlen(str1)str1:
str2);
strcpy(b,strlen(str1)>strlen(str2)?
str1:
str2);
printf("a=%s\n",a);
printf("b=%s\n",b);
}
(2)运行结果:
(3)运行结果分析:
10.阅读下面的程序,然后回答后面的问题:
#include
#include
voidmain()
{chars1[80],s2[40];
inti=0,j=0;
printf("\nPleaseinputstring1:
");
scanf("%s",s1);
printf("\nPleaseinputstring2:
");
scanf("%s",s2);
while(s1[i]!
='\0')
i++;
while(s2[j]!
='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("\nNewstring:
%s",s1);
}
编辑、运行该程序,然后分别输入 Country和side。
请问:
① 程序执行的结果是什么?
② 该程序的功能是什么?
解答:
(1)源代码:
(2)运行结果:
(3)运行结果分析:
11.填空完成下面程序,使其功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如:
输入的两个字符串分别为abcdefg和abceef,则输出为-1。
程序如下:
#include
voidmain()
{charstr1[100],str2[100];
inti,s;
printf("\nInputstring1:
\n");gets(str1);
printf(“\nInputstring2:
\n”);gets(str2);
i=
(1);
while((str1[i]==str2[i])&&(str1[i]!
=
(2)))
i++;
s=(3);
printf("%d\n",s);
}
解答:
(1)源代码:
#include
voidmain()
{charstr1[100],str2[100];
inti,s;
printf("\nInputstring1:
\n");gets(str1);
printf("\nInputstring2:
\n");gets(str2);
for(i=0;;i++){
if(str1[i]==str2[i])
continue;
else
break;
}
s=str1[i]-str2[i];
printf("%d\n",s);
}
(2)运行结果:
(3)运行结果分析:
12.填空完成下面程序,使其的功能是统计从终端输入字符中每个大写字母的个数。
用#号作为输入结束标志。
程序如下:
#include
#include
voidmain()
{intnum[26],i;charc;
for(i=0;i<26;i++)num[i]=0;
while(
(1)!
='#')/*统计从终端输入的大写字母个数*/
if(isupper(c))num[c-65]
(2);
for(i=0;i<26;i++)/*输出大写字母和该字母的个数*/
if(num[i])printf("%c:
%d\n",i(3),num[i]);
}
解答:
(1)源代码:
#include
#include
voidmain()
{
intnum[26],i;
charc;
for(i=0;i<26;i++)
num[i]=0;
while((c=getchar())!
='#')
if(isupper(c))
num[c-65]+=1;
for(i=0;i<26;i++)
if(num[i])
printf("%c:
%d\n",i+65,num[i]);
}
(2)运行结果:
(3)运行结果分析:
13.编写程序,输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。
以“stop”作为输入的最后一个字符串。
解答:
(1)源代码:
#include
#include
voidmain()
{chara[50][100];
inti=0,max=0,k;
while(gets(a[i])&&strcmp(a[i],"stop"))
{i++;
if(strlen(a[i])>max)
{max=strlen(a[i]);k=i;}}
printf("Thelongeststringis:
\n%s\n",a[k]);
}
(2)运行结果:
(3)运行结果分析:
14.编写程序,输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。
如:
输入"BEIJING"、"123"和位置3,则输出:
"BEI123JING123"。
解答:
(1)源代码:
#include
#include
#include
char*insert(char*s1,char*s2,intf)
{
char*s3,*p1=s1,*p2=s2;
inti,j,k;
j=strlen(s2);
k=strlen(s1);
s3=newchar[j+k+f+1];
for(i=0;is3[i]=*p1;
for(i=f;is3[i]=*p2;
for(i=f+j,p1=s1;is3[i]=*(p1+f);
s3[j+k+f]='\0';
returns3;
}
voidmain()
{
chars1[20],s2[20],*p;
intf;
printf("Input:
");
gets(s1);
printf("Add:
");
gets(s2);
printf("At:
");
scanf("%d",&f);
p=insert(s1,s2,f);
printf("Theresultis:
%s",p);
delete[]p;
getch();
}
(2)运行结果:
三、结论(写本次实验的收获)
通过本次试验,我掌握一维数组和二维数组的定义、赋值和输入输出的方法,字符数组和字符串函数的使用和掌握与数组有关的算法