第7章 习题及参考答案
1. 编程,从键盘上输入n个整数,按逆序输出这些数。 参考程序: #include
int i,t,a[N]; for(i=0;i printf(\printf(\for(i=0;i for(i=0;i 2. 编程,已知某同学某门课程的平时、实习、测验和期末成绩,求该同学该门课程的总评成绩。其中,平时、实习、测验和期末分别占10%、20%、20%、50%。 参考程序: #include tot=0.1*a[0]+0.2*a[1]+0.2*a[2]+0.5*a[3]; printf(\} 3. 编程,输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。 参考程序: # include \#define N 10 void main() { int term[N]; int i,max,min; for(i=1;i if (term[i]< term[min]) min=i; if (term[i]> term[max]) max=i; } if(term[min]!=term[0]) { { t=term[min]; term[min]= term[0]; term[0]=t;} t=term[max]; term[max]= term[N-1]; term[N-1]=t;} if(term[max]!=term[N-1]) for(i=1;i 4. 编程,已有一个已排好序的数组(由小到大),今输入另一个数,要求仍然有序。 参考程序: #include\void main() {int i,s,x,a[11]={3,8,12,18,24,54,76,84,89,106}; printf(\scanf(\for(i=0;i<10;i++) if(x {for(s=9;s>=i;s--) a[s+1]=a[s]; break; } a[i]=x; for(i=0;i<=10;i++) printf(\} 5. 编程,有一个3?4的矩阵,找出其中最小的那个元素,以及它所在的行和列。 参考程序: #include { int a[3][4]={{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}}; int i,j,row=0,colum=0,min; min=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j] printf(\} 6. 编程,输出一个3行4列(记作3?4)矩阵A的转置矩阵AT(行列互换)。 参考程序: #include { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int b[4][3],i,j; printf(\ for(i=0;i<3;i++) { for(j=0;j<4;j++) } printf(\ for(i=0;i<4;i++) { for(j=0;j<3;j++) printf(\ printf(\ } } 7. 编程,求3×3矩阵的主对角线上元素之和。 参考程序: #include int a[3][3],i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ { printf(\} printf(\ b[j][i]=a[i][j]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum=sum+a[i][j]; printf(\} 8. 编程,求6×6矩阵下三角形元素之和。 参考程序: #include int a[6][6],i,j,sum=0; for(i=0;i<6;i++) for(j=0;j<6;j++) scanf(\for(i=0;i<=5;i++) for(j=5;j>=5-i;j--) sum=sum+a[i][j]; printf(\} 9. 编程,输入一个字符串,然后以反序输出。 参考程序: #include printf(\ gets(c); printf(\for(i=strlen(c)-1;i>=0;i--) printf(\} 10. 编程,输出给定的字符串的长度。 参考程序: #include { num++; i++; } puts(s); printf(\ printf(\ } 11. 编程,输入一行字符,要求统计有多少个单词。 参考程序: #include \#include for(i=0;(c=string[i])!='\\0';i++) if(c==' ') word=0; else if(word==0) { word=1; num++; } printf(\ are %d words in the line\\n\} 12. 编程,密码输入程序。设计要求:以星号‘*’代替密码字符的显示,6≤密码长度≤12。 参考程序: #include \#include \#define MIN 6 /*密码最小长度*/ #define MAX 12 /*密码最大长度*/ void main() { int loop; char password[13]; /*为密码字符串预留1个结束标志位*/ printf(\for( loop = 0; loop < MAX; loop++) { password[loop] = getch(); printf(\ /*以星号代替密码字符显示*/ if(password[loop]=='\\n') /*回车,结束密码输入*/ { if( loop < MIN ) /*长度<6,提示重输*/ { printf(\ress any key to continue…\ getch(); /*暂停,按任意键继续*/ printf(\ loop = -1; /*执行“loop++”后,使下标复位为0*/ } else /*密码长度在6~11之间*/ { password[loop] = '\\0'; /*置密码串结束标志*/ break; } if( loop == MAX -1) /*密码长度达到最大值MAX*/ password[loop] = '\\0'; /*置密码串结束标志*/ } /*for循环尾*/ } /*main()函数尾*/