1.
当j = 3时
进入case 3:*(--p) = 5,所以输出一个5(第一个5),此时p指向了a[2] = 5
2
当j = 2时
进入case 2:注意这里*(p++),是先打印*p =5,p再++,所以,打印一个5(第二个5),然后p++,p指向了7
注意了!case2:后面没有break所以继续向下运行进入case3,打印*(--p),这时--p,p指向5,然后再打印5(第三个5)
3.
当j=1时,进入case1
因为case1没有break,所以又进入case2:
此时因为p指向了5,所以打印5(第四个5),然h后p++,p指向了7
因为没有break;所以进入case3
*(--p),是p先-,然后再打印,p先指向了5,再打印了5(第五个5)
按问题中的方式输出,需要两个for循环结构,外层循环负责1……2……3这样的数字循环,内层循环,负责输出几个1、几个2。
#include <stdio.h>int main()
{
for (int i=1 i<=5 ++i)
{
for (int j=0 j!=i ++j) printf("%d", i)
printf(" ")
}
printf("\n")
return 0
}
#include<stdio.h>
#define N 5
#define X (i+1)
void main() { int i,j
for ( i=0i<Ni++ ) {
for ( j=0j<Xj++ ) printf("%d",i+1)
printf("\n")
}
}