(YM学习笔记)数据结构--01C语言综合应用-创新互联

1.计算1到n的累加和,并输出计算结果,要求写出两种算法并比较算法时间复杂度。 (1)写出时间复杂度分析结果

①、使用高斯方法求解:只需要套公式 n*(n+1)/2,即可一步求解出答案,所以使用高斯方法求解的时间复杂度为:O(1)
②、使用累加的方法求解:该求解方法会使用for循环的语句,循环体为:sum+=i; 因为从1累加到n,所以循环体执行了n次,即使用累加方法求解的时间复杂度为:O(n)

创新互联公司10多年成都定制网页设计服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都定制网页设计及推广,对轻质隔墙板等多个领域拥有多年的网站制作经验的网站建设公司。(2)源代码:
#include#includevoid main()
{double sum = 0;
	double n = 100000000;
	double i;
	clock_t start1,finish1;
	clock_t start2,finish2;
	double duration1;
	double duration2;
	printf("*********高斯方法开始计算*********\n");
	start1 = clock();
	sum = (1+n)*n/2;
	finish1 = clock();
	duration1 = (double)(finish1-start1)/CLOCKS_PER_SEC;
	printf("使用高斯方法运行时间:%.3f seconds\n",duration1); //0.000s
	printf("sum = %.1lf\n",sum);
	printf("*********高斯方法计算结束*********\n\n");
	printf("*********累加和方法开始计算*********\n");
	start2 = clock();
	for(i=1,sum=0;i<=n;i++){sum+=i;
	}
	finish2 = clock();
	duration2 = (double)(finish2-start2)/CLOCKS_PER_SEC;
	printf("使用累加方法运行时间:%.3f seconds\n",duration2); //0.245s
	printf("sum = %.1lf\n",sum);
	printf("*********累加和方法计算结束*********\n");
}
(3)运行截图

在这里插入图片描述

2.练习C语言补充的语法 (1)逐一验证如下错误情况,并改正,请正确的测试程序粘贴到下方。
fun(int r)
{double s;
s=3.14*r*r;
printf(“圆的面积是%lf”,s);
}
int fun(int r)
{double s;
s=3.14*r*r;
return s;
}
void fun(int r)
{double s;
s=3.14*r*r;
return s;
}
void fun(int r)
{double s;
s=3.14*r*r;
printf(“圆的面积是%lf”,s);
return ;
Printf(“圆的周长是%lf”,2*3.4*r);
}
正确的测试程序粘贴位置
//①、修改后添加void;修改原因:原方法没有返回值,应写void fun(..)
void fun(int r)
{double s;
s=3.14*r*r;
printf("圆的面积是%lf",s);
}
//②、int改为 double;修改原因:函数返回值类型为double类型
double fun(int r)
{double s;
s=3.14*r*r;
return s;
}
//③、void 改为 double;修改原因:函数返回值类型为double类型
double fun(int r)
{double s;
s=3.14*r*r;
return s;
}
//④、去掉return;原因:函数没有返回值。之前的情况会提前结束掉函数,return后面的语句不会执行。
void fun(int r)
{double s;
s=3.14*r*r;
printf("圆的面积是%lf",s);
printf("圆的周长是%lf",2*3.4*r);
}
(2)练习指针的语法,请在此基础上添加代码修改x值为520,输出x的值,修改x值为1314,输出x的值,要求两次修改值和输出的方法不一样。

在这里插入图片描述

测试源程序与结果截图
#includevoid main(){int *p;
	int x = 203;
	p = &x;
	printf("*p=%d\n",x);
	printf("x=%d\n",x);
	*p = 99;
	printf("修改*p的值来间接操作x,x=%d\n",x);
	x = 520; //直接修改int类型变量的值
	printf("x = %d\n",x);
	*p = 1314; //p保存的是x的地址,*p = 1314; 寻址后改变*p的值=修改x的值
	printf("*p(x) = %d\n",*p);

}
结果截图:

在这里插入图片描述

(3)练习结构体的语法,请在此基础上添加代码声明学生stu变量b,并赋值自己的信息,然后输出b的信息。

在这里插入图片描述

测试源程序与结果截图
#include#includetypedef struct node{int num;
	int score;
	char name[30];
}stu;
void main(){stu a;
	stu b;
	a.num = 101;
	a.score = 99;
	strcpy(a.name,"周周");
	printf("姓名:%s\n学号:%d\n成绩:%d\n\n",a.name,a.num,a.score);

	b.num = 128;
	b.score = 100;
	strcpy(b.name,"张一铭");
	printf("姓名:%s\n学号:%d\n成绩:%d\n\n",b.name,b.num,b.score);
}
结果截图:

在这里插入图片描述

(4)练习结构体指针的语法,请在此基础上添加代码声明学生stu指针变量c,并赋值自己的信息,然后输出c的信息。

在这里插入图片描述

测试源程序与结果截图
#include#include#includetypedef struct node{int num;
	int score;
	char name[30];
}stu;
void main(){stu *p;
	stu *c;

	p = (stu *)malloc(sizeof(stu));
	p->num = 101;
	p->score = 99;
	strcpy(p->name,"周周");
	printf("姓名:%s\n学号:%d\n成绩:%d\n\n",p->name,p->num,p->score);

	c = (stu *)malloc(sizeof(stu));
	c->num = 128;
	c->score = 100;
	strcpy(c->name,"张一铭");
	printf("姓名:%s\n学号:%d\n成绩:%d\n\n",c->name,c->num,c->score);
}
结果截图:

在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:(YM学习笔记)数据结构--01C语言综合应用-创新互联
网站网址:http://scyanting.com/article/dgjhho.html