当前位置:首页 » 编程软件 » 编程格子布

编程格子布

发布时间: 2022-03-15 05:40:12

‘壹’ 怎么编程

学编程,决不可心浮气燥。任何实践都是……

我认为有些人的观点错了。错得一塌糊涂。
对于这个问题,我的基本观点是:任何实践都是理论的载体或表现形式。而理论也是由实践上升而来
的。两者是辨证的。今天,我们只关注它的前一部分:任何实践都是理论的载体和表现形式。
我不是想故弄玄虚,但真理的外表看上去往往就是这么奇形怪状、难以理解。让我来给你解释一下
吧。
比如:战争是军事理论的实践,也是它的表现形式。战争的胜负取决于指挥者军事理论的掌握程度(别
给我举赵括这类“纸上谈兵”的反例,他们根本算不上掌握了军事理论,充其量只算是“背”下了军事
理论。“掌握”和“倒背如流”这是两个概念。)

1、VC、VB、Delphi …… ,你该学哪个?
具体到编程而言,我要告诉你:任何一种计算机语言,都是计算机科学理论的载体或表现形式。C++很
神吗?Java很酷吗?它们差距很远吗?是的。但从理论的层面上讲,它们没有区别,都是“面向对象”
理论的一个具体形式而已。
现在的程序员们被发行编译软件(通常我们将其称为“系统软件”)的商家不断推出的产品搞得眼花缭
乱,头痛欲裂。不断地跟在新语言后面跑,这条路还没跑到头,那边的“新路”又鸣锣开张了,于是再
跟着跑……渐渐地有些人开始感叹:学海无涯、学无止境,或什么“程序员是青春饭,过了三十别想
干”……
在此我不得不叹息:中国的教育真是一种“形而上学”的教育。早在高中时代我们就学过“辨证唯物主
义”的基本理论:做事情要抓主要矛盾。这一条恐怕谁都知道,却鲜见谁能在实践中把这一理论运用得
“炉火纯青”的。把这一理论运用到编程上来讲就是:
理论是主要矛盾,语言是次要矛盾,学会了理论,再具体到学一种语言时,你只不过是在进行某种消遣
而已。
现在学VC的普遍看不起学VB的或学Delphi的。但如果一个用Delphi的人,在需要写web程序时,用
TCP/IP做了一个构架,嵌入到应用程序中;而另一个用VC的人却只会把一个又一个的组件拖来拉去的做
些个“例子程序”的翻版。你说他们两个谁历害?Delphi和VC谁历害?
真应了这样一段话,问:纽约好还是上海好?答:有钱哪儿都好,没钱哪儿都不好。上海的富人并不比
纽约的富人少多少的优越感,而纽约的乞丐也不比上海的乞丐多多少幸福感。
现在你还会说学VC的人就一定比学Delphi的人水平高、“钱景”好吗?

