实验内容:
1.编写重载函数add(),实现对int型,double型,Complex型数据的加法。在main()函数中定义不同类型 数据,调用测试
#include<iostream> using namespace std; int add(int x,int y){ return x+y; } double add(double x,double y){ return x+y; } struct Complex{ double real; double imaginary; }; void add(Complex c1,Complex c2){ Complex c; c.real=c1.real+c2.real; c.imaginary=c1.imaginary+c2.imaginary; if(c.imaginary<0) cout<<c.real<<"-"<<c.imaginary<<"i"<<endl; else cout<<c.real<<"+"<<c.imaginary<<"i"<<endl; cout<<endl; } int main(){ int x,y; double a,b; double r1,i1,r2,i2; cout<<"Enter two integers to add: "<<endl;//瞎j8写的英文,心意到了 cin>>x>>y; cout<<add(x,y)<<endl; cout<<"Enter two decimal numbers to add: "<<endl; cin>>a>>b; cout<<add(a,b)<<endl;; cout<<"Enter two complexs to add: "<<endl; cin>>r1>>i1>>r2>>i2; add({r1,i1},{r2,i2});//注意结构体的表示,还有cout不要写重了 return 0; }
2.编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。
关于快速排序算法,这篇博客写得很棒棒:https://blog.csdn.net/code_ac/article/details/74158681
#include<iostream> using namespace std; #define N 100 /* void quicksort(int s[],int l,int r){ if(l<r){ int i=1,j=r,x=s[l]; while(i<j){ while((i<j)&&s[j]>=x) j--; if(i<j) s[i++]=s[j]; while((i<j)&&s[i]<x) i++; if(i<j) s[j--]=s[i]; } s[i]=x; quicksort(s,l,i-1); quicksort(s,i+1,r); } } */ template <typename T> T FindPos(T a[],T low,T high){ T t=a[low]; while(low<high){ while(low<high && a[high]>=t) high--; a[low]=a[high]; while(low<high && a[low]<=t) low++; a[high]=a[low]; } a[low]=t; return low; }//将第一个数放到数组的中间,使得它的前面均是比它小的数,后面的数均比它大 template <typename T> void QuickSort(T a[],T low,T high) { if(low>high) return ; T pos=FindPos(a, low, high); QuickSort(a, low, pos-1);//在前半段进行快速排序 QuickSort(a, pos+1, high);//在后半段进行快速排序 } int main(){ int a[N]; int high; cout<<"Enter the total number u want to sort: "<<endl; while(cin>>high){ cout<<"Enter a set of numbers that u want to sort: "<<endl; for(int i=1;i<=high;i++) {cin>>a[i];} QuickSort(a,1,high); cout<<"After sorting is: "<<endl; for(int i=1;i<=high;i++) cout<<a[i]<<' '; cout<<endl; } return 0; }
3.设计并实现一个用户类User,并在主函数中使用和测试这个类。
#include<iostream> #include<string> #include<conio.h> using namespace std; class User{ public: void setinfo(string iname,string ipassword="111111",string imail=" "); void printinfo(); void changepassed(); private: string name; string password; string mail; }; int main(){ cout<<"testing 1……"<<endl; User user1; user1.setinfo("Lenoard"); user1.printinfo(); user1.changepassed(); cout<<"testing 2……"<<endl; User user2; user2.setinfo("jonny","92197","xyz@hotmail.com"); user2.printinfo(); return 0; } void User::setinfo(string iname,string ipassword,string imail){ name=iname; password=ipassword; mail=imail; } /* void User::hiding(char ipassword[6]){ string a; while(password=getch()!=13){///13是回车符的ASCII码 a+=password[6]; cout<<"*"; } }//网上搜的,用来把密码隐藏,但因为c学得不好,所以暂时还不会用 */ void User::printinfo(){ cout<<"Name: "<<name<<endl; cout<<"Password: "<<"******"<<endl; cout<<"Mail: "<<mail<<endl; } void User::changepassed(){ string password0,password1; cout<<"Enter the original password: "<<endl; int count=0; do{ cin>>password0; count++; if((password0==password)&&(count<4)){ cout<<"Now set the new password: "<<endl; cin>>password1; password=password1; cout<<"Change completed"<<endl; } else if((password0!=password)&&(count<4)) cout<<"Try again..."<<endl; else cout<<"U will quit temporarily,please try again later..."<<endl; }while(count<4); }
实验总结:
1.这次实验我做得不好,理解得也不是很透彻。像User类那题,只是一个很简陋的框框,可以说什么功能都不能实现,changepasswd那个函数也是唬人用的,改完密码后什么也其实不能干,老师建议的那些选做我也是一个都不会,看到大佬们的博客,就 觉得哇!好详细!好全面!再捯饬捯饬就是个课设了啊!(我有...失败啊)。
我觉得有以下几个方面的原因:1)C的知识学得确实不好,浮光掠影地,想查漏补缺的,发现好么大一个洞???!!有种补都补不了的感觉。2)之前的习惯不好,不独立思考,主动性也不够,依赖性过强,题目不会一般就百度或者抱大佬舍友的大腿了。4)缺乏自信,不相信自己能看懂,不相信自己看懂之后能做出来,不相信自己做出来是没bug的。就...一点点补上吧,也没说不聪明到不可救药的地步(膨胀)。
2.在进行编程之前,应该对整体有一个大概的设计,不然看起来会很乱。