5   
夏学期C程序设计上机练习参考答案  
相同的元素,如果找到,输出 x 在数组 a 中对应元素的最小下标,如果没有找到,输出相应信息。 输入输出示例:括号内为说明 输入: 2 6 
1 3 5 7 9 5 5 4 1 3 5 7 2 输出: 5: a[2] 2: not found #include  int main(void) {     int flag, i, n, x;     int repeat, ri;     int a[10];      scanf(\    for(ri = 1; ri <= repeat; ri++){    flag=0;          /* 若标志不重新初始化的 
(x=2) 
  
(x=5) (n=4) 
  
(repeat=2) (n=6) 
输入2个正整数 m 和 n (1<=m<=6, 1<=n<=6),然后输入矩阵 a(m 行 n 列)中的元素,分别求出各行元素之和,并输出。 
输出使用语句:printf(\%d is %d\\n\i, sum); 输入输出示例:括号内为说明 输入: 3 2 6  3 1  -8 3  12 输出: 
sum of row 0 is 9 sum of row 1 is -7 sum of row 2 is 15 #include   int main(void) {     int i, j, m, n, sum;     int a[6][6];    
(m=3,n=2) 
    scanf(\    for(i = 0; i < m; i++)             for(j = 0; j < n; j++)             scanf(\       flag = 1; break; }   
70022    矩阵运算 
程序填空,不要改变与输入输出有关的语句。 
输入一个正整数 repeat (0读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入输出示例:括号内为说明 输入: 
1        (repeat=1) 
      for(i = 0; i < m; i++){        } sum=0; for(j = 0; j < n; j++)  sum+=a[i][j]; 化,就会一影响下一轮循环的计算 */         scanf(\        for(i = 0; i < n; i++) scanf(\        scanf(\              for (i = 0; i < n; i++) {      } if(x==a[i])  {   } printf(\        if(flag != 0) printf( \         else printf( \     } }    
70021    求矩阵各行元素之和 
  6   
夏学期C程序设计上机练习参考答案  
4        (n=4) 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1 
sum = 35   (2+3+4+5+6+7+8=35) #include \int main(void) {     int i, j, n, sum;     int repeat, ri;     int a[6][6];      scanf(\    for(ri = 1; ri <= repeat; ri++){         scanf(\        for(i = 0; i < n; i++)             for(j = 0; j < n; j++)                 scanf(\            sum=0; for(i = 0; i < n; i++){    for(j = 0; j < n; j++)  } sum+=a[i][j]; 提示:将乘数、被乘数和乘积放入一个二维数组中,再输出该数组。 
输入输出示例:括号内为说明 输入: 
1       (repeat=1) 3       (n=3) 输出: 
*   1   2   3 1   1 2   2   4 3   3   6   9 
/* 根据输出要求 将乘数存于a[0][j] 被乘数存于a[i][0];  结果放在a[i][j], i,j不为0*/  #include \int main(void) {     int i, j, n;     int a[10][10];      int repeat, ri;       scanf(\    for(ri = 1; ri <= repeat; ri++){         scanf(\          for(j = 0; j <= n; j++)  a[0][j]=j;   /* 乘数 */ for(i = 1; i < n-1; i++)   sum-=a[i][n-i-1];  /* 减去副对角线的元素 */   行 */   列 */    for(j =0; j 两次,补回一次 */         printf(\    } }   
70023    九九乘法表   
程序填空,不要改变与输入输出有关的语句。 
输入一个正整数 repeat (0输入一个正整数 n(0  7   
夏学期C程序设计上机练习参考答案  
70024 判断上三角矩阵 
输入一个正整数 repeat (0输入1 个正整数 n (1≤n≤6)和 n 阶方阵 a 中的元素,如果 a 是上三角矩阵, 输出\否则, 输出\。上三角矩阵指主对角线以下的元素都为0的矩阵, 主对角线为从矩阵的左上角至右下角的连线。 输入输出示例:括号内为说明 输入: 
2       (repeat=2) 3   1  2  3    0  4  5   0  0  6  2   1  0   -8  2    输出: YES  NO  
#include \#include \int main(void) {     int flag, i, j, n;     int a[6][6];     int repeat, ri;      scanf(\    for(ri = 1; ri <= repeat; ri++){         scanf(\        for(i = 0; i < n; i++)             for(j = 0; j < n; j++)                 scanf(\               flag=1; for(i = 0; i < n; i++){    for(j = 0; j < i; j++){        if(a[i][j]!=0){  flag=0; break;   /* (n=2) (n=3) 
   }         if(flag != 0)  printf(\        else  printf(\    } }  
70025 算算看,这是第几天? 
输入一个正整数 repeat (0输入日期(年、月、日),输出它是该年的第几天。 要求定义与调用函数 day_of_year(year, month, day),计算并返回year(年)、month(月)和day(日)对应的是该年的第几天,函数形参year、month和day的类型是int,函数类型也是int。 
输入输出示例:括号内为说明 输入: 
2         (repeat=2) 1981 3 1  (1981年3月1日) 2000 3 1  (2000年3月1日) 输出: 
days of year: 60        (1981年3月1日是该年的第60天) 
days of year: 61        (2000年3月1日是该年的第61天)  
#include \int main(void) {     int day, day_year, month, year;     int repeat, ri;     int day_of_year(int year, int month, int day);      scanf(\    for(ri = 1; ri <= repeat; ri++){         scanf(\  day_year=day_of_year(year,month,day);         printf(\    } }  int day_of_year(int year, int month, int day) {   int k,leap; int a[2][31]={ 只要一个数值不满足就可以否定 */              } if (!flag) break; }   8