2、“浅薄”绝不该是中国程序员的性格特征!!!
想问一句:中国程序员这么多,你们真地把基础理论学好了吗?别用你现有的编程经历告诉我:编程不
需要数学,不需要数据结构,不需要编译原理…… ……说话得负责任,您知道吗?我之所以发表这篇
文章,就是因为再也看不下去这种在中国编程界漫延的歪理邪说了!邪教害死的是人的个体,你们害死
的是中国软件业的未来!如果再让这种理论继续毒害编程新手的思想,中国将在计算机领域失去民族的
尊严!!!
请问,操作系统、编译软件、数据库系统…… 这些被称为“系统软件”的东东,中国有几样拿得出手
的产品?也许是我孤陋寡闻,据我所知:我们国家一件像样的也没有。
不错,我们是有一些网站的股票在西方上市了,我们是有一些人被国外公司请去做高级职员了,我们也
有一些人把西方的官方网站给黑了……但是,我们用的编译工具是谁的产品?我们微机里装得是谁做出
的操作系统?我们的程序跑在谁的芯片上?
爱之深,恨之切。我爱的是中国,但我痛恨不是中国,而是在中国编程界普遍流行的“浅薄”和“自以
为是”,这是我们民族软件业的一颗毒瘤!
是的,现在编程方面快速入门的书满天飞,让程序员的门槛越来越低。我这个外行就得益于这个“低门
槛”,跑了进来。但进来后,我们就不能再这样浅薄下去了——我的兄弟们!
用他国提供的工具做几个网站,写几个应用程序,弄出几个病毒…… 是振兴不了民族软件业的。顺便
说一句:我尊敬求伯君,但我不认为金山公司和其系列产品配得上被称为“民族软件业”的大旗,相对
这个称号,它差得太远了。
…… ……
写flash软件的人会认为用flash做动画的人比他历害吗?Adobe公司真的认为考取Adobe证书的人是“人
才”吗?MSCE、MSCD…… 通过这类考试得到微软徽章的人,在微软眼里是“人才”还是“义务推销
员”?持这类证书以及其他一些大软件公司认证的人,你们还在以为自己是“中国软件业的精英”而感
叹“怀才不遇”、工资太少吗?
醒醒吧,朋友。别再用编程不需要理论的话来自欺欺人了,别再用自己的浅薄来教导别人像自己一样浅
薄了。我想问问那些称数学、数据结构等基础课程对编程没用的人:
请你们搞清一个概念:是这些理论“没用”,还是你们“没用到”;是你们“没用到”,还是你们的水
平根本“用不到”;是你们“不需要用”,还是你们根本“不会用”?
举个例子,操作系统中的工作调度,若工作优先权相同,用什么方法进行调度?当然是“先到先做”—
—这就是数据结构中“队列”的应用。你们说“用不到”,只怕是因为到目前为止还没机会接触这类
“高端编程”的挑战吧?这样的话,那就算了,挣你的钱去,但别再来这里误人子弟,吹嘘什么优秀的
程序员不需要理论。
是谁说系统软件发展的黄金时代已经过去了?Linux不就是在MS操作系统雄霸多年的情况下一举成名的
吗?中国难道就找不到这样一个机会? 不,如果我们的程序员克服了现在的浮燥与急功近利,我们一
样可以在“系统软件”这一软件业的“高端”树立自己的品牌!所以请看下面——

3、年轻人应该有宏伟的志向。
用别人的产品做自己的东西,你永远只是个“高级客户”,成不了真正的开发者。不管你用他国的系统
软件开发出多少好的产品,挣了多少钱,只要人家一升级、或一推出新产品,你口袋里的银子连同最后
一条小裤叉也会被剥夺得一干二净。你,只不过是一个高级打工仔。
我希望打算进入编程界的朋友们,特别是现在还很年轻的朋友,能有一个比较高的志向。更希望已经进
到这行的朋友们能有以“振兴民族软件业”为己任,力争成为中国软件业的“旗手”。
我不赞同方东兴把微软骂得一无是处。更不赞同年轻人学他那样,一赌气而拒绝用微软的产品,拒绝
Windows、拒绝VC 、拒绝IE ……
我认为方东兴只是个狭隘的民族主义者。他看到了中国软件业民族的一面,却不愿承认我们落后的一
面。毫无根据的“自尊”等于自取灭亡。清朝末年,我们的科技并不落后于西方多少,但我们过分“自
尊”的“大国思想”却使我们失去了向其他国家学习的机会。当我们嘲笑西方人的蓝眼睛、大鼻子的时
候,他们的坚船利炮,却把我们“央央大国”的皇帝、太后打得满世界逃难。慈禧太后被打得满地找牙
的时候,不得不说出“量中华之物力,博与国之欢欣”的龌龊话,此时,她“大国皇太后”的自尊何在
呢?前面自尊过了头,事后必遭报应。这报应一持续,就是几百年,直到现在。难道我们还要继续闭门
造车,再走老路吗?
我们现在承认微软比我们强,向微软学习,并不等于我们永远要跟在他后面跑!在我们低下头的时候,
我们就应该想到,何时能再抬起这颗高贵的头颅!!!而且是“一定”!!!!!自尊不是错,错是错
在“太盲目”——妄自尊大,你就要和慈禧一样被打得满地找牙。做为一个大国,一个明智的民族,我
们不能讳疾忌医。
年轻人,志当存高远。相信我,当你以民族振兴为己任的时候,封王称帝、富贵荣华,都只不过是千秋
伟业的一个副产品。在这个尊重知识、崇尚科学的年代,志向高远的人,永远不必担心自己的“钱
途”。
不必讳言,我承认我当初进入编程领域不完全出于兴趣,也有“钱途”方面的考虑。但就好像当年参加
八路的战士当中,有些只是报着能吃上军粮或打鬼子报家仇的思想入伍的,但后来却学习了马列,提高
了觉悟,转为以兴国救民为目标一样,当我一步步深入到这行以后,当我决定考研并慢慢提高了认识以
后,我的目的变了。我觉得应该有个更高的人生目标,更高志向和追求来支持我的行动。这个目标就
是:为民族软件业尽一把自己的力。
真心希望你与我同行。

