C语言初学题

1、输入某年某月某日,判断这一天是这一年的第几天
在这里插入图片描述
1输入年月日
2将前几个月的天数相加
3判断是否为闰年,若闰年二月之后,天数加一天
4输出天数

#include<stdio.h>
int main()
{
	int year;
	int month;
	int day;
	int days;//定义变量
	printf("input year,month,day:");//输入提示
	scanf("%d,%d,%d",&year,&month,&day);//输入年月日
	switch(month)
	{
	case 1:days=day;break;
	case 2:days=day+31;break;
	case 3:days=day+59;break;
	case 4:days=day+90;break;
	case 5:days=day+120;break;
	case 6:days=day+151;break;
	case 7:days=day+181;break;
	case 8:days=day+212;break;
	case 9:days=day+243;break;
	case 10:days=day+273;break;
	case 11:days=day+304;break;
	case 12:days=day+334;break;
	}//判断月份
	if((year%4==0&&year%100!=0||year%400==0)&&month>=3)
		days+=1;//判断是否为闰年
	printf("%d/%d is the %dth day in %d.\n",month,day,days,year);//输出天数
	return 0;
}

2、输出一个国际象棋棋盘(8行8列方格,并且黑白相间)
在这里插入图片描述
1用for语句实现循环
2输出空格,显示为棋盘黑格
3输出’\xA1’, '\xF6’对应字符,显示为白格

#include<stdio.h>
int main()
{
	int i,j;//定义变量
	for(i=1;i<=8;i++)
	{	
		for(j=1;j<=8;j++)
			if((i+j)%2) printf("  ");//输出黑格
			else printf("%c%c",'\xA1', '\xF6');//输出白格
			printf("\n");}
	return 0;
}

3、任意输入三个实数,打印其最大值,最小值,平均值,要求用函数及指针作函数实参,指针变量作形参的方法实现。
在这里插入图片描述
1输入三个数以“,”分割
2平均值执行语句ave=(a+b+c)/3
3判断大小执行函数体double MAX(double *x,double * y,double *z)
double MIN(double *x,double * y,double *z)
4输出最大值、最小值、平均值

#include<stdio.h> 
double MAX(double *x,double * y,double *z); 
double MIN(double *x,double * y,double *z);//函数预定义 
double max,min,ave; //定义全局变量
int main() 
{ 
double a,b,c; 
double *p1,*p2,*p3; 
printf("Please input a,b,c:"); //输出提示"请输入a,b,c"
scanf("%lf,%lf,%lf",&a,&b,&c); //输入a,b,c

p1=&a;p2=&b;p3=&c;//指针赋值
MAX(p1,p2,p3);//运行函数MAX
MIN(p1,p2,p3);//运行函数MIN
ave=(a+b+c)/3;//求平均值
printf("max = %lf\n",max); //输出最大值
printf("min = %lf\n",min); //输出最小值
printf("ave = %lf\n",ave); //输出平均值

} 
double MAX(double *x,double * y,double *z) 
{ 
max = *x; 
if(*y>max) max = *y; 
if(*z>max) max = *z; 
return (max);
}
double MIN(double *x,double * y,double *z) 
{
min=*x;
if(*y<min) min = *y; 
if(*z<min) min = *z;
return (min); 
}

4、通过指针数组P和一维数组a构成一个3*2的二维数组;并为a数组赋初值2,4,6,8。。。。。要求先按行的顺序输出此二维数组;然后再按列的顺序输出它。
在这里插入图片描述
1将数组a强制转换成二维数组
2按行输出
3按列输出

#include<stdio.h>
void main()
{
	int a[6]={2,4,6,8,10,12};//定义一维数组
	int *p[3];//定义指针数组
	int i,j;//定义变量
	for(i=0;i<3;i++)
		p[i]=a+2*i;
	printf("按行的顺序输出:\n");//按行输出
	for(i=0;i<3;i++)
		{for(j=0;j<2;j++)
			printf("%4d",*(p[i]+j));
		 printf("\n");}
	printf("按列的顺序输出:\n");//按列输出
	for(j=0;j<2;j++)
		{for(i=0;i<3;i++)
			printf("%4d",*(p[i]+j));
		 printf("\n");}
}
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值