【2018.2.28】思考与练习
1 //******************************************************** 2 //*程序作者:兔至 3 //*完成日期:2018年2月26日 4 //*章 节:第一章 5 //*题 号:习题3 6 //*题 目:要求用户输入一年12个月每月的降雨总量,并采用一 7 //* 个float数组存储。程序显示:一年内的总降雨量,平 8 //* 均每月的降雨量,降雨量最大的月份和最小的月份。 9 //******************************************************** 10 11 #include<iostream> 12 using namespace std; 13 int main() 14 { 15 cout.precision(2); 16 cout.setf(ios::fixed|ios::showpoint); 17 float rain[12]; 18 float sum,ave,tem; 19 int count,max=0,min=0; 20 cout << "请输入12个月每月的降雨总量:\n"; 21 for(count=0;count<12;count++) 22 { 23 cin >> tem; 24 if(tem>=0) 25 rain[count]=tem; //无作用,待改善。 26 } 27 for(count=0;count<12;count++) 28 { 29 sum+=rain[count]; 30 if(rain[count]>rain[max]) 31 max=count; 32 if(rain[count]<rain[min]) 33 min=count; 34 35 } 36 ave=sum/12.0f; 37 max+=1; 38 min+=1; 39 cout << "一年内的总降雨量:" << sum << "\n平均每月的降雨量:" << ave << "\n降雨量最大的月份:" << max << "\n降雨量最小的月份:" << min; 40 return 0; 41 42 } 1 //********************************************************
2 //*程序作者:兔至 3 //*完成日期:2018年2月26日 4 //*章 节:第一章 5 //*题 号:习题5 6 //*题 目:成绩批改 7 //******************************************************** 8 9 #include<iostream> 10 using namespace std; 11 int main() 12 { 13 char answer[5]={"BDAA"}; 14 char exam[4]; 15 cout << "请输入答案:" ; 16 int i; 17 char tem; 18 for(i=0;i<4;i++) 19 { 20 cin >> tem; 21 if(!('A'<=tem&&'Z'>=tem)) 22 {
cout << "error!";
break;
}
else 24 exam[i]=tem; 25 } 26 cout << endl; 27 int count=0; 28 for(i=0;i<4;i++) 29 { 30 if(exam[i]==answer[i]) 31 count++; 32 else 33 cout << "第"<<i+1<<"题 "; 34 } 35 cout << endl; 36 switch(count) 37 { 38 case(4):cout << "优秀";break; 39 case(3):cout << "良好";break; 40 case(2):cout << "中等";break; 41 case(1):cout << "较差";break; 42 case(0):cout << "差";break; 43 } 44 return 0; 45 }
1 //******************************************************** 2 //*程序作者:兔至 3 //*完成日期:2018年2月26日 4 //*章 节:第一章 5 //*题 号:习题4 6 //*题 目:转换语句 7 //******************************************************** 8 9 #include<iostream> 10 using namespace std; 11 char convert(char *sen); 12 int main() 13 { 14 char sentence[100]; 15 cout <<"请输入需要转换的语句:\n"; 16 cin.getline(sentence,100); 17 convert(sentence); 18 cout << "转换后的语句为:\n" << sentence; 19 return 0; 20 } 21 22 char convert(char *sen) 23 { 24 int i,word=0; 25 for(i=0;*sen!='\0';i++,sen++) 26 { 27 if(i==0) 28 *sen -=32; 29 if(word==1) 30 { 31 *sen-=32; 32 word=0; 33 } 34 if(*sen==' ') 35 word=1; 36 } 37 }
1 #include<iostream> 2 #include<stdlib.h> 3 using namespace std; 4 int space(int count); 5 int sort(int &score,int count); 6 int ave(int &socre,int count); 7 int main() 8 { 9 int count; 10 cout << "请输入成绩个数:"; 11 cin >> count; 12 cout << endl; 13 if(count<=0) 14 cout << "error!"; 15 else 16 { 17 int point[count]; 18 point=space(count); 19 cout << "请输入成绩:"; 20 cin >> point; 21 cout << endl; 22 int average=ave(point,count); 23 cout << "平均分为:"<<average<<endl; 24 sort(point,count); 25 cout << "排序后成绩为:"<<point; 26 } 27 return 0; 28 } 29 30 int space(int count) 31 { 32 int *dyn; 33 dyn=new int [count]; 34 if(dyn==NULL) 35 { 36 cout << "动态分配内存空间失败!"; 37 exit(0); 38 return NULL; 39 } 40 return *dyn; 41 } 42 43 int sort(int &score,int count) 44 { 45 int i,j,tem; 46 for(i=0;i<count;i++) 47 { 48 for(j=0;j<count;j++) 49 { 50 if(score[j]>score[i]) 51 { 52 tem=score[j]; 53 score[j]=score[i]; 54 score[i]=tem; 55 } 56 } 57 } 58 } 59 60 int ave(int &socre,int count) 61 { 62 int i,sum=0; 63 float ave; 64 for(i=0;i<count;i++) 65 { 66 sum+=score[i]; 67 } 68 ave=sum/count; 69 return ave; 70 }
敲出了一段错误连篇的代码,深夜绝望。返回指针?动态分配内存后指针和数组的转换?引用数组?
大概的确是C的指针略微有些遗忘,而内存那里也确实没怎么弄懂。想起来,链表和文件好像也不是很扎实。
明日计划:通读c++ primer plus 勾选部分。
------------------
有为,有守,有趣。
------------------