这一节我们将见到一些更加复杂的程序
当然,你不可能弄懂他们!
本节的目的在练习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语言不能写窗口程序,能不能写出像样的软件
我只能说学好了啥都能干,操作系统都能搞定,何况运行在操作系统上的程序呢?
如果要开发图形窗口的程序,我们有很多库(库就是别人或你自己提前写好了的拥有某一特定功能的代码)可以选择。那都是以后的事情,我们到以后再说。这里就不给出程序了
本节就到这里,啥也没看懂?
没关系,慢慢来~~
请接着往下看