C部分答案2.docx
《C部分答案2.docx》由会员分享,可在线阅读,更多相关《C部分答案2.docx(31页珍藏版)》请在冰豆网上搜索。
![C部分答案2.docx](https://file1.bdocx.com/fileroot1/2022-11/16/9fb7da56-1ee9-46f2-abfc-7454570c8b71/9fb7da56-1ee9-46f2-abfc-7454570c8b711.gif)
C部分答案2
数组
61.见实验指导书P60必做题1。
62.
#include
voidmain()
{inta[10],b[5],i;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for(i=0;i<5;i++)
b[i]=a[2*i];//把数组a中下标为偶数的元素放入数组b中
for(i=0;i<5;i++)
printf(“%d”,b[i]);
}
63.
#include
voidmain()
{floatscore[10],sum=0,aver;
intI,m=0;
for(i=0;i<10;i++)
scanf(“%f”,&score[i]);
for(i=0;i<10;i++)
sum+=score[i];
aver=sum/10;
for(i=0;i<10;i++)
if(score[i]>aver)m++;
printf(“Thescoregaoyuaveragedestudentsyou:
%d”,m);
}
64.
#include
voidmain()
{inta[3][3],i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf(“%d”,&a[i][j]);
for(i=0;i<3;i++)
sum+=a[0][i];
for(i=0;i<3;i++)
sum+=a[2][i]
sum+=a[1][0]+a[1][2];
printf(“%d”,sum);
}
65.见实验指导书P71必做题1。
66.
#include
#include
voidmain()
{chars[20],t;
inti,j,len;
gets(s);
len=strlen(s);
for(i=1;ifor(j=1;j<=len-i;j++)
if(s[j-1]>s[j])
{t=s[j-1];
s[j-1]=s[j];
s[j]=t;
}
puts(s);
}
67.
#include
#include
voidmain()
{chars1[200],s2[100];
inti=0,j=0;
gets(s1);
gets(s2);
while(s1[i]!
=’\0’)
i++;//统计s1中字符的个数
while(s2[j]!
=’\0’)
s1[i++]=s2[j++];//把s2接在s1的后面
s1[i]=’\0’;//最后加上字符串结束符号
puts(s1);//把连接后的字符串输出
}
68.
#include
#include
voidmain()
{chars[10][20];//二维数组,10个字符串,每个字符串最多20个字符
inta[10],i,j;
for(i=0;i<10;i++)//循环输入10个字符串
gets(s[i]);
for(i=0;i<10;i++)
{a[i]=s[i][0];//先将第i个字符串的第一个字符附值给一维数组a的第i个元素
for(j=1;s[i][j]!
=’\0’;j++)
if(a[i]
}
for(i=0;i<10;i++)
printf(“%c”,a[i]);
}
69.此题参见实验指导数组章节,实验九必做题2
#includevoidmain()
{intbas,num,a[18],i,j;
printf(“Inputashijinzhizhengshuandjinzhi:
”);
scanf(“%d,&d”,&num,&bas);
for(i=0;num;i++)//num变为0时停止循环
{a[i]=num%bas;
num=num/bas;
}
for(j=i-1;j>=0;j--)//输出
printf(“%d”,a[j]);
}
70.#include
voidmain()
{inta[10],i,m=0,sum=0,aver;
for(i=0;i<10;i++)//输入10个正整数
scanf(“%d”,&a[i]);
for(i=0;i<10;i++)
if(a[i]%2==0)
{sum+=a[i];
m++;
}
aver=sum/m;
printf(“\nOushudegeshuwei:
%d,Oushudepingjunzhiwei:
%d”,m,aver);
}
71.
#include
voidmain()
{inta[10],b[9],i;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for(i=0;i<9;i++)
b[i]=a[i+1]/a[i];
for(i=0;i<9;i++)
{printf(“%d”,b[i]);
if((i+1)%3==0)printf(“\n”);//每输出3个元素换行
}
}
72.
#include
#include
voidmain()
{chara[100],b[50],c[100],maxc;
inti,maxi,len1,len2;
gets(a);
gets(b);
len1=strlen(a);
len2=strlen(b);
maxc=a[0];
for(i=0;a[i]!
=’\0’;i++)//求字符串a的最大字符,保存在maxc中,以及其下标
if(maxc{maxc=a[i];
maxi=i;//maxi保存最大字符的下标
}
for(i=0;ic[i]=a[maxi+1+i];
c[i]=’\0’;
for(i=0;ia[maxi+1+i]=b[i];
for(i=0;c[i]!
=’\0’;i++)//再连接数组c
a[maxi+1+len2+i]=c[i];
a[maxi+1+len2+i]=’\0’;
puts(a);
}
73.输入一个正整数,按逆序输出各位的数字。
#include
voidmain()
{inta[10],num,i,j;
scanf(“%d”,&num);
i=0;
while(num!
=0)//每次分离得到个位数
{a[i]=num%10;
num=num/10;
i++;
}
for(j=0;j
printf(“%d”,a[j]);
}
74.参见C语言教材P128例7.4。
注意在main()上面要加上#include
在main()前要加上void
75.参见C语言教材P129例7.5。
注意在main()上面要加上#include
在main()前要加上void
76.同题68
77.同题70
78.编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。
不得使用strcpy函数。
拷贝时,‘\0‘也要拷贝过去。
#include
#include
voidmain()
{chars1[100],s2[100];
inti;
gets(s2);
for(i=0;s2[i]!
=’\0’;i++)
s1[i]=s2[i];
s1[i]=’\0’;
puts(s1);
}
79.将一个字符串中下标值为偶数的元素由小到大排序,其它元素不变。
#include
#include
voidmain()
{chars[100],s1[50],s2[5],c;
inti,j,len;
gets(s);
for(i=0;s[2*i]!
=’\0’;i++)//将字符串中下标为偶数的元素存放在数组s1中
s1[i]=s[2*i];
len=strlen(s1);//对s1中的len个字符进行冒泡排序
for(i=1;i<=len-1;i++)
for(j=1;j<=len-i;j++)
if(s[j-1]>s[j])
{c=s[j-1];
s[j-1]=s[j];
s[j]=c;
}
for(i=0;s1[i]!
=’\0’;i++)//再将排好序的s1中字符依次放入s中偶数下标处
s[2*i]=s1[i];
puts(s);//输出处理后的字符串s
}
80.思路:
(1)各行第一个数都是1
(2)各行最后一个数都是1
(3)从第3行开始,除第一后最后一个数外,其余各数是上一行同列和前一列两个数之和,即a[i][j]=a[i-1][j]+a[i-1][j-1],i为行数,j为列数
#include
voidmain()
{inti,j,a[11][11];
for(i=1;i<11;i++)
{a[i][i]=1;//最后一列
a[i][1]=1;//第1列
}
for(i=3;i<11;i++)//第3行起
for(j=2;j<=i-1;j++)//除第一和最后一个元素外其它元素
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<11;i++)//输出
{for(j=1;j<=i;j++)
printf(“%6d”,a[i][j]);
printf(“\n”);
}
printf(“\n”);
}
81.从键盘输入一个二维整型数组,如a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4},试编程检查一个二维数组是否对称(即对所有i,j都有a[i][j]=a[j][i])。
#include
voidmain()
{inta[4][4],i,j,k=0;
for(i=0;i<4;i++)//数组元素的输入
for(j=0;j<4;j++)
scanf(“%d”,&a[i][j]);
for(i=0;i<4;i++)//比较判断是否对称
for(j=0;j<4;j++)
{if(a[i][j]!
=a[j][i])//如果有一个不相等,就输出No,并结束循环
{printf(“No\n”);
break;
}
elsek