免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 雪花啤酒
打印 上一主题 下一主题

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-11-14 20:24 |只看该作者

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht

C语言程序设计
求教?!
王进

论坛徽章:
0
12 [报告]
发表于 2003-11-15 14:04 |只看该作者

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht


1。建立一个叫f12的MFC AppWizard(exe)中的对话矿。

2。在Controls菜单的帮助下为对话框加上三个Static Text,三个Edit Box,和六个Button.至于放的位置,不需要太多要求。
3。每个控件(Static Text,Edit Box,Button)的名字是系统自动赋给的。可以自己去修改。对Static Text,选中后回车,调出属性表,在General页中改变Caption 中的文本为“数一”。在Styles页面中选择Align Text为Center.对Edit Box,与Static Text类似,可调用其属性表并将Styles页中的 Align Text改为Right.并在改页的复选框中追加Want Return一项。对于六个Botton,调出他们的属性表后,分别改动General中的Caption为“加”,“减”,“乘”,“清除”和“结束”。
4。改造画面时,要调用Layout菜单中的一系列指令。
5。按住Shift键,单击选中三个Static Text控件。单击Layout 中所示的Make Same Size中的Both的大小就一样了。再选中Align中的Top.选择Space Evenly中的Across,Center in Dialog 中的Horizortal.     OK!
6.现在的任务只是为各个Edit Box 设置不同的变量,使用与控件相联系的 变量当然可以更好的对控件进行控制。单击View菜单 中 的 Class Wizard项激活一个对话框,点中Member Variables页面,Project 名设置为f12,Class name为CF12Dlg,选中IDC_EDIT1,双击该选项或者单机Add Variable...按钮。
7。在 谈出对话矿中的Member variable name 中输入m_Nub1,在 Category中选择Value项,在Variable type 中设置 为double,   OK!
(同样把另两个Edit Box 变量设置   为 m_Nub2,m_Nub3.)
8。再次选中View中的classWizard谈出对话矿,Class Name设为 CF12Dlg,淡季ObjectIDs中的IDC_BUTTON1后,双机Message 中的BN_CLICKED,产生一个方法OnButton1.淡季OK后在 淡季Edit code按钮。为 CF12Dlg::OnButon1()方法加入如下代码:

void CF12Dlg::OnButton1()
{
   UpdateData(TRUE);
   m_Nub3=m_Nub1+m_N ub2;
   UpdateData(FALSE);
}
9。参照步骤8完成IDC_BUTT0N2,(3,4,5,6)的实现吧。
void CF12Dlg::OnButton6()
{
  CDialog::OnOK();
}
10。Ctrl+F5.
11。OK!

论坛徽章:
0
13 [报告]
发表于 2003-11-15 14:14 |只看该作者

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht

内联函数速成:
inline int add_int(int x,int y,int z)
{
    return x+y+z;
}
其中,inline是关键字,函数add_int()是一个内联函数。
列体:
#include<iostream.h>;
inline int power_int(int x)
{
    return(x)*(x);
}
void main()
{
    for(int i=1;i<=10;i++)
    {
      int p=power_int(i);
      cout<<i<<"*"<<i<<"="<<p<<endl;
    }
}该程序中,函数 power_int()是一个内联函数,其特点是该函数在编译时被替代,
而不是像一般函数 那样是在运行时被调用。

论坛徽章:
0
14 [报告]
发表于 2003-11-15 14:32 |只看该作者

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht

函数重载:
同一个函数可以对应多个函数的实现。

列如,可以给函数名 add()定义多个函数 实现,

该函数的 功能是求和,   其中,   一个函数实现
  
是求两个  int型数之和,  另外一个,是求两个


浮点数之和,  再一个  求两个复数和。


这种实现、 对应着一个函数体,   这些函数的名字相同, 但是函数的 参数的
类型不同。这就是       函数重载的     概念。


函数重载要求编译器  能够  唯一地  确定     调用一个函数时应执行哪个
函数代码,    确定函数实现时,要求从函数参数的 个数和类型上来区分。

就是说, 进行函数重载时,要求同名函数在参数个数 上不同,或者参数 类型不同。
否则,将无法实现重载。

