练习5-3
函数接口定义:
void pyramid( int n );
其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。
裁判测试程序样例:
#include <stdio.h>
void pyramid( int n );
int main()
{
int n;
scanf("%d", &n);
pyramid(n);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
5
输出样例:
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
代码补全:
void pyramid( int n )
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
{
printf(" ");
}
for(int k=1;k<=2*i-1;k++)
{
if(k%2==0)
printf(" ");
else
printf("%d",i);
}
printf(" ");
printf("\n");
}
}
总结:
这个数字金字塔不同于一般的金字塔,他在数字中间穿插有空格,就是题目要求中每个数字后面都有空格。这就要求在每一行的内容打印完成后不仅需要换行符,而且需要输出一个空格字符。这点很重要,虽然看起来差别不大,但是不符合题目要求。
习题5-2
函数接口定义:
int even( int n );
int OddSum( int List[], int N );
其中函数even
将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回1,否则返回0。函数OddSum
负责计算并返回传入的N个整数List[]
中所有奇数的和。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
int even( int n );
int OddSum( int List[], int N );
int main()
{
int List[MAXN], N, i;
scanf("%d", &N);
printf("Sum of ( ");
for ( i=0; i<N; i++ ) {
scanf("%d", &List[i]);
if ( even(List[i])==0 )
printf("%d ", List[i]);
}
printf(") = %d\n", OddSum(List, N));
return 0;
}
输入样例
6
2 -3 7 88 0 15
输出样例
Sum of ( -3 7 15 ) = 19
代码补全:
int even( int n )
{
if(n%2==0)
return 1;
else
return 0;
}
int OddSum( int List[], int N )
{
int sum=0;
for(int i=0;i<N;i++)
{
if(List[i]%2)
sum+=List[i];
else;
}
return sum;
}
总结:
even函数就是简单的奇偶数判断,Oddsum就是在一个数组中寻找奇数并求和,并将和的值返回给主函数。