VC++学习实例.docx
《VC++学习实例.docx》由会员分享,可在线阅读,更多相关《VC++学习实例.docx(15页珍藏版)》请在冰豆网上搜索。
![VC++学习实例.docx](https://file1.bdocx.com/fileroot1/2023-2/2/3bc7adb6-c8b2-4718-a1d4-e02d30557ba3/3bc7adb6-c8b2-4718-a1d4-e02d30557ba31.gif)
VC++学习实例
VC++学习实例
1.数组元素的排序
#include"iostream.h"
voidSort(intnArray[],intnLen)
{
//起泡法排序
for(inti=0;i//直接在for内定义i的数据类型
for(intj=0;jif(nArray[j]>nArray[j+1])
{intnNum=nArray[j];
nArray[j]=nArray[j+1];
nArray[j+1]=nNum;
}
//return0;//void类型不能有返回值,不能返回0
return;//可以直接“return”
}
intmain(intargc,char*argv[])
{intnGrade[]={45,78,25,96,105,12};
intnLen=sizeof(nGrade)/sizeof(int);//获取数组的长度
Sort(nGrade,nLen);
//for(inti=0;ifor(inti=nLen-1;i>=0;i--)//降序排列
{cout<return;
}
//无论是void函数或int函数,结尾都加“return”
2.统计成绩的最高分、最低分和平均值
#include"iostream.h"
intAverage(intnGrade[],intnLen)
{intnSum=0;
for(inti=0;i{nSum+=nGrade[i];}
returnnSum/nLen;//此处应该返回的是平均成绩,而不是0
}
intMaxGrade(intnGrade[],intnLen)
{intnMax=nGrade[0];
for(inti=0;i{nMax=(nMax>nGrade[i])?
nMax:
nGrade[i];}//两数比较,取较大的
returnnMax;//此处应该返回的是最高成绩
}
intMinGrade(intnGrade[],intnLen)
{intnMin=nGrade[0];
for(inti=0;i{nMin=(nMin>nGrade[i])?
nGrade[i]:
nMin;}//两数比较,取较小的
returnnMin;
}
intmain(intargc,char*argv[])
{intnArray[]={5,3,4,1,2};
intnLen=sizeof(nArray)/sizeof(int);
//cout<intAver=Average(nArray,nLen);
cout<<"平均成绩为:
"<intnMax=MaxGrade(nArray,nLen);
cout<<"最高成绩为:
"<intnMin=MinGrade(nArray,nLen);
cout<<"最低成绩为:
"<return0;
}
3.描述分段函数
#include"iostream.h"
intmain(intargc,char*argv[])
{intx,y;
cout<<"请输入x的值:
";
cin>>x;
if(x<1){y=x;}
elseif(x>=1&&x<30){y=5*x;}
elseif(x>=30){y=10*x;}
cout<<"y的值为:
"<return0;
}
#include"iostream.h"
intcalcu(intx)
{inty;
if(x<1){y=x;}
elseif(x>=1&&x<30){y=5*x;}
elseif(x>=30){y=10*x;}
returny;
}
intmain(intargc,char*argv[])
{intx;
cout<<"请输入x的值:
";
cin>>x;
inty=calcu(x);
cout<<"y的值为:
"<return0;
}
4.判断1998-2050之内的所有闰年
闰年:
能被4整除,不被100整除;或者,能被100整除,能被400整除。
#include"iostream.h"
intmain(intargc,char*argv[])
{
for(inti=1998;i<2050;i++)
{
if(i%4==0&&i%100!
=0)
{
cout<
}
elseif(i%100==0&&i%400==0)
{
cout<
}
}
return0;
}
#include"stdafx.h"
#include"iostream.h"
//判断某一年是否是闰年
boolIsLeapyear(intnYear)
{
if(nYear%4==0&&nYear%100!
=0)
{returntrue;}
elseif(nYear%100==0&&nYear%400==0)
{returntrue;}
returnfalse;
}
intmain(intargc,char*argv[])
{
for(intnYear=1998;nYear<2051;nYear++)
{
if(IsLeapyear(nYear))
{
cout<}
}
return0;
}
——在主函数中,尽量只调用子函数。
5.寻找某个元素的位置
#include"iostream.h"
intFindElement(intnArray[],intnLen,intnData)
{
for(inti=0;i{
if(nArray[i]==nData)
{
cout<<"找到数据"<return0;//发现了元素,函数返回
}
}
cout<<"没有发现数据"<return0;
}
intmain(intargc,char*argv[])
{
intnArray[]={1,5,3,6,4,2};
intnLen=sizeof(nArray)/sizeof(int);
intFindData=FindElement(nArray,nLen,6);
//cout<return0;
}
6.
//静态变量的应用
#include"iostream.h"
voidinvoke()
{
staticints_nNum=0;//“s_”静态变量的命名
//ints_nNum=0;
cout<s_nNum++;
}
intmain(intargc,char*argv[])
{
for(inti=0;i<10;i++)
{
invoke();
}
return0;
}
静态变量s_nNum的结果
普通变量s_nNum的结果
7.
//两个字符串的连接
//#include"stdio.h"//C库printf,scanf
#include"iostream.h"//C++库cout,cin
char*Strcat(char*str1,char*str2)
{
//char*s=str1;//此句的作用?
while(*str1)
{
str1++;
}
while(*str2)
{
*str1++=*str2++;
}
*str1=0;
//returnstr1;
//returns;
return0;
}
intmain()
{
chars1[100],s2[100]={0};
/*
printf("输入第一个字符串:
");
scanf("%s",s1);
printf("输入第二个字符串:
");
scanf("%s",s2);
*/
cout<<"输入第一个字符串:
"<cin>>s1;
cout<<"输入第二个字符串:
"<cin>>s2;
Strcat(s1,s2);
//printf("连接之后的字符串:
%s\n",s1);
cout<<"连接之后的字符串:
"<return(0);
}
上述程序的运行结果
将上述程序的“*str1=0;”注释掉的结果如下,为什么?
8.
//使用指针变量访问和修改相应变量的值
//张顺,2013年6月18日14:
32:
12
//#include"stdafx.h"
#include"iostream.h"
intmain(intargc,char*argv[])
{
intnLen=10;
//int*pLen;
//pLen=&nLen;//将变量的地址赋给指针变量
int*pLen=&nLen;//定义指针并初始化,代替以上两句
cout<<"指针pLen指向的地址为"<cout<<"指针pLen指向的数据为"<<*pLen<cout<<"nLen的值为"<cout<//通过修改指针指向的数据,来修改变量的值
//pLen=pLen+1;
*pLen=100;
cout<<"指针pLen指向的地址为"<cout<<"指针pLen指向的数据为"<<*pLen<cout<<"nLen的值为"<cout<//指针变量之间的赋值
intnCount=11;
int*pCount=&nCount;
pLen=pCount;//将指针变量pCount赋值给指针变量pLen
cout<<"指针pCount指向的地址为"<cout<<"指针pLen指向的地址为"<cout<<"指针pLen指向的数据为"<<*pLen<cout<return0;
}
若增加“pLen=pLen+1;”语句,则结果如下;pLen指向的数据变为100,而nLen的值未变,仍为10.
注意:
“pLen=100;”赋值方法是错误的,“'=':
cannotconvertfrom'constint'to'int*'”,因为“pLen”是整型指针变量,而“100”是整型常量。
9.使用指针变量遍历数组
指针,可以指向变量和数组。
数组名表示的是,数组的首地址,即数组中第一个元素的地址。
因此,将数组之间赋值给指针对象是完全合法的。
//使用指针变量遍历数组
//张顺,2013年6月17日17:
15:
29
//#include"stdafx.h"//Cannotopenincludefile:
'stdafx.h':
Nosuchfileordirectory
#include"iostream.h"
intmain(intargc,char*argv[])
{
intnArray[]={1,2,3,4,5};//定义一个数组
intnLen=sizeof(nArray)/sizeof(int);//获取数组的长度
//将数组(首地址)赋给指针变量
int*pIndex=nArray;//定义一个指针,指向所定义的数组
for(inti=0;i{
cout<<*pIndex<pIndex++;//使指针指向下一个元素
//cout<<*pIndex++<}
return0;
}
10.
//指针数组
//张顺,2013年6月18日14:
51:
41
#include"iostream.h"
intmain(intargc,int*argv[])
{
int*pArray[3][3];//定义一个指针数组
intnArray[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}};
for(inti=0;i<3;i++)
{
for(intj=0;j<3;j++)
{
//pArray[i][j]=&nArray[i][j];//为指针数组的各元素赋值
//cout<<*pArray[i][j]<pArray[j][i]=&nArray[j][i];
cout<<*pArray[j][i]<}
}
return0;
}