第4章--语句

1、计算一个正数n的平方根,用连续的近似值计算,计算的值会越来越逼近正确值,第一个近似值是1,后面的近似值由下面的公式计算:
a i + 1 = ( a i + ( n / a i ) ) / 2 a_{i+1} = (a_i + (n/a_i))/2 ai+1=(ai+(n/ai))/2
写一个程序读取一个值计算并打印出它的平方根,如果你把所有的近似值打印出来,你可以看到它们快速的逼近正确值,在练习中,程序被浮点型的数据精准度限制,如果一个近似值与前一个相等,那么就停止运算。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
	double n;
	double next = 1;

	printf("input a positive number:");
	scanf("%lf", &n);

	if (n <= 0)
	{
		printf("Error! can't input negative\n");
		return -1;
	}

	while (next != ((next + n/next) / 2))
	{
		printf("%lf\n", next);
		next = (next + n/next) / 2;
	}

	printf("done!\n");
	return 0;
}

2、质数不能被除了它自己和1的其他任何值整除,写一个程序打印出1-100内所有的质数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
	int i;
	int j;

	for (i = 2; i <= 100; i++)
	{
		int is_prime = 1;
		
		for (j = 2; j < (i/2 + 1); j++)
		{
			if (!(i % j))
			{
				is_prime = 0;
				break;
			}
		}

		if (is_prime)
		{
			printf("%d, ", i);
		}
	}

	printf("\n");

	return 0;
}

3、 三条边都相等的三角形叫等边三角形,有两条边相等的三角形的等腰三角形,三条边都不相等叫做不等边三角形,写一个程序提示输入三角形的三条变长,程序需要判断这些数字代表的是什么三角形,提示:什么是程序另外要检查的?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
	float a, b, c;

	printf("please input three number:");
	scanf("%f %f %f", &a, &b, &c);

	if ((a <= 0) || (b <= 0) || (c <= 0))
	{
		printf("Error! the length is not positive\n");
		return -1;
	}

	if (((a + b) <= c) || ((a + c) <= b) || ((b + c) <= a))
	{
		printf("Error! can't form a triangle\n");
		return -1;
	}

	if ((a == b) && (a == c))
	{
		printf("this is a equilateral triangle\n");
	}
	else if ((a == b) || (a == c) || (b == c))
	{		
		printf("this is a isosceles triangle\n");
	}
	else
	{
		printf("this is a scalene triangle\n");
	}
	
	return 0;
}

4、写一个函数,它的原型如下所示:
void copy_n(char dst[], char scr[], int n);
这个函数将数组src中的字符串复制到数组dst,但是有这些要求:刚好n个字符被存储到dst数组,如果src字符串的长度比n小,那么你需要添加足够的NULL字符使得有n个字符被存储,如果src中字符串的长度大于或等于n,那么复制n个字符后停止,这种情况下不是以NULL结尾,注意调用copy_n时应该在dst[0]到dst[n-1]存储,与src的长度无关。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX   100

void copy_n(char dst[], char src[], int n)
{
	int i;
	int len;

	for (len = 0; src[len] != '\0'; len++)
		;

	for (i = 0; i < n; i++)
	{
		if (i < len)
		{
			dst[i] = src[i];
		}
		else
		{
			dst[i] = '\0';
		}
	}
}

int main(int argc, char *argv[])
{
	char out[MAX];
	int n;

	n = atoi(argv[2]);
	
	copy_n(out, argv[1], n);
	
	printf("%s\n", out);

	return 0;
}

5、写一个程序从标准输入中一行一行的读取,相邻行有一行或多行相同则打印,其他的都不打印, 你可能要假定每一行不超过128个字符,长度不超过127个字符,每一行以换行符结尾。
提示:使用gets来读取行,使用strcpy来复制,使用strcmp进行比较,如果两个字符串相等则返回0,否则返回非零值。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX   100

int main(void)
{
	int i;
	int had_out = 0;
	int lines;
	char input[MAX][128];

	printf("please input the number of line: ");
	scanf("%d", &lines);
	gets();

	for (i = 0; i < lines; i++)
	{
		printf("line %d: ", i+1);
		gets(input[i]);
	}

	for (i = 1; i < lines; i++)
	{
		if (!strcmp(input[i-1], input[i]))
		{
			if (had_out == 0)
			{
				printf("%s\n", input[i]);
				had_out = 1;
			}
		}
		else
		{
			had_out = 0;
		}	
	}

	return 0;
}

6、编写一个函数从字符串中提取子字符串,函数原型如下:
int substr(char dst[],char src[],int start,int len);
从src数组其实位置向后偏移start个字符的位置开始,最多复制len个非NUL字符,dst必须以NUL字符结尾,函数的返回值是存储于dst数组中的字符串长度,如果start所指定的位置超过了src的尾部,或者start,len的值为负,那么复制到dst数组的字符串为空。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX   100

int substr(char dst[], char src[], int start, int len)
{
	int i;
	int src_len = strlen(src);
	
	if ((start >= src_len) || (start < 0) || (len < 0))
	{
		dst[0] = '\0';
		return 0;
	}
	
	for (i = 0; i < len; i++)
	{
		if (dst[i] = src[start++])
			;
		else
			break;
	}

	printf(
"%s: %d\n", dst, i);
	
	return i;
}

