C语言程序设计-第二次作业的部分答案及分析
三、写出下列每个程序运行后的输出结果
1. #include
void main() {
int a[10]={12,39,26,41,55,63,72,40,83,95};
int i, i1=0, i2=0;
for(i=0;i<10;i++)
if(a[i]%2==1) i1++; else i2++;
printf("%d %d\n",i1,i2);
}
6 4
/* i1,i2分别统计a数组中奇数和偶数的个数。a[i]%2==1,是说a[i]除以2的余数等于1,说明a[i]是奇数。a数组中,a[1]、a[3]、a[4]、a[5]、a[8]和a[9]是奇数,共6个;a[0]、a[2]、a[6]和a[7]是偶数,共4个。 */
2. #include
#include
void main() {
int i;
char* a[5]={"student","worker","cadre","soldier","peasant"};
char *p1, *p2;
p1=p2=a[0];
for(i=0; i<5; i++) {
if(strcmp(a[i], p1)>0) p1=a[i];
if(strcmp(a[i], p2)<0) p2=a[i];
}
printf("%s %s\n",p1,p2);
}
worker cadre
/* p1,p2分别指向排名最后和最前的两个字符串。Strcmp(a[i],p1)>0是指a[i]字符串大于p1字符串(字符串大小是根据字典顺序确定,排在前面为小,排在后面为大)。经过循环处理,p1指向串值最大的字符串,即排名最靠后的串worker,p2指向串值最小的字符串,即排名最靠前的串cadre。 */
3. #include
int a[10]={4,5,6,15,20,13,12,7,8,9};
void main()
{
int i,s0,s1,s2;
s0=s1=s2=0;
for(i=0; i<10; i++) {
switch(a[i]%3) {
case 0: s0+=a[i];break;
case 1: s1+=a[i];break;
case 2: s2+=a[i];break;
}
}
printf("%d %d %d\n",s0,s1,s2);
}
42 24 33
/* s0,s1,s2分别累加a数组中除以3后,余0、余1、余2的三类元素 */
4. #include
void main() {
?
char a[]="abcdbfbgacd";
int i1=0, i2=0, i=0;
while(a[i]) {
if(a[i]=='a') i1++;
if(a[i]=='b') i2++;
i++;
}
printf("%d %d %d\n",i1,i2,i);
}
2 3 11
???????? 数组abcdbfbgacd\0
/* i1,i2,i分别统计a数组中字母a,b的个数以及字符串的长度(字母个数) 。
while(a[i])相当于while(a[i]!=’\0’),即未到串尾时。 */
5. #includ