2024/1/3

作业1:打印图案

A

AB

ABC

ABCD

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int i,j,n;//定义三个变量
	printf("please enter n:");//提示输入n
	scanf("%d",&n);//输入要打印的行数n
	for(i=0;i<n;i++)//循环打印图案
	{
		char ch='A';//定义字符变量
		for(j=0;j<=i;j++)
		{
			printf("%c",ch);//打印字母A
			ch++;//每次打完自增,以便下次打印后面一个字母
		}
		
		printf("\n");//换行
	}

	return 0;
}

 效果图:

 作业2:循环输入10位评委的分数,除去最大值和最小值,计算平均值

#include <stdio.h>

int main(int argc, const char *argv[])
{
    int arr[10]={0};//定义一个能存储10个int类型的数组存储评委分数
    int i;//定义一个循环变量i
    int sum=0;//定义一个sum存储10个分数和
    double ave=0;//定义ave存储最终的平均值
    for(i=0;i<10;i++)
    {
    	printf("please enter %d data:",i+1);//提示输入第i+1个评委打的分数
        scanf("%d",&arr[i]);//循环输入分数
    }
    int max=arr[0];//定义max存储最高分
    int min=arr[0];//定义min存储最低分
    for(i=0;i<10;i++)
    {
        if(arr[i]>max){//循环寻找分数中的最大值与最小值
            max=arr[i];
        }else if(arr[i]<min){
            min=arr[i];
        }
    sum+=arr[i];//求出总的分数
    }
	printf("max=%d min=%d\n",max,min);//打印出最高分与最低分
    ave=(double)(sum-max-min)/8;//求出去掉最高分与最低分后的平均分
    printf("ave= %.2lf\n",ave);//打印出平均分,保留两位小数
    return 0;
}

效果图:

 

作业3:一维数组

3.1计算一维数组的最值

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int n,i;//定义两个变量存储数组容量以及循环变量
	printf("please enter n:");//提示输入n
	scanf("%d",&n);//输入数组元素个数n
	int arr[n];//定义一个名为arr,有n个int类型的元素的数组
	for(i=0;i<n;i++)
	{
		printf("请输入第%d一个元素:",i+1);//提示输入第几个元素
		scanf("%d",&arr[i]);//循环输入数组元素值
	}
	int max=arr[0],min=arr[0];//默认arr[0]为最大值与最小值
	for(i=0;i<n;i++)
	{
		if(max<=arr[i])//寻找数组中的最大值
		{
			max=arr[i];
		}
		if(min>=arr[i])//寻找数组中的最小值
		{
			min=arr[i];
		}
	}
	printf("max=%d min=%d\n",max,min);//输出数组元素中的最大值与最小值

	return 0;
}

效果图:

 

3.2一维数组查找

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int key,count=0,i,n;//定义变量
	printf("please enter n:");//提示输入n
	scanf("%d",&n);//输入数组元素个数
	int arr[n];//定义一个一维数组
	for(i=0;i<n;i++)
	{
		printf("please enter %d data:",i+1);//提示输入第几个元素
		scanf("%d",&arr[i]);//循环输入数组元素值
	}
	printf("please enter key:");//提示输入一个key的值
	scanf("%d",&key);//输入key的值
	int a=0;
	for(i=0;i<5;i++)
	{
		if(arr[i]==key)//如果数组中有与key相同的值,记录个数
		{
			count++;//计数器,用来计算key在arr[n]中出现的次数
			a=i;//定义的a用来存储与key相等的元素数组下标
		}
	}
		if(count==0){//若计数器为0,则该数组中没有key的值
			printf("该数组中不存在key的值\n");
		}else if(count==1){//为1,输出数组下标
				printf("数组下标=%d\n",a);
		}else{//否则输出出现key的次数
			printf("数组中出现key次数=%d\n",count);
		}

	return 0;
}

效果图:

 

3.3一维数组冒泡

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int i,j,temp=0;
	int arr[5]={12,22,2,4,52};
	int len=sizeof(arr)/sizeof(arr[0]);//求数组长度
	
	//排序前
	for(i=0;i<len;i++)
	{
		printf("%-4d",arr[i]);
	}
	printf("\n");
	
	//排序后
	for(i=1;i<len;i++)//外层循环控制轮数
	{	
		for(j=0;j<len-i;j++)//内层循环控制每一轮需要比较的次数
		{
			if(arr[j]>arr[j+1])//前一位如果比后一位大,则交换两者的值
			{
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}//升序排列(降序排列改变‘>’即可)
		}
	}
    for(i=0;i<len;i++)//循环打印排序后的数组
	{
		printf("%-4d",arr[i]);
	}
	printf("\n");
	
	return 0;
}

效果图:

 

3.3一维数组简单选择

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int i,j,temp=0;
	int arr[5]={12,22,2,4,52};
	int len=sizeof(arr)/sizeof(arr[0]);//求数组长度
	
	for(i=0;i<len-1;i++)//外层循环控制轮数
	{
		int min=i;//默认最小值的下标
			for(j=i+1;j<len;j++)//内层循环寻找默认值后面最小值的下标
			{
				if(arr[min]>arr[j])
				{
					min=j;//min指向最值的下标
				}
			}
		if(min!=i){//若一轮比较结束,min指向的下标改变说明需要交换值
			temp=arr[min];
			arr[min]=arr[i];
			arr[i]=temp;
		}
	}	
	for(i=0;i<5;i++)//循环打印排序后的数组
	{
		printf("%-4d",arr[i]);
	}
	printf("\n");
	
	return 0;
}