下面就举一个在参数类型上不同 的重载函数的例子。
求两个操作数之和。
#include<iostream.h>;
int add(int,int)
double add(double,double);
void main()
{
    cout<<add(5,10)<<endl;
    cout<<add(5.0,10.5)<<endl;
}
int add(int x,int y)
{
    return x=y;
}
double add(double a,double b)
{
    return a+b;
}
此程序中,main()函数中调用相同名字add的两个函数,前边一个add()函数对应的
是两个int 型数求和的 函数实现,而后边的一个add()函数对应的  是两个double型
数求和的函数实现。。
这就是重载。

论坛徽章:
0
15 [报告]
发表于 2003-11-15 14:38 |只看该作者

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht

递归调用的过程:
一:递推;
二:回归。
编程从键盘上输入一个数存如变量n中,求n!.程序如下:
#include<iostream.h>;
long int fac(int n);
void main()
{
   int n;
   cout<<"Input a positive integer:";
   cin>;>;n;
   long fa=fac(n);
   cout<<n<<"!="<<fa<<endl;
}
long int fac(int n)
{
   long int p;
   if(n==0)p=1;
else
    p=n*fac(n-1);
    return p;
}

论坛徽章:
0
16 [报告]
发表于 2003-11-15 15:06 |只看该作者

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht

作用域:
#include<iostream.h>;
void main()
{
   int a(5),b(7),c(10);
   cout<<a<<"."<<b<<"."<<c<<endl;
   {
      int b(;
      float c(8.;
      cout<<a<<","<<b<<","<<c<<endl;
      a=b;
      {
          int c;
          c=b;
          cout<<a<<","<<b<<","<<c<<endl;
       }
      cout<<a<<","<<b<<","<<c<<endl;
    }
    cout<<a<<","<<b<<","<<c<<endl;
}
  
局部变量和全局变量:
局部:自动类,内部类静态,函数参数。
全局:(程序级和文件级)1:外部,2:外部静态。


auto 说明符(可省略)
寄存器类变量,定义时加rigester.可能存放到cpu的通用寄存器中,
一般 是char,int.不宜过多。
内部静态类变量是 定义在函数体内或分程序内,并且用说明符static说明的
一种变量。它的 作用域与自动变量相同,但是它的生存期(即寿命)是长的 ,
这是一种可见性与存在性不一致的一种变量。
全局变量:
外部变量 是一种定义在函数体外,定义时不加任何存储类说明的一种变量。
外部变量在引用之前要说明 ,说明外部变量时应在前面加说明符extern表示
该变量是外部变两。在一个文件中,先引用 后定义 的外部变量引用前必须说明,
这称为外部变量提前说明。

在一个程序中,一个外部变量只能定义一次。
但是可以说明多次 。
例题:
#include<iostream.h>;
void other()
void main()
{
int a(3);
regist int b(5);
static int c;
cout<<"a="<<a<<","<<"b="<<b<<","<<c<<endl;
other();
other();
}
void other()
{
int a(5);
static int b(12);
a+10;
b+=20;
cout<<"a="<<a<<","<<"b="<<b<<endl;
}

论坛徽章:
0
17 [报告]
发表于 2003-11-15 15:21 |只看该作者

http://hongen.com/proedu/jsjkj/jsjdjks/stjj/html/jj042554.ht

分析 下列程序的输出结果。
你可以告诉我如何 全编译连接下边的三个文件生成一个.mak的项目文件?????
下面我把这三个文件的内容写下:
文件1(main.cpp)
#include<iostream.h>;
void fun1(),fun2(),fun3();
int i(5);
void main()
{
i=20;
fun1();
cout<<"main():i="<<i<<endl;
fun2();
cout<<"main():i="<<i<<endl;
fun3();
cout<<"main():i="<<i<<endl;
}
文件file1.cpp内容如下:
#include<iostream.h>;
static int i;
void fun1()
{
i=50;
cout<<"fun1():i(static)="<<i<<endl;
}
文件file2.cpp内容如下:
#include<iostream.h>;
void fun2()
{
int i=15;
cout<<"fun2():i(auto)="<<i<<endl;
if(i)
{
extern int i;
cout<<"fun2():i(extern)="<<i<<endl;
}
}
extern int i;
void fun3()
{
i=30;
cout<<"fun3():i(extern)="<<i<<endl;
if(i)
{
int i=10;
cout<<"fun3():i(auto)="<<i<<endl;
}
}

好了,今天就到这里,朋友们明天见!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP