博文

经典c程序100例==1--10(2006-11-27 13:06:00)

摘要:经典c程序100例==1--10     【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
      掉不满足条件的排列。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
  int i,j,k;
  printf("\n");
  for(i=1;i<5;i++) /*以下为三重循环*/
    for(j=1;j<5;j++)
      for (k=1;k<5;k++)
      {
        if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
        printf("%d,%d,%d\n",i,j,k);
      }
  getch();
}
==============================================================
【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
   于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
   成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
   40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于<......

阅读全文(1311) | 评论:0

C to C++之一(2006-11-27 13:04:00)

摘要:    C++技术固然是很时髦的,许多C用户都想在尽可能短的时间内为自己贴上C++的标签。介绍C++的书很多,但只有那些已经侥幸入门的用户才偶尔去翻翻,仍有不少在C++门口徘徊的流浪汉。 本文只针对C用户,最好是一位很不错的老用户(譬如他在遇到最简单的问题时都尝试着使用指针),通过一些C和更好的C++(本文用的是Borland C++3.1版本)例程介绍有关C++的一些知识,让读者朋友们“浅入深出”,轻轻松松C to C++! 一、标签!标签! 快快为你的程序贴上C++的标签,让你看起来很像个合格的C++用户…… 1.注释(comment)
C++的注释允许采取两种形式。第一种是传统C采用的/*和*/,另一种新采用的则是//,它表示从//至行尾皆为注释部分。读者朋友完全可以通过//使你的代码带上C++的气息,如test0l: //test01.cpp
#include
//I'm a C++user!
//…and C is out of date.
 
void main()
{
       cout<<"Hello world!\n"; //prints a string
}
 
Hello-world! 如果你尝试着在test0l. exe中找到这些高级的注释,很简单,它们不会在那里的。 2. cincout 你可能从test0l中嗅出什么味儿来了,在C++中,其次的贵族是cout,而不是很老土的printf ( )。左移操作符’<<’的含义被重写,称作“输出操作符”或“插入操作符”。你可以使用’<<’将一大堆的数据像糖葫芦一样串起来,然后再用cout输出: cout << "ASCII code of "<< 'a' << " is:" <<97; ASCII code of a is:97
 
如何来输出一个地址的值呢?在C中可以通过格式控制符”%p”来实现,如:
printf ("%p,&i); 类似地,C......

阅读全文(1145) | 评论:0

磁盘格式化程序设计(2006-11-27 13:03:00)

摘要: 磁盘格式化程序设计
本程序是调用windows中的动态链接库shell32.dll中的函数SHFormatDrive来对驱动器进行格式化的。 函数原型: SHSTDAPI_(DWORD)  SHFormatDrive(HWND,WORD,WORD,WORD); 由于此函数是动态库中未公布函数,因此在使用前要全局声明。 参数说明: SHFormatDrive(HWND hWnd,WORD wDrive,WORD wOption,WORD wFlag); 参数hWnd为执行此函数的父窗口句柄。 参数wDrive是驱动器号,注意这是数字格式,A 驱对应0。 参数wOption是选项,设置为0xffff,采用默认值。 参数uFlag为标志,一般设置为0。 int wDrive=0;  //A: 0  B: 1  C: 2   D:  3 int result=SHFormatDrive(this->m_hWnd,wDriver,0xffff,0); if(result==-1) AfxMessageBox("磁盘格式化失败"); //注意!千万不要把重要数据格式化了!......

阅读全文(218) | 评论:0

让程序开机自动运行(2006-11-27 13:02:00)

摘要: 让程序开机自动运行

程序设置如下:
HKEY m_regkey;
char filename[50];
GetModuleFileName(NULL,filename,50);

RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&m_regkey);
    RegSetValueEx(m_regkey,"mykey",0,REG_SZ,(const unsigned char *)filename,50);
RegCloseKey(m_regkey);

如果要删除运行的程序就按如下设计:
RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&m_regkey);
RegDeleteValue(m_regkey,"mykey");
RegCloseKey(m_regkey);

 

