C程序设计第1-7章部分习题参考答案 下载本文

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 main() {

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 main() {

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 main( ) {

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 main() {

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 main() { char a[30], temp; int i, j, k, len; gets(a);

len = strlen(a); for(i=0; i a[k]) k = j; temp = a[i]; a[i] = a[k]; a[k] = temp; } puts(a); } 或者

#include main() { char a[30], temp; int i, j, k, len; gets(a); for(i=0;a[i]!=?\\0?; i++) { k=i; for(j=i+1; a[j]!=?\\0?; j++) if(a[j] > a[k]) k = j; temp = a[i]; a[i] = a[k]; a[k] = temp; } puts(a); }

5_1_12

#include main() { char a[50], b[50]; int i=0, j; gets(a); while(a[i]!=’\\0’) { if(a[i]>=’a’ && a[i]<=’z’) b[j++]=a[i];

i++; } b[j]=’\\0’; puts(b); }

5_1_14

#include main() { char a[100]; int i=0, b[26]={0}; gets(a); while(a[i]!='\\0') { if(a[i] >= 'A' && a[i] <= 'Z') b[a[i]-'A']++; if(a[i] >= 'a' && a[i] <= 'z') b[a[i]-'a']++; i++; } for(i=0; i<26; i++) printf(\ printf(\ for(i=0; i<26; i++) printf(\ printf(\}

5_1_16

#include #include #include #define N 10 main() { int a[N][N], b[N][N], c[N][N]; int i, j; randomize(); for(i=0; i

} } for(i=0; i

5_1_18

#include #include #include #define N 5 main() { int a[N][N], i, j; randomize(); for(i=0; i

a[i][j]=random(21); if(j

a[i][j]*=2;

printf(\}

printf(\}