(YM学习笔记)数据结构--01C语言综合应用-创新互联
1.计算1到n的累加和,并输出计算结果,要求写出两种算法并比较算法时间复杂度。
(1)写出时间复杂度分析结果
网页名称:(YM学习笔记)数据结构--01C语言综合应用-创新互联
文章出自:http://scyanting.com/article/dgjhho.html
①、使用高斯方法求解:只需要套公式 n*(n+1)/2,即可一步求解出答案,所以使用高斯方法求解的时间复杂度为:O(1)
②、使用累加的方法求解:该求解方法会使用for循环的语句,循环体为:sum+=i; 因为从1累加到n,所以循环体执行了n次,即使用累加方法求解的时间复杂度为:O(n)
#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