内容发布更新时间 : 2024/11/14 21:14:51星期一 下面是文章的全部内容请认真阅读。
PART 1 程序填空题
1. 以下程序按每行5个数的格式输出1至n范围内能被7或17 整除的整数,并求出其和。 如输入:50 则输出:
7 14 17 21 28 34 35 42 49 Sum=247 源程序:
#include
int i, n, ct=0, sum=0; scanf( \ for ( i=1; i<=n; i++ ) if ( ____(1)_____ ) {
printf( \ _____(2)_______; ct++;
if ( ___(3)______ ) printf( \ }
printf( \}
2. 以下程序输入10个整数到a数组,找到并输出其中最大的整数及其下标。 如输入:80 290 150 520 330 -160 -99 0 200 9 则输出:a[3]=520 源程序:
#include
int get_max_index( int a[], int n ) {
int i, k=0;
for ( i=1; i return ______(2)_____; } void main() { int i, k, a[N]; for ( i=0; i 1 printf( \} 3. 以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,从键盘上输入平时成绩在总成绩中所占比重,计算每个学生的总成绩(四舍五入为整数)后输出到屏幕上。文件的最后一行为0表示学生数据结束。 设文件student.txt的内容为 101 Zhao 95 58 103 Qian 75 81 105 Sun 99 91 107 Li 80 67 0 运行时键盘输入:0.1 则屏幕输出: 101 Zhao 95 58 62 103 Qian 75 81 80 105 Sun 99 91 92 107 Li 80 67 68 源程序: #include void calc( FILE *fp, float x ) { int num, score1, score2; float score3; char name[20]; while ( !feof(fp) ) { /* 文件还有未读数据时 */ num = 0; fscanf( fp, \ if ( num > 0 ) { /* 学生数据有效时 */ score3 = score1 * x + score2 * (1-x); /* 计算总成绩 */ printf( \ score2, ______(1)______ ); /* 总成绩四舍五入为整数 */ } } } void main() { FILE *fp; float x; fp = fopen( \ if ( ____(2)____ ) /* 如果文件打开失败 */ { printf( \ 2 return; } scanf( \ calc( ____(3)____ ); /* 调用calc函数 */ fclose( ____(4)____ ); /* 关闭文件 */ } 4. 下面程序实现的功能是打印n以内的水仙花数,水仙花数是指其本身的值等于每一位数字的立方和,例如: 153是一个水仙花数, 153=1*1*1+5*5*5+3*3*3. 如输入:400 则输出:1 153 370 371 #include int n, digit, k, m, s; scanf( \ for ( k=1; ____(1)____; k++ ) { s = 0; m = k; while ( m != 0 ) { digit = ____(2)____; s = s + digit*digit*digit; m = m/10; } if ( ____(3)____ ) printf( \ } } 5. 以下函数 int sum(int x[], int num)计算数组x前num个元素之和。在主函数中,输入10个任意整数和下标index1、index2的值(设1<=index1<=index2<=9),调用sum()函数计算index1元素到第index2元素的和,并输出结果。 如输入: 1 3 2 5 7 9 6 4 8 10 2 4 则输出:Sum=14 例示说明:下标从2至4的元素为2、5、7,其累加为14 源程序: #include int sum( int x[], int num ) { int i, s=0; for ( i=0; ____(1)____; i++ ) 3