int main(int argc, char *argv[])
{
	int i;
	int start;
	int len;
	char dst[MAX];

	start = atoi(argv[2]);
	len   = atoi(argv[3]);

	substr(dst, argv[1], start, len);
	
	return 0;
}

7、编写一个函数从一个字符串中除去多余的空白,函数原型如下:
void deblank(char string[]);
当函数发现一个或多个地方有一个或连续多个的空格组成,就把它们改成单个字符,注意当你遍历整个字符串时要确保它以NUL字符结尾。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void deblank(char string[])
{
	int i = 0;
	int j = 0;
	char tem[100];
	int flag = 0;

	while (string[i])
	{		
		if (string[i] == ' ')
		{
			if (flag == 0)
			{
				tem[j++] = string[i++];
				flag = 1;
			}
			else
			{
				i++;
			}
		}
		else 
		{			
			tem[j++] = string[i++];
			flag = 0;
		}
	}

	tem[j] = '\0';
	strcpy(string, tem);
}

int main(int argc, char *argv[])
{
	int i;

	puts(argv[1]);
	deblank(argv[1]);
	puts(argv[1]);

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQL Server中的聚合函数可以在查询中使用,用于对数据进行汇总和计算。常见的聚合函数包括SUM、AVG、COUNT、MAX和MIN等。 在使用聚合函数时,需要注意以下几点: 1. 聚合函数只能用于SELECT语句中的SELECT列表或HAVING子句中。 2. 聚合函数可以对一列或多列数据进行计算,也可以对所有行进行计算。 3. 聚合函数可以与GROUP BY子句一起使用,用于对分组后的数据进行计算。 4. 聚合函数可以嵌套使用,用于进行复杂的计算。 例如,以下查询使用SUM函数计算销售总额: SELECT SUM(SalesAmount) AS TotalSales FROM Sales 以下查询使用AVG函数计算平均销售额,并按照产品类型进行分组: SELECT ProductType, AVG(SalesAmount) AS AvgSales FROM Sales GROUP BY ProductType 以上就是SQL Server中聚合函数在查询中的使用方法。 ### 回答2: 在SQL Server中,聚合函数是一种非常常用的查询函数,它们可以对表中的数据进行统计和计算,例如计算平均值,求和,最大值,最小值,计数等等。这些函数通常用于查询语句的SELECT子句中,在其中计算返回的结果的总和、平均值等信息。 SQL Server支持多种聚合函数,其中一些常用的包括SUM、AVG、COUNT、MAX和MIN。这些函数将返回与查询有关的表格中的列中的数据值的聚合值。例如,如果您要计算特定分组的平均订单金额,则可以使用AVG函数将此计算公式嵌入到查询中。 此外,聚合函数还可以用作表达式或复合列。使用SUM函数计算表基于当前筛选的数据值的总和是一个很好的例子。另外,你还可以使用聚合函数将特定条件下的总数计算输出。 聚合函数在查询中的使用有诸多优点。它们可以帮助我们更快速地进行数据统计和分析,简化我们的工作流程。同样地,聚合函数不仅计算传入的数据集的总和,并且还可以用于计算分组的数据。这些值可能是代表某个客户的订单,也可能是某个时间段里发生的订单总数。 因此,学习和使用SQL Server的聚合函数是数据库查询中必不可少的能力,掌握聚合函数的使用将大大提高用户的工作效率和精度。在应用中,聚合函数的使用帮助数据分析人员了解具体的市场趋势和消费习惯,具有重要的商业价值。 ### 回答3: SQL Server中的聚合函数是一种非常有用的工具,它们可以对结果集进行各种计算和聚合。聚合函数是在SELECT语句中使用的,它们通常用于计算一系列值的总和、平均值、最大值或最小值等。在SQL Server中最常用的聚合函数包括SUM、COUNT、AVG、MAX和MIN等。 首先我们来看一下SUM函数,这个函数用于计算一个数值列的总和,例如: SELECT SUM(SaleAmount) FROM Sales; 这条SQL语句将计算销售表中所有销售金额的总和,并将结果返回。COUNT函数用于计算一个表中行的数量,例如: SELECT COUNT(*) FROM Sales; 这条SQL语句将返回Sales表中所有行的数量。AVG函数用于计算数值列的平均值,例如: SELECT AVG(SaleAmount) FROM Sales; 这条SQL语句将计算销售表中所有销售金额的平均值,并将结果返回。MAX和MIN函数用于计算数值列的最大和最小值,例如: SELECT MAX(SaleAmount) FROM Sales; SELECT MIN(SaleAmount) FROM Sales; 这些函数都可以做到很多比较有用的事情。例如,可以使用它们来查找最高、最低、平均、总和或其他统计量等。聚合函数也可以结合GROUP BY子句使用,以根据特定的列对结果集进行分组聚合计算。例如: SELECT CustomerName, SUM(SaleAmount) FROM Sales GROUP BY CustomerName; 这条SQL语句将返回按客户名称分组的销售总额。 总之,SQL Server中的聚合函数是非常有用的工具,可以帮助我们对结果集进行各种计算和聚合操作。熟练掌握聚合函数的使用方法,可以大大提高我们的查询效率和准确度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值