第二种方法:

 CFileDialog savePath(true,NULL,NULL,OFN_HIDEREADONLY,"exe Files(*.exe)|*.exe||",NULL);
   
   if(savePath.DoModal()==IDOK)
    {
      CString fullName;
      fullName=savePath.GetPathName();
      RegKey=NULL;
      RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\......

阅读全文(1458) | 评论:0

C中使用可变参数(2006-11-27 13:00:00)

摘要:C中使用可变参数   我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()
这个函数,它的定义是这样的:
int printf( const char* format, ...);
它除了有一个参数format固定以外,后面跟的参数的个数和类型是
可变的,例如我们可以有以下不同的调用方法:
printf("%d",i);
printf("%s",s);
printf("the number is %d ,string is:%s", i, s);
究竟如何写可变参数的C函数以及这些可变参数的函数编译器是如何实
现的呢?本文就这个问题进行一些探讨,希望能对大家有些帮助.会C++的
网友知道这些问题在C++里不存在,因为C++具有多态性.但C++是C的一个
超集,以下的技术也可以用于C++的程序中.限于本人的水平,文中如果有
不当之处,请大家指正.

(一)写一个简单的可变参数的C函数

下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的
C函数要在程序中用到以下这些宏:
void va_start( va_list arg_ptr, prev_param );

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );
va在这里是variable-argument(可变参数)的意思.
这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个
头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数
参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值.
void simple_va_fun(int i, ...)
{
va_list arg_ptr;
int j=0;

va_start(arg_ptr, i);
j=va_arg(arg_ptr, int);
va_end(arg_ptr);
printf("%d %d\n", i, j);

阅读全文(2966) | 评论:0

语言中时间陷阱的实现(2006-11-27 12:59:00)

摘要:语言中时间陷阱的实现     时间陷阱.它能是主程序的运行和对事件的处理异步进行.通过设置时间陷阱.可以在规定的时间间隔到达后自动执行某个子程序.子程序运行结束后又回到主程序的断点处继续执行.basic语言提供了有关时间陷阱的语句.可以直接调用.但C语言没有这样的功能,为了能实现上述功能,这里给出了几个子函数以帮助实现.

#include<dos.h>

#define Sizeprogram 375
void interrupt (*oldtimer)();
void interrupt newtimer();
static struct SREGS seg;
unsigned intsp,intss;
unsigned myss,stack;
unsigned vseg;
int running=0;
int m1,m2,m3=0;
int (*sub_ptr)();
void on_timer();
void timer_on();
void timer_off();

void on_timer(t,pp);
int t;
int (*pp)();
{
sub_ptr=pp;
m1=t;
segread(&seg);
stack=(Sizeprogram-(seg.ds-seg.cs))*16-300;
myss=_SS;
oldtimer=getvect(0x1c);
}

void timer_on()
{
m2=0;
m3=1;
setvect(0x1c,newtimer);
}
void timer_off()
{
m3=0;
setvect(0x1c,oldtimer);
}
void interrupt newtimer()
{
(*oldtimer)();
if(running==0)
running=1;
disable();
intsp=_SP;
intss=_SS;
_SP=stack;
_S......

阅读全文(259) | 评论:0

用C语言编写Windows服务程序的五个步骤(2006-11-27 12:58:00)

摘要:用C语言编写Windows服务程序的五个步骤       前一段时间我写了一篇通过写服务的形式来达到一些监视程序运行的目的的文章,至于如何在windows下写服务我没有详细介绍,今天就让我们一起看看如何来写服务程序。

     Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。
  当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个 C++ 例子。虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需要的重要信息。我想理解通过什么框架,调用什么函数,以及何时调用,但 C++ 在这方面没有让我轻松多少。面向对象的方法固然方便,但由于用类对底层 Win32 函数调用进行了封装,它不利于学习服务程序的基本知识。这就是为什么我觉得 C 更加适合于编写初级服务程序或者实现简单后台任务的服务。在你对服务程序有了充分透彻的理解之后,用 C++ 编写才能游刃有余。当我离开原来的工作岗位,不得不向另一个人转移我的知识的时候,利用我用 C 所写的例子就非常容易解释 NT 服务之所以然。
  服务是一个运行在后台并实现勿需用户交互的任务的控制台程序。Windows NT/2000/XP 操作系统提供为服务程序提供专门的支持。人们可以用服务控制面板来配置安装好的服务程序,也就是 Windows 2000/XP 控制面板|管理工具中的“服务”(或在“开始”|“运行”对话框中输入 services.msc /s——译者注)。可以将服务配置成操作系统启动时自动启动,这样你就不必每次再重启系统后还要手动启动服务。
  本文将首先解释如何创建一个定期查询可用物理内存并将结果写入某个文本文件的服务。然后指导你完成生成,安装和实现服务的整个过程。......

阅读全文(153) | 评论:0

[C]C实现定时删除文件(2006-11-27 12:57:00)

摘要:[C]C实现定时删除文件     #include "stdio.h"
#include "string.h"
#include "time.h"
#include "stdlib.h" int main( void )
{
 char *strTime;
 time_t myTime; // long型时间
 bool isDel;  time( &myTime );   // 取得时间
 strTime = ctime( &myTime ); // 转换为字符串
 printf( "%s", strTime ); // 显示时间
 
isDel = false; while( !isDel )    // 程序一直运行,直到删除了文件才结束次程序。
{
          /* 如果为18:00点则删除文件 */
          if ( ( strTime[11] == '1' ) && ( strTime[12] == '8' ) && ( strTime[14] == '0' ) && ( strTime[15] == '0' ) )
          {
                  system( "type aaa.txt" ); // 显示文件的内容
       &......

阅读全文(186) | 评论:0

习题-1(2006-11-27 12:55:00)

摘要:1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数字对应不
                    D F G     同字母。编程求出这些数字并且打出这个数字的
             +      D F G     算术计算竖式。

             ───────

                X Y Z D E



  2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
  人参加了竞赛:

   (1)A参加时,B也参加;

   (2)B和C只有一个人参加;

   (3)C和D或者都参加,或者都不参加;

   (4)D和E中至少有一个人参加;

   (5)如果E参加,那么A和D也都参加......

阅读全文(2103) | 评论:0

分享]C语言问题合集 (2006-11-27 12:44:00)

摘要:分享]C语言问题合集 作为C/C++第一个帖子,介绍一下竞赛中的C语言基本知识和C语言库函数使用技巧,文章的最后附有函数速查,如果对于例子不理解可以参考一下这个
也希望大家能够支持DRS,共同让它复活 Part 1:C语言一些基本常识:
===================================================
(一)C语言教材
最著名的教材是〈C Programming Language〉<C程序语言>,但是个人感觉不适合初学者,特别是没接触过编程的同学,而C语言的中国教材都大同小异,我入门用的是潭浩强的〈C程序设计〉在国内也是比较著名的C语言教材.当然也有同学直接学C++,我对C++了解不多,所以不作介绍,等待高人补齐 (二)C/C++语言编译器:
竞赛统一的编译器内核为GCC,IDE根据具体情况,平时训练可以使用DEV-CPP,
DEV-CPP官方网站:
http://www.bloodshed.net/devcpp.html (三)算法和数据结构相关教材
以C/C++为代码的书我目前只知道一本:
〈数据结构〉//清华大学出版社

(四)一些问题:
(1)竞赛中使用C和C++有区别吗?
个人认为没有区别,C和C++的区别主要在大型应用软件编写上,而在竞赛中面向对象是没用的
(2)C语言比PASCAL的程序效率高吗?
虽然很多人认为C比P的效率高,这是有可能的,因为GCC的编译有比较多的优化,但是这种区别不会很大,所以仅仅因为追求这点效率而转C或许不一定好。
(3)C语言的缺点有哪些?
在竞赛中和Pascal对比,C语言的最大缺点是它的灵活,数组越界不报警,数据强制转换只要允许也都可以执行,这造成了Debug上的一些困难,这对编程者的谨慎要求也更高,不谨慎常常带来意想不到的错误
(4)C语言的优点是什么?
和Pascal相比,C语言的优点还是灵活,灵活的指针运算和位运算,当然位运算在FP出现后也在PASCAL中成为可能,而指针在竞赛中不常用,所以这些优势在竞赛中不一定能够发挥。要说还有什么优势,那就是代码相对简短了(begin 和end变成了{} )。当然这也不是说C比P差,能够好好运用的话,两种......

阅读全文(2414) | 评论:0