1.3、更复杂的程序

By | 2014年11月23日

这一节我们将见到一些更加复杂的程序

当然,你不可能弄懂他们!

本节的目的在练习IDE的使用,并且对c的基本结构有一个更深的了解

你可以尝试去理解它,但是不要因为看不明白而负有任何心理压力

其中包含了太多我们还没有学的内容

我们先从预备章中的那个程序开始

还记得那个用来演示命令的程序吗

下面就是他的源代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

int main(int argc,char *argv[])
{
	int i = 1;
	srand(time(NULL));
	if (argc == 1)
	{
		printf("hello!\n你还没有给我参数呢!\n");
		return 0;
	}
	printf("你给了我%d个参数哦!\n他们分别是:\n", argc - 1);

	for (;i<argc;printf("参数%d->%s\n", i, argv[i]), i++);
	if (!strcmp("rand", argv[1]))
	{
		printf("你让我产生了随机数,它是%d\n", rand()%99);
	}
	return 0 ; 

}

请按照1.1中的过程创建工程并编译

编译之后,你会在你的工程目录下发现增加了一个EXE文件,这就是我们编译出的程序

你完全可以使用命令提示符切换到该目录,然后使用这个程序

如果你手贱直接双击这个程序的话

你会发现一个黑框一闪而过,甚至连黑框都看不到

但是如果你在codeblocks下点击运行,程序到最后却运行得很好

这是为什么呢

在dos时代,计算机只能同时执行一个程序(dos是一个单任务系统,就是说一次只能干一件事)

你在dos下运行某个程序时,dos系统会将控制权完全交给这个程序

到程序结束时,程序会交回控制权,dos才能开始工作

因为dos系统并没有多窗口这种东西,所以dos和程序其实用的是一块显示区域,程序用完了dos接着用

至于cmd,这是微软最初为了兼容dos应用程序而开发的一个虚拟的dos,它的本质是一个程序

cmd启动你的程序后,直到程序完结束,cmd才能重新工作起来,程序结束后,会接着执行cmd这个程序。也就是说,cmd下启动的程序在结束后我们看到的并不是调用的程序的界面,而是cmd的界面

而你直接双击的话,程序会输出“没有给参数”一行字后就退出了,

程序退出的同时,一同关闭的还有窗口,我们显示在窗口上的文字自然也会随着窗口的关闭而消失

若想看到程序执行的结果,我们就需要让程序在退出之前停下来,怎么办?

别担心,我们后面就会讲到【我想你现在一定很想打我】

那么codeblocks中运行程序为什么可以看到结果?当让是codeblocks帮我们停下来了啊。

目前通过cmd或者codeblocks来执行这些程序就够了

下面的程序将a和b相加然后输出

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a=3;
    int b=5;
    int c=a+b;
    printf("a+b=%d\n", c);
    return 0;
}

你知道完数是个什么东西吗?

不知道?快去百度!

下面的程序可以将1000以内的所有完数求出

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    static int k[10];
    int i, j, n, s;
    for (j = 2; j < 1000; j++)
    {
        n = -1;
        s = j;
        for (i = 1; i < j; i++)
        {
            if ((j % i) == 0)
            {
                n++;
                s = s - i;
                k[n] = i;
            }
        }
        if (0 == s)
        {
            printf("%d是一个完数", j);
            for (i = 0; i < n; i++)
            printf("%d,", k[i]);
            printf("%d\n", k[n]);
        }
    }
return 0;
}

1000以内的完数只有三个

有人喜欢问c语言能够干嘛,还有人问c语言不能写窗口程序,能不能写出像样的软件

我只能说学好了啥都能干,操作系统都能搞定,何况运行在操作系统上的程序呢?

如果要开发图形窗口的程序,我们有很多库(库就是别人或你自己提前写好了的拥有某一特定功能的代码)可以选择。那都是以后的事情,我们到以后再说。这里就不给出程序了

本节就到这里,啥也没看懂?

没关系,慢慢来~~

请接着往下看

发表评论

邮箱地址不会被公开。 必填项已用*标注