效果图:

 

 

作业4:二维数组

4.1计算二维数组最值

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int i,j;
	int arr[2][3]={0};//定义一个2行3列的二维数组并初始化
	for(i=0;i<2;i++)//外层行
	{
		for(j=0;j<3;j++)//内层列
		{
			scanf("%d",&arr[i][j]);//循环输入数组中各个元素值
		}
	}
	int max=arr[0][0];//默认该数组中最大值为arr[0][0]
	int min=arr[0][0];//默认该数组中最小值为arr[0][0]
	int line=0,row=0,line1=0,row1=0;//定义四个变量分别存储最值的行与列
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			if(max<arr[i][j])//存储最大值与最大值所在行与列
			{
				max=arr[i][j];
				line=i+1;
				row=j+1;
			}else if(min>arr[i][j]){//存储最小值与最小值所在行与列
				min=arr[i][j];
				line1=i+1;
				row1=j+1;
			}
		}
	}
	printf("max=%d line=%d row=%d\n",max,line,row);//输出最大值以及所在行与列
	printf("min=%d line1=%d row1=%d\n",min,line1,row1);//输出最小值以及所在行与列

	return 0;
}

效果图:

 

4.2杨辉三角

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int i,j,n;
	printf("please enter n:");//提示输入n
	scanf("%d",&n);//输入要打印的杨辉三角的行数
	int arr[n][n];//定义一个n行n列的二维数组
	for(i=0;i<n;i++)//外层控制行
	{
		for(j=0;j<=i;j++)//内层控制列
		{
			if(j==0 || j==i){//杨辉三角的直角竖边与斜边结果为1
				arr[i][j]=1;
			}else{//中间的值规律在于下一行某列的值等于它上面一行那个元素以及其左边相邻元素值的和
				arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
			}
			printf("%-4d",arr[i][j]);//打印出杨辉三角
		}
		printf("\n");
	}
	return 0;
}

效果图:

 

4.3转置

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int a[2][3]={12,13,14,15,16,17};//定义一个2行3列的二维数组
	int b[3][2];//定义一个3行2列的二维数组
	int i,j;
	//转置前
	for(i=0;i<2;i++)//外层行
	{
		for(j=0;j<3;j++)//内层列
		{
			printf("%-4d",a[i][j]);//输出数组a
		}
		printf("\n");
	}
	//转置中
	for(i=0;i<2;i++)//外层行
	{
		for(j=0;j<3;j++)//内层列
		{
			b[j][i]=a[i][j];//将数组a转置并存入数组b	
		}
	}
	printf("\n");
	//转置后
	for(i=0;i<3;i++)
	{
		for(j=0;j<2;j++)
		{
			printf("%-4d",b[i][j]);//打印出数组b
		}
		printf("\n");
	}

	return 0;
}

效果图:

 

作业5:思维导图 

在SQL Server中,如果你想要将特定格式的日期和时间字符串转换为另一种格式,可以使用`CONVERT()`函数或`FORMAT()`函数(在SQL Server 2012及更高版本中可用)来进行日期时间的格式化。 以你提供的格式为例,若要将"2024/06/03 9:15:16"转换为"2024/6/2 8:19:16",需要注意的是,原格式中的月份是两位数字,而你想要的格式中月份是一位数字;此外,小时数也要相应调整。下面提供转换方法: 使用`CONVERT()`函数: ```sql SELECT REPLACE(CONVERT(VARCHAR, GETDATE(), 113), '-', '/') AS NewDateTimeFormat; ``` 这将输出形如"2024/06/03 9:15:16"的日期时间格式。但是,要注意的是,`CONVERT()`函数中的样式代码`113`返回的是`YYYYMMDDHHMMSS.MS`格式,即日期和时间之间没有分隔符,而且月份仍然是两位数字。 对于你的需求,我们可能需要进一步使用字符串函数(如`REPLACE`)来手动调整格式: ```sql SELECT REPLACE(CONVERT(VARCHAR, GETDATE(), 121), '-', '/') + ' ' + STUFF(STUFF(CONVERT(VARCHAR, GETDATE(), 120), 3, 0, ':'), 6, 0, ':') AS CustomDateTimeFormat; ``` 这段代码首先将日期时间转换为"YYYY-MM-DD HH:MM:SS"格式,然后替换日期分隔符为斜杠,并且使用`STUFF`函数将时间分隔符调整到适当的位置,最终生成"YYYY/MM/DD HH:MM:SS"的格式。但仍然无法直接达到你想要的"2024/6/2 8:19:16"格式,因为它涉及到日期的减法处理,这通常需要额外的逻辑来计算。 如果你需要精确控制日期和时间的每一位,你可能需要编写更复杂的字符串处理逻辑,或者将日期时间转换为`DATETIME`或`DATETIME2`类型,然后使用`DATEADD`和`DATEDIFF`函数来手动调整日期和时间的各个部分。 由于SQL Server中不提供直接减去一定天数的功能,若要实现特定的日期调整(例如,减去一天),需要根据具体情况进行计算。例如,使用`DATEADD`函数: ```sql SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0) AS PreviousDay, DATEADD(hour, DATEDIFF(hour, 0, GETDATE()) - 1, 0) AS PreviousHour, DATEADD(minute, DATEDIFF(minute, 0, GETDATE()) - 1, 0) AS PreviousMinute; ``` 以上代码分别计算了前一天、前一个小时和前一分钟的时间点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值