int n, sum = 0; n=0;
while(sum<=1000) {
n+=2; sum+=n; }
printf(“n=%d, sum=%d\\n”, n, sum);
}
/*注意:在第二个程序中,由于n+=2是在sum+=n之前完成的,故循环退出后不用执行语句n-=2*/ 4_1_18
#include
int y2, y1, i=0;
for(y2 = 1; y2 <= 4; y2++) for(y1 = 2; y1 <= 8; y1+=2) if(y2*20+y1*10 == 100) { i++; printf(\第%d种方案: (y2=%d, y1=%d)\\t\ } } 或者
#include
int y2, y1, i, n=0;
for(y2 = 1; y2 <= 4; y2++) { y1 = (100 - y2 * 20)/10; if(y1 * 10 + y2 * 20 == 100) { n++; printf(\第%d种方案: %d张20元, %d张10元\ } } }
4_1_20
#include
int i, j, n;
scanf(“%d”, &n); for(i=1; i<=n; i++)
{
for(j=1; j<=i; j++) printf(”%-2d”, i); printf(”\\n”); }
}
4_2_2
错误。应将for(a>0)改为for( ;a>0; )或者while(a>0) 4_2_4
#include
int i, j;
for(i = 1; i <= 9; i++) { for(j = 1; j <= i; j++) printf(\ printf(\ } }
第五章
5_1 基础部分习题
5_1_2 判断正误:在以下定义中,数组a的长度和数组b的长度相等。
char a[]=”1234567”;
char b[]={?1?,?2?,?3?,?4?,?5?,?6?,?7?};
错误。数组a的长度是8(字符串结束符?\\0?要占用一个数组单元),而数组b的长度是7。 5_1_4 判断正误:若有定义“char a[10];”则可用“a=”abcdef”;”给数组赋值。
错误。数组定义完后,不能直接用赋值语句给数组名赋值,数组名记录数组在内存中所分配空间的首地址,它是一个地址常量。
5_1_6 执行以下程序段后的输出结果是123,数组b中的内容为123\\0EF\\0。 5_1_8 执行以下程序段后,k的值为5。
解答:字符数组b中的有效字符串信息为”0807\\07”,其中?\\07?被看作是八进制ASCII码值为07所对应的字符。在数组b中该字符的后面\\08应该被看成是两个字符,它们分别是?\\0?和?8?。 5_1_10
#include
len = strlen(a); for(i=0; i
#include
5_1_12
#include
i++; } b[j]=’\\0’; puts(b); }
5_1_14
#include
5_1_16
#include } } for(i=0; i 5_1_18 #include a[i][j]=random(21); if(j a[i][j]*=2; printf(\} printf(\}