4、几点建议:
建议大家耐下心来先学好理论,然后再选择具体的工具或语言。不过,在所有这一切开始以前,先打好
c语言和汇编基础。
能不能得道,就看你在见到别人做出一些花里胡哨的东西时,是不是能坚定信心、耐住寂寞、抵御诱惑
了。
一个和我一起学习C语言的人,学完就直接开始玩VC,而我则潜下心来学了些C++和理论方面的东西。早
早地,他就能仿照书上用VC做些界面似的东西在我面前炫耀,可后来,当我基础理论的学习告一段落,
做个图书管理程序卖了800大洋时,他还只是停留在做“例子程序”的水平上。现在我们谈论起编程,
深度早已不可同日而语了。他起跑领先,却落在了后面。
我不敢自以为是,只是想用这个亲身经历告诉大家:学编程,决不可心浮气燥。
5、结束语
我的话触到许多人的痛处,而且由于写时心中气愤难平,有些出言不逊,可能要遭人骂了。不过,既然
写了,就不怕骂。因为:以上所言全是忠告,识不识货,就看您的眼光了

‘贰’ C语言编程

貌似我在200行以内完成了.... 45行.
本来不准备写的. 一楼的那句话让我想尝试下...
楼主最好加个QQ群, 去一楼说的群里转转,有问题就问,有好处
虽然说原水不解近渴,但有了水源以后就不怕没水喝,楼主加油吧

#include <stdio.h>
/*按你给的数组定义了一个M*N矩阵即:4*4矩阵*/
#define M 4 /*当输入的矩阵行列数M,N改变时*/
#define N 4 /*将此处的M,N值改成所需要的*/
void sort(int a[],int n);
int main()
{
int i,j,a[M][N];
int sum=0,sumM[M]={0},sumN[N]={0};
printf("输入二维矩阵:\n"); /*需要你输入矩阵元素,即数组元素*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
sum+=a[i][j];
sumM[i]+=a[i][j]; /*所有求和运算循环内完成了*/
sumN[j]+=a[i][j];
}
printf("\n输入矩阵各元素总和为:%d\n\n",sum);
sort(sumM,M);
sort(sumN,N);
printf("各行元素之和升序输出:");
for(i=0;i<M;i++) printf("%d ",sumM[i]);
printf("\n\n各列元素之和升序输出:");
for(i=0;i<N;i++) printf("%d ",sumN[i]);
printf("\n\n");
return 0;
}
/*数组升序排序函数*/
void sort(int a[],int n)
{
int i,j,min,pos;
for(i=0;i<n-1;i++)
{
min=a[i],pos=i;
for(j=i+1;j<n;j++)
if(a[j]<min)
{
min=a[j];
pos=j;
}
a[pos]=a[i];
a[i]=min;
}
}

‘叁’ 编程模拟“地雷游戏”在9x9方格中随机布上10个地雷按9行9列输出各格子的数,(有雷为9,无雷为0),在有相

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int map[11][11];
const int N = 9;
void init()
{
memset(map,0,sizeof(map));
int c = 10;
int i,j;
int r;
while(c--)
{
do
{
r = rand()%81;
i = r/9;
j = r%9;
}while(map[i][j]!=0);
map[i][j]=9;
}
}
void print()
{
for(int i=0;i<N;++i)
{
for(int j=0;j<N;++j)
printf("%d",map[i][j]);
printf("\n");
}
}
int main()
{
srand(time(NULL));
init();
print();

return 0;
}
这个每次执行一次 就是随机一个地雷阵
还有什么问题再问我 用G++ 编译

‘肆’ c语言编程

