1、以下程序段中printf语句执行几次?
i=1;
do {
for (j=1;j<=i;j++)
printf("*");
} while (++i<=5);
2、程序2.1 从键盘上输入134 <回车>,写出下列程序的输出结果。
#include<stdio.h>
void main()
{ int c;
while ((c=getchar())!='\n')
{ switch(c-'1')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+3);break;
case 3: putchar(c+2);
case 4: putchar(c+1);break;
}
}
printf("\n");
}
3、
写出下列程序的输出结果。
#include <stdio.h>
void main( )
{ char str[ ]="BeijingOlympic2008";
int i=1, j=0;
while ( str[i] != '\0' )
{ if ( str[i] > str[j] ) j=i;
i++;
}
printf("%c\n",str[j]);
str[j]=str[i];
puts(str);
}
1.printf执行了15次.
因为i=1.j=1;满足条件j<=i.就执行输出.第一次执行一次. 然后++i. i就等于2.再进入do while语句块.这次的for循环执行两次输出. 然后++i. i=3. for循环执行3次输出.++i.... 一直到i=5的时候进入语句块,执行5次输出. 然后++i后,i=6.不满足while的要求. 就不再进入do while语句块.
2.输出为54665<回车>
首先获取字符型的1, 字符型的1-'1'就等于0. 则执行case 0.由于case后没有break.
则继续执行case 1,输出c+4.则输出5.
一样由于没有break, 继续执行c+3, 输出4. 遇到break; 退出switch.
继续从键盘获取3. 3-'1'=2; 执行case 2语句. 输出c+2 输出为6. 遇到break; 退出switch.
从键盘获取4, 4-'1'=3; 执行case 3语句.输出c+2, 输出为6. 由于没有break.
所以继续执行case 4语句,输出c+1.输出为5. 遇到break;
从键盘获取到回车. 结束输入. 最后输出一个回车..
3.输出为
y
BeijingOl
程序中的while循环用来找出字符串中ascii最大的字符. 并将其下标保存到j中. 最后的结果是y的下标9.
while会一直执行到str[i]为字符串结束符('\0')时结束. 所以执行完后下标i指向8的后一个元素.就是'\0';
然后输出字符串中最大的字符. a[j]. 输出回车. 就是y<回车>
再将a[i]赋值给a[j]. 等于将字符串结束符移到原本y的位置.
然后puts(str);输出字符串. puts()是输出字符串直到遇到字符串结束符才结束输出.
所以字符串从B开始输出,到原本y的位置.由于y已经被'\0'替换.所以结束输出.
puts(str)最终输出BeijingOl