考试
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 //----------------- 5 class GNumber 6 { 7 char chuan[50]; 8 public: 9 void set(); 10 friend int search (GNumber& str); 11 }; 12 //------------------- 13 int search(GNumber& s) 14 { 15 int num=0; //定义num用于整数个数的统计 16 for(int i=0;i<50;i++) 17 { string str1=""; //新建一个用于储存整数的字符串 18 19 if(s.chuan[i]>='0'&&s.chuan[i]<='9') //用以判断是否为数字 20 for(int j=i;;j++) // 判断其后是否有连续数字,若有,则储存 21 { 22 if(s.chuan[j]<'0'||s.chuan[j]>'9') //若不是数字,则跳过非数字区域,并跳出判断后一个是否是数字的循环体 23 { i=j;break;} 24 str1=str1+s.chuan[j]; 25 } //若是数字,则储存起来 26 27 if(str1!=""&&str1.length()>0) //判断是否是“整数” 28 { 29 cout<<str1<<endl; 30 num++; //统计整数个数 31 } 32 } 33 return num; //返回统计的个数,调用即可返回 34 } 35 //----------------- 36 void GNumber::set() 37 { 38 for (int i=0;(chuan[i]=cin.get())!='\n';i++) //调用cin 类的get这样一个成员函数,当输入的不是回车的时候执行空操作;否则终止循环 39 ; 40 } 41 //---------------------- 42 void main() 43 { 44 GNumber s1; 45 cout<<"please input a string:"<<endl; 46 s1.set(); 47 cout<<endl; 48 cout<<"有下列数字:\n"; 49 int num=search(s1); //将查找统计出来的整数个数赋值给main函数中的变量 num; 50 cout<<"共计"<<num<<"个\n"; 51 system("pause"); 52 }
1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 //======================================定义类 5 class TDarray 6 { 7 int a[3][4]; //定义成员数据 8 public: 9 void set(); //成员函数,用于输入 10 friend void change(TDarray& b,TDarray& c); // 用于交换 11 friend void output(const TDarray& b); // 用于输出 12 }; 13 //========================================== 14 void TDarray::set() //循环输入二维数组 15 { 16 for (int i=0;i<3;i++) 17 for(int j=0;j<4;j++) 18 cin>>a[i][j]; 19 } 20 //========================================= 21 void change(TDarray& b,TDarray& c) 22 { 23 for (int i=0;i<3;i++) 24 { 25 for(int j=0;j<4;j++) 26 c.a[i][(j+1)%4]=b.a[i][j]; //通过取余可以将 数字轮换 27 } 28 29 } 30 //=========================================== 31 void output(const TDarray& b) //输出 32 { 33 for (int i=0;i<3;i++) 34 { 35 for(int j=0;j<4;j++) 36 cout<<setw(4)<<b.a[i][j]; 37 cout<<endl; 38 } 39 } 40 //=========================================== 41 void main() 42 { 43 cout<<"Please input 12 numbers:\n"; //提醒用户输入数据 44 TDarray num; 45 TDarray c; 46 num.set(); //通过成员函数设置成员数据 47 cout<<"The former one is:\n"; //先输出原先的数组 48 output(num); 49 change(num,c); //做转换 50 cout<<"The latter one is:\n"; //输出转换过后的数组 51 output(c); 52 } 53 //---------------------------------- 54 #include<iostream> 55 #include<string> 56 #include<sstream> 57 using std::string;//using std::string 58 #define ostream std::ostream//#define ostream std::ostream 59 #define istream std::istream//#define istream std::istream 60 #define cout std::cout 61 #define cin std::cin 62 class GNumber 63 { 64 private: 65 string str; 66 int *a; //Use the pointer is much faster than the vector 67 int n; //for record the number of integer 68 public: 69 GNumber(){a=new int[100];n=0;}; //define the constructor to allocate the space for a; 70 ~GNumber(){delete[]a;}; //define a destructor to delete the space that new create 71 void stoi(); 72 friend ostream&operator<<(ostream&,const GNumber&);//(ostream&,const GNumber&) 73 friend istream&operator>>(istream&,GNumber&);//(istream&,GNumber&) 74 }; 75 void GNumber::stoi() 76 { 77 int i; 78 for(int i=0;i<str.size();i++) 79 if(str[i]>'9'||str[i]<'0') 80 str[i]=' '; 81 std::istringstream sin(str);//std::istreamstream sin(str); 82 for(;sin>>a[n];n++); 83 n--; //the n must be minus 1 because When finished entering,n have been plus one 84 } 85 ostream&operator<<(ostream&out,const GNumber&number) 86 { 87 out<<"The number of integers is:"<<number.n<<'\n'; 88 for(int i=0;i<number.n;i++) 89 out<<number.a[i]<<" "; 90 out<<'\n'; 91 return out; 92 } 93 istream&operator>>(istream&input,GNumber&number) 94 { 95 cout<<"please input the string without space:"<<std::endl; 96 input>>number.str; 97 return input; 98 } 99 int main() 100 { 101 GNumber number; 102 cin>>number; 103 number.stoi(); 104 cout<<number; 105 system("pause"); 106 return 0; 107 } 108 //------------------- 109 #include<iostream> 110 using std::cin; 111 using std::cout; //using the Standard namespace of cin and cout 112 #define ostream std::ostream //define ostream to replace std::ostream 113 #define istream std::istream 114 class TDarray 115 { 116 public: 117 int **a; //Defined 2D pointer//二级指针用的漂亮,int **a; 118 public: 119 TDarray(); //Define a constructor to allocate space to the 2D pointer//TDarray();~TDarray(); 120 ~TDarray(); //Defined destructor to delete the 2D pointer space 121 void tdarray(); //Defined function "tdarray" to convert//void tdarray(); 122 friend ostream&operator<<(ostream&,const TDarray&); //overloading ostream to output//friend ostream& operator<<(ostream&,TDarray&) 123 friend istream&operator>>(istream&,TDarray&); //overloading istream to input//friend istream& operator>>(istream&,TDarray&) 124 125 }; 126 TDarray::TDarray() 127 { 128 a=new int*[3]; //allocated to the 2D pointer three lines of 1D pointer Dynamically //a=new int*[3];a[i]=new int[4] 129 for (int i=0;i<3;i++) 130 a[i]=new int[4]; //using for statement to allocated to each row four space dynamically 131 } 132 TDarray::~TDarray() 133 { 134 for (int i=0;i<3;i++) 135 delete[]a[i]; //using for statement to delete the space of each row、//两次delete 136 delete a; //delete the space of 2D pointer 137 cout<<"have delete the memory now"<<'\n'; //using the message to ensure that the destructor is executed 138 } 139 140 void TDarray::tdarray() 141 { 142 for(int i=0;i<3;i++) //using for to convert each line 143 { 144 int temp=a[i][3]; //Create a temporary variable to store the last element of each row 145 for(int j=3;j>0;j--) 146 a[i][j]=a[i][j-1]; //let each element be equal to its previous element 147 a[i][0]=temp; //make the first element be equal to the temporary variable 148 } 149 } 150 istream&operator>>(istream&input,TDarray&array) 151 { 152 for(int i=0;i<3;i++) 153 for(int j=0;j<4;j++) 154 input>>array.a[i][j]; 155 return input; //return input to make sure cin can continuous input 156 } 157 ostream&operator<<(ostream&out,const TDarray&array) 158 { 159 for(int i=0;i<3;i++) 160 { 161 for(int j=0;j<4;j++) 162 out<<array.a[i][j]<<" "; 163 out<<'\n'; 164 } 165 return out; //return out to make sure cout can continuous output 166 } 167 int main() 168 { 169 //freopen("tdarray.txt","r",stdin); //Text input instead of keyboard input 170 TDarray array; //define the object of TDarray 171 cin>>array; //input the array 172 cout<<array; //output the array 173 array.tdarray(); //using the function to cover 174 cout<<array<<array; //output the array covered//不错,输出两个矩阵,还按照矩阵的形式 175 system("pause"); 176 return 0; //the main function must return 0 to pass in c++standard 177 } 178 //------------------- 179 //定义一个结构体变量(包括年、月、日)编写程序。要求输入年、月、日, 180 //程序能计算输出该日在本年中是第几天。(注意闰年问题),写一个函数days,实现上面的计算。由主函数将年、月、日传递给函数days, 181 //计算出该日在本学年中是第几天,并将结果传回主函数输出。(上次作业的改进版本,用类实现,请看老师的PPT) 182 #include<iostream> 183 using namespace std; 184 class Days 185 { 186 public: 187 int riqi(int &year,int &month, int&day); 188 }Days1; 189 int Days::riqi(int &year,int &month, int&day) 190 { 191 int change;//判断是否是闰年 192 if(year%4==0&&year%100!=0||year%400==0) 193 change=1; 194 else 195 change=2; 196 int num1[12]={31,28,31,30,31,30,31,31,30,31,30,31};//数组内的元素为各月天数 197 int num2[12]={31,29,31,30,31,30,31,31,30,31,30,31}; 198 int i,sum=0;//初始化,i全局变量 199 switch(change) 200 { 201 case 1: 202 { 203 for(i=0;i<month-1;i++) 204 sum=sum+num1[i]; 205 sum=sum+day; 206 } 207 case 2: 208 { 209 for(i=0;i<month-1;i++) 210 sum=sum+num2[i]; 211 sum=sum+day; 212 } 213 } 214 215 return sum; 216 } 217 int main() 218 { 219 int a,b,c; 220 cout<<"请输入年,月,日"<<endl; 221 cin>>a>>b>>c; 222 int z=Days1.riqi(a,b,c); 223 cout<<"该日在本年中是第"<<z<<"天"<<endl; 224 return 1; 225 } 226 //---------------- 227 #include<iostream> 228 #include<cmath> 229 using namespace std; 230 class Point 231 { 232 protected: 233 double x; 234 double y; 235 public: 236 void Set(double ix,double iy) 237 { 238 x=ix; 239 y=iy; 240 } 241 void change() 242 { 243 244 x=x+5; 245 y=y+6; 246 } 247 248 double xOffset() 249 { 250 return x; 251 } 252 double yOffset() 253 { 254 return y; 255 } 256 double angle() 257 { 258 return (180/3.14159)*atan2(y,x);//特别重要 259 } 260 double radius() 261 { 262 return sqrt(x*x+y*y); 263 } 264 }; 265 int main() 266 { 267 Point p;//定义对象 268 double x,y; 269 cout<<"Enter x and y"<<endl; 270 cin>>x>>y; 271 p.Set(x,y);//访问成员函数 272 p.change(); 273 cout<<"angle="<<p.angle() 274 <<",radius="<<p.radius()<<",x offset="<< p.xOffset() 275 <<", y offset="<<p.yOffset()<<endl; 276 system("pause"); 277 return 1;//要有返回值 278 } 279 280 //----------------------------- 281 #include<iostream> 282 #include<iomanip> 283 using namespace std; 284 class Date 285 { 286 int year,month,day; 287 public: 288 void add(int &y,int &m,int &d); 289 void print(); 290 }; 291 void Date::add(int &y,int &m,int &d)//定义类的成员函数,要有预操作符 292 { 293 year=y; 294 month=m; 295 day=d; 296 int change;//判断是否是闰年 297 if(year%4==0&&year%100!=0||year%400==0) 298 change=1; 299 else 300 change=2; 301 int num[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 302 if(change==1) 303 num[2]=29; 304 if(day<=num[month]-1)//判断是否大于该月总天数 305 day=day+1; 306 else 307 { 308 day=1; 309 month++; 310 if(month>12) 311 { 312 month=1; 313 year++; 314 }//判断原时期是否是12月最后一天 315 316 } 317 } 318 //-------------------------------------------- 319 void Date:: print() 320 { 321 cout<<"该日期加一天后变为"<<endl; 322 cout<<"按日,月,年的顺序输出"<<endl; 323 cout<<setfill('0');//设置日期格式 324 cout<<setw(2)<<day<<'-'<<setw(2)<<month<<'-'<<setw(4)<<year<<endl; 325 326 } 327 //----------------------------------------- 328 int main() 329 { 330 Date s; 331 cout<<"请输入年,月,日"<<endl; 332 int y,m,d; 333 cin>>y>>m>>d; 334 s.add(y,m,d); 335 s.print(); 336 return 1; 337 } 338 339 340 341 342 343 344