程序设计语言的预处理的概念:在编译之前进行的处理。
C语言的预处理主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。 预处理命令以符号“#”开头。
1宏定义
1.不带参数的宏定义:
宏定义又称为宏代换、宏替换,简称“宏”。
格式:
#define标识符文本
其中的标识符就是所谓的符号常量,也称为“宏名”。
预处理(预编译)工作也叫做宏展开:将宏名替换为文本(这个文本可以是字符串、可以是代码等)。
掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
即在对相关命令或语句的含义和功能作具体分析之前就要换:
例:
#define PI3.1415926
把程序中全部的标识符PI换成3.1415926
说明:
(1)宏名一般用大写
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
(3)可以用#undef命令终止宏定义的作用域
(4)宏定义可以嵌套
2.带参数的宏:
除了一般的字符串替换,还要做参数代换
格式:
#define 宏名(参数表)文本
例如:#define S(a,b) a*b
area=S(3,2);第一步被换为area=a*b; ,第二步被换为area=3*2;
类似于函数调用,有一个哑实结合的过程:
(1)实参如果是表达式容易出问题
#define S(r) r*r
area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;
正确的宏定义是#define S(r) ((r)*(r))
(2)宏名和参数的括号间不能有空格
(3)宏替换只作替换,不做计算,不做表达式求解
(4)函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存
(5)宏的哑实结合不存在类型,也没有类型转换。
(6)宏展开使源程序变长,函数调用不会
(7)宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
2文件包含
一个文件包含另一个文件的内容
格式:
#include "文件名"

#include <文件名>
编译时以包含处理以后的文件为编译单位,被包含的文件是源文件的一部分。
编译以后只得到一个目标文件.obj
被包含的文件又被称为“标题文件”或“头部文件”、“头文件”,并且常用.h作扩展名。
修改头文件后所有包含该文件的文件都要重新编译
头文件的内容除了函数原型和宏定义外,还可以有结构体定义,全局变量定义:
(1)一个#include命令指定一个头文件;
(2)文件1包含文件2,文件2用到文件3,则文件3的包含命令#include应放在文件1的头部第一行;
(3)包含可以嵌套;
(4)<文件名>称为标准方式,系统到头文件目录查找文件,
"文件名"则先在当前目录查找,而后到头文件目录查找;
(5)被包含文件中的静态全局变量不用在包含文件中声明。
3条件编译
有些语句希望在条件满足时才编译。
格式:(1)
#ifdef 标识符
程序段1
#else
程序段2
#endif

#ifdef
程序段1
#endif
当标识符已经定义时,程序段1才参加编译。
格式:(2)
#ifndef 标识符
格式:(3)
#if 表达式1
程序段1
#elif 表达式2
程序段2
……
#elif 表达式n
程序段n
#else
程序段n+1
#endif
当表达式1成立时,编译程序段1,当不成立时,编译程序段2。
使用条件编译可以使目标程序变小,运行时间变短。
预编译使问题或算法的解决方案增多,有助于我们选择合适的解决方案。
此外,还有布局控制:#pragma,这也是我们应用预处理的一个重要方面,主要功能是为编译程序提供非常规的控制流信息。

‘伍’ 用C语言编程

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

void FunctionTest( double **a , int row)
{
int i=0, k=0, j=0;
double dMinDistance=0, dt=0, t=0;

for ( i=2; i < row-1; i++ )
{
k=i;
for ( j=i+1; j < row; j++ )
{
if ( sqrt(pow(a[k][0], 2) + pow(a[k][1], 2)) > sqrt( pow(a[j][0], 2) + pow(a[j][1], 2) ) )
{
k=j;
}
}
if ( k!= i)
{
t=a[i][0];a[i][0]=a[k][0];a[k][0]=t;
t=a[i][1];a[i][1]=a[k][1];a[k][1]=t;
}
}

dMinDistance = sqrt( pow( a[0][0]-a[2][0], 2) + pow(a[0][1]-a[2][1],2) );

for ( i=2; i<row-1; i++ )
{
dt= sqrt( pow( a[i][0]-a[i+1][0],2) + pow( a[i][1]-a[i+1][1], 2 ) );
if ( dMinDistance < dt )
{
dMinDistance = dt;
}
}

dt = sqrt( pow( a[1][0]-a[row-1][0], 2) + pow(a[1][1]-a[row-1][1],2) );
dMinDistance = ( dMinDistance < dt ) ? dt : dMinDistance;

printf( "\n小羊最小的跨越距离为: %lf\n", dMinDistance );

}
int main()
{

int n=0, i=0;
double **a;
printf( "请输入整数n:");
scanf( "%d", &n );
if ( n >0 )
{

a = (double **) malloc( sizeof(double*) * n );
}
for ( i=0; i < n; i++ )
{
a[i] = (double*)malloc( sizeof(double) * 2);
switch ( i )
{
case 0:
printf( "\n请输入小羊的坐标X Y(空格分隔):");
break;
case 1:
printf( "\n请输入娃娃坐标X Y(空格分隔):");
break;
default:
printf( "\n请输入石头坐标X Y(空格分隔):");
break;
}
scanf( "%lf%lf", &a[i][0], &a[i][1]);
printf( "\n");

}

FunctionTest(a, n );

for ( i=0; i <n; i++ )
{
free(a[i]);
}
free(a);

return 0 ;
}

