程序设计阶段性总结报告三

程序设计阶段性总结报告三

一:知识点梳理
(一):一维数组
1.数组的创建及初始化
(1)数组创建时,[ ]中要给一个常量,不能用变量
例:

int main( )
        {
             int a[10];
             char b[4];
             double d[6];
         }

(2)数组在创建时时未指定数组的确定大小时,就得初始化。
例:
int days[7]={1,2,3,4,5,6,7}
2.一维数组的使用
(1)数组下标从0开始;
(2)数组尽量开大一点,防止数组越界;
3.一维数组在内存中的存储
一维数组在内存中是连续存放的。
(二):二维数组
1.数组的创建及初始化
例(创建):

int main()
              {
                  int a[3][4];
                  char b[4][5];
                  double d[2][4];
               }

例(初始化):

int main()
              {
                 int a[3][4] = {1,2,3,4};
                 char b[4][5] = {{1,2},{4,5}};
                 double d[][4] = {{2,3},{4,5}};
              }

2.二维数组的使用
(1)二维数组的使用也通过下标的方式
(2)数组下标从0开始;
3.二维数组在内存中(的存储)是连续存放的
(三):字符数组与字符串数组
1.创建及初始化
(1)字符数组定义格式同于一般数组,所不同的是数组类型是字符型,第一个元素同样是从ch[0]开始,而不是ch[1]   
例:

  int main()
  {    
          char ch1[5];       
          char ch2[3][5];
  }   

用字符初始化数组   
例:
char ch[5]={‘a’,‘b’,‘c’,‘d’,‘e’};   
字符数组中也可以存放若干个字符,也可以来存放字符串。两者的区别是字符串有一结束符(‘\0’)。反过来说,在一维字符数组中存放着带有结束符的若干个字符称为字符串。字符串是一维数组,但是一维字符数组不等于字符串。
  
例:
char ch[5]={‘a’,‘b’,‘c’,‘d’,‘\0’};
即在数组chr2中存放着一个字符串“abcd”。  
对二维字符数组来讲,可存放若干个字符串。可使用由若干个字符串组成的初始值表给二维字符数组初始化。   
例:
char ch[3][4]={“abc”,“mno”,“xyz”};
在数组ch3中存放3个字符串,每个字符串的长度不得大于3。

2:字符串的输入与输出  
1、输入   
(1)scanf语句   
格式:scanf(“%s”,字符数组名);   
(2)gets语句   
格式:gets(字符数组名);   
说明:使用gets只能输入一个字符串。读入的是一整行,包括空格。   
例如:scanf(“%s”,s1);gets(s2);对于相同的输入Hello World!。
s1获取的结果仅仅是Hello,而s2获取的结果则是Hello World!  
2、输出   
向屏幕输出一个字符串可以使用printf语句或puts语句。   
(1)printf语句 格式:printf(“%s”,字符数组名);   
(2) puts语句 格式:puts(字符串名称);
说明:puts语句输出一个字符串和一个换行符。对于已经声明过的字符串a,printf(“%s\n”,a)和puts(a)是等价的。
(四):排序与查找
1:排序
(1):排序函数

#include <algorithm>
using namespace std;//默认的sort函数是按升序排。
sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址。

(2):排序包括选择排序,插入排序,冒泡排序。(第二部分有具体代码)
2:查找
二分查找(第二部分有具体代码)
二:经典例题
1:冒泡排序

#include<iostream>  
 #include<iomanip>  
 using namespace std;  
 const int n=10;  
 int t,a[n+1];	  
 int main()  
 {     
 for (int i=1; i<=n; ++i) 
 cin>>a[i];                             
 for (int j=1; j<=n-1; ++j)	     
  for (int i=1; i<=n-j; ++i)                      
   if (a[i]<a[i+1])                   
    {
    t=a[i]; a[i]=a[i+1]; a[i+1]=t;
    }      
    for (int i=1; i<=n; ++i)                              
     cout<<setw(5)<<a[i];                         
     cout<<endl;      
     return 0;  
     } 
     运行结果: 
     输入: 2 5 8 6 12 34 65 22 16 55
     输出: 65  55  34  22  16   12   8   6   5   2 

2: 折半查找

#include<iostream> 
#include<iomanip> 
using namespace std;
int main()
{
low=0,high=n-1,mid=0; 		    
while(low<=high) 		  
  {                     
  mid=(low+high)/2;                  
   if(a[mid]>temp)                     
   high=mid-1;                  
    else if(a[mid]<temp)                
    low=mid+1;             
    else           
    couture<<a[mid]<<endl;                    
    }  
    cout<<"Not Found!"<<endl; 
   }   		

三:感悟与收获
通过数组的学习,c语言基础进一步巩固。我也深刻的认识到。解一道题不能只是单纯的用一种方式解,而是需要运用多方面的知识进行解决。有的题会让我感到崩溃,甚至好几天做不出来。这时候我们不应该放弃,而是应该静下心来深入的钻研进去。培养良好的思维,多做题是一个良好的方式。希望在今后的学习中能够不轻言放弃,尽自己的最大努力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值