6-6 使用函数计算两个复数之积 (5分)
若两个复数分别为:c1=x1+y1i和c2=x2+y2i,则它们的乘积为 c1×c2=(x1x2−y1y2)+(x1y2+x2y1)i。
本题要求实现一个函数计算两个复数之积。
函数接口定义:
double result_real, result_imag;
void complex_prod( double x1, double y1, double x2, double y2 );
其中用户传入的参数为两个复数x1
+y1
i和x2
+y2
i;函数complex_prod
应将计算结果的实部存放在全局变量result_real
中、虚部存放在全局变量result_imag
中。
裁判测试程序样例:
#include<stdio.h>
double result_real, result_imag;
void complex_prod( double x1, double y1, double x2, double y2 );
int main(void)
{
double imag1, imag2, real1, real2;
scanf("%lf %lf", &real1, &imag1);
scanf("%lf %lf", &real2, &imag2);
complex_prod(real1, imag1, real2, imag2);
printf("product of complex is (%f)+(%f)i\n", result_real, result_imag);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
1 2
-2 -3
输出样例:
product of complex is (4.000000)+(-7.000000)i
代码
void complex_prod(double x1, double y1, double x2, double y2)
{
result_real = (x1 * x2 - y1 * y2);
result_imag = (x1 * y2 + y1 * x2);
}
6-7 输出每个月的天数 (5分)
本题要求实现一个简单函数,能计算给定的年份和月份的天数。使得可以利用该函数,输出给定年份中每个月的天数。其中1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月平年有28天,闰年有29天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。
函数接口定义:
int MonthDays(int year, int month);
其中year
和month
是用户传入的参数,如果1≤ month
≤12,该函数必须返回year
年month
月的天数。
裁判测试程序样例:
#include <stdio.h>
int MonthDays(int year, int month);
int main()
{
int ndays, month, year;
scanf("%d", &year);
for(month = 1; month <= 12; month++){
ndays = MonthDays(year, month);
printf("%d ", ndays);
}
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
2000
输出样例1:
31 29 31 30 31 30 31 31 30 31 30 31
输入样例2:
2001
输出样例2:
31 28 31 30 31 30 31 31 30 31 30 31
代码
int MonthDays(int year, int month)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
if(year%400==0||(year%4==0&&year%100!=0))
return 29;
else
return 28;
case 4:
case 6:
case 9:
case 11:
return 30;
}
}
6-8 使用函数输出一个实心的字符矩形 (5分)
本题要求实现函数输出一个实心的字符矩形,定义并调用函数matrix(length, width, ch)
,它的功能是在屏幕上显示行数为width
、列数为length
,由字符ch
组成的实心矩形图案。
函数接口定义:
void matrix(int length, int width, char ch);
其中length
是矩阵的长度,width
是矩阵的宽度,ch
是输出的字符,要求函数按照如样例所示的格式,打印出行数为width
、列数为length
,由字符ch
组成的实心矩形图案。
裁判测试程序样例:
#include <stdio.h>
void matrix(int length, int width, char ch);
int main()
{
int length, width;
char ch;
scanf("%d %d %c", &length, &width, &ch);
matrix(length, width, ch);
return 0;
}
/* 请在这里填写答案 */
输入样例:
4 2 H
输出样例:
HHHH
HHHH
代码
void matrix(int length, int width, char ch)
{
int i,j;
for(i=1;i<=width;i++)
{
for(j=1;j<=length;j++)
{
printf("%c",ch);
}
printf("\n");
}
}
6-9 字符金字塔 (5分)
本题要求实现函数输出n行字符金字塔。
函数接口定义:
void CharPyramid( int n, char ch);
其中n
和ch
是用户传入的参数,n为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n
行由字符ch
构成的字符金字塔。注意每个字符后有一个空格。
裁判测试程序样例:
#include <stdio.h>
void CharPyramid( int n, char ch );
int main()
{
int n;
char ch;
scanf("%d %c", &n, &ch);
CharPyramid(n, ch);
return 0;
}
/* 请在这里填写答案 */
输入样例:
4 G
输出样例:
在这里给出相应的输出。例如:
G
G G
G G G
G G G G
代码
void CharPyramid(int n,char ch)
{
int i,j;
for(i=1;i<=n;i++) //控制行数
{
for(j=1;j<=n-i;j++) //控制空格数
{
printf(" ");
}
for(j=1;j<=i;j++)
{
printf("%c ",ch);
}
printf("\n");
}
}