‘陆’ 程序员为什么都喜欢穿格子衬衫

这个应该是对程序员的一种误解吧,我估计大部分的人是看国外的电视剧或者电影,造成对这个职业的人群的印象就是喜欢穿格子衬衫,其实不是这样的,或者直接说我们国内的程序员就不是这样的,我个人就是程序员,身边的大部分也是程序员,但是基本上是没看过有人穿格子衬衫的。

因为这个很土啊,显的很老气,别人看着都是会觉得会眼花,再不会打扮自己的,我想也不会去穿这个的,我现在能想到会去穿这个衣服的程序员,就除非是真的很赖,出于不想换衣服的目的,因为格子的衬衫很耐脏,一般的脏都看不出来的,可以不用常换衣服。

现在的程序员的标识,其实不是格子衬衫,而是背包,很多的程序员都是有背包的习惯的,我早先时候,也是有这个习惯的,但是后面做公交的时候,自己靠着哪些背包的人,觉得非常不舒服,自然也就不去背包了,但是现在我的很多程序员同事和朋友都还是有这个习惯的。所以在北上关深这些地方,如果看见背背包的,不是做销售的,就是程序员,而且是绝对是程序员居多。

至于穿着的话,一般程序员都是简单为主了,基本上都是比较简单的一点的T恤和牛仔裤,也有些会选择穿一些布裤之类的,甚至穿短裤上班的也有不少啊。总之就是相对会比较随便,而且这个岗位也决定了公司对这个的穿着要求也是不高的。

‘柒’ 求C语言编程高手

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 100
#define IN 1
#define OUT 0 /*标记退出程序*/
#define LEN sizeof(struct person)
#define SIZ (sizeof(struct person)-sizeof(struct person *))
struct person
{
char name[20];
char unit[20];
char tel[20];
struct person *next;
};
struct person pe;
struct person * head;
static int num;

int choice() /*控制操作的重复*/
{
char c;
printf("continue or not:Y/N\n");
getchar();
c=getchar();
if(c=='y'||c=='Y')
return (1);
else
return (0);
}

struct person * creat() /*逐一录入联系人的基本信息,建立先进后出的链表*/
{
char s[20];
struct person *pi;

head=NULL;
printf("input the names end of'0':\n"); /*标记输入的结束*/
scanf("%s",s);
do
{
pi=(struct person *)malloc(LEN);
strcpy(pi->name,s);
printf("the units and the telephone numbers:\n");
scanf("%s%s",pi->unit,pi->tel);
pi->next=head;
head=pi;
printf("input the names end of '0':\n");
num++;
scanf("%s",s);

}
while(strcmp(s,"0"));

pi=head; /*显示信息*/
while(pi!=NULL)
{
printf("%-20s %-20s %-20s\n",pi->name,pi->unit,pi->tel);
pi=pi->next;
}
return(head);
}

void strchange(char *s1,char * s2) /*交换字符串*/
{
char temp[20];

strcpy(temp,s1);
strcpy(s1,s2);
strcpy(s2,temp);
}

void sort(struct person *head,int n)
{
int i,j;
struct person *p1,*p2;

for(p1=head,i=0;i<n;i++,p1=p1->next)
for(p2=p1->next,j=0;j<n-i-1;j++,p2=p2->next)
if(strcmp(p1->name,p2->name)>0) /*调用strchange函数,交换姓名,单位和号码*/
{
strchange(p1->name,p2->name);
strchange(p1->unit,p2->unit);
strchange(p1->tel,p2->tel);
}
p1=head;
while(p1!=NULL) /*输出排序后的信息*/
{
printf("%-20s %-20s %-20s\n",p1->name,p1->unit,p1->tel);
p1=p1->next;
}
}

struct person* search(struct person *head,int n) /*查询指定信息*/
{
int i,flag=0,state=1;
char s[20];
struct person *p;

printf("input the name you want:\n");
scanf("%s",s);
for(i=0,p=head;i<n;i++,p=p->next)
if(strcmp(p->name,s)==0)
{
flag=1;
break;
}
if(!flag)
{
printf("no such person.\n");
return(NULL);
}
else return(p);
}

void del(struct person * *headp) /*删除指定信息*/
{
struct person *p,*last;
char s[20];

printf("input the name to delete:\n");
scanf("%s",s);

p=*headp;
while(strcmp(p->name,s)!=0&&p->next!=NULL)
{
last=p;
p=p->next;
}
if(!strcmp(p->name,s))
{
if(p==*headp)
*headp=p->next;
else
last->next=p->next;
free(p);
}
}

struct person * add(struct person * *headp) /*添加指定信息*/
{
struct person *p1,*p2,*current;
char n[20],u[20],t[10];
printf("input the information,name,unit and telephone number:\n");
scanf("%s%s%s",n,u,t);
p2=(struct person *)malloc(LEN);
strcpy(p2->name,n);
strcpy(p2->unit,u);
strcpy(p2->tel,t);
current=*headp;
while(strcmp(current->name,n)<0&¤t->next!=NULL)
{
p1=current;
current=current->next;
}

if(strcmp(current->name,n)>=0) /*插入点不是链尾*/
{
if(current==*headp) /*在第一个结点之前插入*/
{
p2->next=*headp;
*headp=p2;
}
else /*在中间插入*/
{
p2->next=current;
p1->next=p2;
}
}
else
{ /*在链尾结点之后插入*/
p2->next=NULL;
current->next=p2;
}
return(p2);
}

void save(char *filename,int n,struct person *p) /*把信息保存到文件*/
{
FILE *fp;
int i;
struct person *pi;

if((fp=fopen(filename,"wb"))==NULL)
{
printf("Can't open the file.\n");
exit(-1);
}

for(pi=p,i=0;i<num;i++,pi=pi->next) /*从链头开始逐一读入到内存*/
fwrite(pi,SIZ,1,fp);
fclose(fp);
}

void readfile(char *filename) /*把文件读入内存并显示文件信息*/
{
FILE *fp;
struct person *p,*tail,*headp;
long len;
int i,n;

if((fp=fopen(filename,"rb"))==NULL)
{
printf("Can't open the file.\n");
exit(-1);
}
fseek(fp,0L,SEEK_END); /*n为文件中录入联系人的个数*/
len=(int)ftell(fp);
n=len/SIZ;
rewind(fp);
i=0;
headp=NULL;
p=(struct person *)malloc(LEN);
fread(p,SIZ,1,fp);
p->next=headp;
headp=p;
tail=p;
while(i<n-1)
{
p=(struct person *)malloc(LEN);
fread(p,SIZ,1,fp);
p->next=NULL;
tail->next=p;
tail=p;
i++;
}
p=headp; /*显示从文件读出的信息*/
while(p!=NULL)
{
printf("%-20s %-20s %-20s\n",p->name,p->unit,p->tel);
p=p->next;
}
fclose(fp);
}

void file(char *source,char *target)
{
FILE *fs,*ft;
char c;

if((fs=fopen(source,"rb"))==NULL) /*打开源文件*/
{
printf("Can't open %s.\n",source);
exit(-1);
}
if((ft=fopen(target,"wb"))==NULL) /*打开目标文件*/
{
printf("Can't open %s.\n",target);
exit(-1);
}
while(!feof(fs))
{
c=getc(fs);
putc(c,ft);
}
fclose(fs);
fclose(ft);
}

void main()
{
int op,state,flag=IN;
struct person *pi;
char fname[20],target[20],source[20];

while(flag==IN)
{
printf("menu1:Record.\n"
"menu2:Sort.\n"
"menu3:Search information of a certain person.\n"
"menu4:Delete information of a certain person.\n"
"menu5:Add new infomation.\n"
"menu6:Save.\n"
"menu7:Read file into memory and Show the information.\n"
"menu8:Backup.\n"
"menu9:Exit!\n"
"please choose an item(1~9).\n");
fflush(stdin); /*吸收回车符*/
scanf("%d",&op);
switch(op)
{
case 1:head=creat();break;
case 2:sort(head,num);break;
case 3:
state=1; /*标记多次查询*/
while(state)
{
pi=search(head,num);
printf("%-20s %-20s %-20s\n",pi->name,pi->unit,pi->tel);
state=choice();
}
break;
case 4:
state=1; /*标记多次删除*/
while(state){
del(&head);
state=choice();
num--;
}
break;
case 5:
state=1; /*标记多次添加*/
while(state)
{
add(&head);
state=choice();
num++;
}
break;
case 6:
printf("input the name of file:\n");
scanf("%s",fname);
save(fname,num,head);
break;
case 7:
printf("input the name of file:\n");
scanf("%s",fname);
readfile(fname);break;
case 8:
printf("input the source file's name and target file's name.\n");
scanf("%s%s",source,target);
file(source,target);
break;
case 9:
printf("Exit!");
flag=OUT;
break;
default:
flag=IN; /*标记非法命令*/
printf("illegal orders.\n");

}
}
}

‘捌’ 用C语言如何编写一个石头剪子布的程序

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

void main()

{

int com,user;

char c;

srand((unsigned)time(NULL)); //初始化随机数,如果没有这条语句,每次运行电脑产生的随机数序列都是一样的

printf("进入游戏 ");

do{

printf("请出拳(1.剪刀、2.石头、3.布):");

scanf("%d",&user);

com=rand()%3+1; //产生1-3范围内的随机数

printf("电脑出%s ",com==1?"剪刀":com==2?"石头":"布");

switch(com-user) //用电脑产生的数和用户输入的数的差值来判断胜负

{

case 0:

printf("平手 ");

break;

case 1:

case -2:

printf("电脑赢了 ");

break;

case -1:

case 2:

printf("你赢了 ");

}

printf("继续游戏按Y键、其它键退出");

getchar();

c=getchar();

}while(c=='y' || c=='Y');

printf("已经退出游戏");

}

(8)编程格子布扩展阅读

C++编程: 石头剪子布

#include<cstdio>

#include<iostream>

using namespace std;

int main()

{

int n;

char a[10],b[10];

cin>>n;

int c[n+3];

for(int i=1;i<=n;i++)

{

cin>>a>>b;

if(a[0]=='R')

{

if(b[0]=='R')

{

c[i]=0;

}

if(b[0]=='S')

{

c[i]=1;

}

if(b[0]=='P')

{

c[i]=2;

}

}

else if(a[0]=='S')

{

if(b[0]=='R')

{

c[i]=2;

}

if(b[0]=='S')

{

c[i]=0;

}

if(b[0]=='P')

{

c[i]=1;

}

}

else if(a[0]=='P')

{

if(b[0]=='R')

{

c[i]=1;

}

if(b[0]=='S')

{

c[i]=2;

}

if(b[0]=='P')

{

c[i]=0;

}

}

}

for(int i=1;i<=n;i++)

switch(c[i])

{

case 0:

{

printf("Tie ");break;

}

case 1:

{

printf("Player1 ");break;

}

case 2:

{

printf("Player2 ");break;

}

}

return 0;

}

热点内容
怎么访问暗网 发布:2025-01-23 07:02:04 浏览:665
无线配置代理选什么 发布:2025-01-23 06:52:54 浏览:824
c程序汇编程序 发布:2025-01-23 06:49:42 浏览:840
cmd命令与linux命令 发布:2025-01-23 06:40:26 浏览:806
linux用户目录权限 发布:2025-01-23 06:37:49 浏览:233
学计算机避免编程 发布:2025-01-23 06:29:09 浏览:661
易语言机器人源码 发布:2025-01-23 06:24:03 浏览:320
汇编语言的编译可以叫解释吗 发布:2025-01-23 06:23:22 浏览:35
tomcat编译后的文件 发布:2025-01-23 06:05:46 浏览:254
惠普畅游人14是什么配置表 发布:2025-01-23 05:57:39 浏览:296