当前位置: 首页 > 编程日记 > 正文

java用if语句调用方法_J2SE中main函数中的if语句想要调用另一个类的方法怎么能实现?...

338b09cee932720224ea84e855210cd5.png

日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现。在C++程序的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代码调用。

一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main 函数”,也就是“主函数”。比如有个“做菜”程序,那么“做菜”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。

[编辑本段]

main函数的参数

C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程

序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用

的是有参函数,则参数在调用时传递。

main()

{

...

y1=f1(x1,x2);

...

}

f1(int a,int b)

{

....

Y2=f2(x3,x4);

....

}

f2(int m,int n)

{

....

.....

}

在前面课程的学习中,对main()函数始终作为主调函数处理,也就是说,允许main()调用

其它函数并传递参数。事实上,main()函数既可以是无参函数,也可以是有参的函数。对于有

参的形式来说,就需要向其传递参数。但是其它任何函数均不能调用main()函数。当然也同样

无法向main()函数传递,只能由程序之外传递而来。这个具体的问题怎样解决呢?

我们先看一下main()函数的带参的形式:

main(argc,argv)

int argc,char *argv[];

{

.....

}

从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件,这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由

系统在启动运行时传递参数了。

在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:

命令参数1参数2....参数n¿

此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。

命令行与main()函数的参数存在如下的关系:

设命令行为:program str1 str2 str3 str4 str5

其中program为文件名,也就是一个由program.c经编译、链接后生成的可执行文件 program.exe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个,指针数组的大小由参数 argc的值决定,即为char*argv[6],指针数组的取值情况如图6-15所示。

数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行的开始接收的,首先接收到的是命令,其后

才是参数。

下面用实例来说明带参数的main()函数的正确使用。

[例6-29] 利用图形库函数绘制一个变化的环。它是把一个半径为R 1的圆周分成n份,然

后以每个等分点为圆心,以R s为半径画n个圆(关于作图的详细理论本教材第9章第1节作了专

门介绍,这里只作简单分析)。利用m a i n ( )函数的带参数形式,我们可以从键盘以命令行的方

式输入R 1和R s及屏幕的背景色。

#include /*包含图形库函数的头文件* /

#include

#define pi 4.1415926

m a i n ( a r g c , a r g v )

int argc;char *argv[]; /* 定义带参数的m a i n ( ) * /

{

int x,y,r1,rs,color;

double a;

int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"..\\bgi ")启;/动*图形工作方式*/

r1=atoi(argv[1]);/*计算基础圆半径*/

rs=atoi(argv[2]);/*计算同心圆半径*/

color=atoi(argv[3]);/*背景色*/

cleardevice();/*清除图形屏幕*/

setbkcolor(color);/*设置背景色*/

setcolor(4);/*设置图形显示颜色*/

for(a=0;a<=2*pi;a+=pi/18)/*绘制同心圆*/

{

x=r1*cos(a)+320;

y=r1*sin(a)+240;

circle(x,y,rs);/*以圆心坐标为x、y,半径为rs画圆*/

}

getch();/*等待按键继续*/

close graph();/*关闭图形工作方式*/

}

若程序名为L6-29.c,经编译、连结生成可执行文件L6-29.exe。在操作系统的环境下运行

程序,命令行方式为:

l6-29 40 20 3

则命令行与main()函数的参数有如图6-16所示的关系

图6-16中,argv[0]是程序名,argv[1]是r1的值,

argv[2]是rs的值,argv[3]是屏幕的背景色。

由于指针数组均存放字符串,所需的圆半径及背景

色彩通过atoi()函数转换为整型。

通过带参数的main()函数,我们可以为自己的程序设置口令,在运行程序的命令行中给出所需的口令,正确则继续,否则退出。程序图形输出如图6-17所示。

[例6-30]将上述程序作修改,在程序的入口处添置密码,若给定密码正确,则显示图

形。

#include

#include

#define pi 4.1415926

m a i n ( a r g c , a r g v )

int argc;char *argv[];

{

int x,y,r1,rs,color;

double a;

int gdriver=DETECT,gmode;

if (strcmp(argv[1],"pass")!=0) 设/置* 口令的比较*/

{ printf("password error!\n");

e x i t ( 0 ) ;

}

initgraph(&gdriver,&gmode,"..\\bgi ");

r1=atoi(argv[2]);

rs=atoi(argv[3]);

color=atoi(argv[4]);

cleardevice();

setbkcolor(color);

setcolor(4);

for(a=0;a<=2*pi;a+=pi/18)

{

x=r1*cos(a)+320;

y=r1*sin(a)+240;

circle(x,y,rs);

}

getch();

closegraph();

}

在操作系统的环境下运行程序, 命令行中增加口令“p a s s”,命令行方式为:

l6-30 pass 20 40 3

指针数组的存储字符串如图6-18所示。

若给定字符串argv[1]的值是pass,则程序正确运行,否则程序退出。口令正确的情况下,显示的图形为图6-17中的一个。

[编辑本段]

函数的分类

1、从用户使用的角度看,函数有两种:

(1)、标准函数,即库函数。这是由系统提供的。

(2)、用户自定义的函数。可以解决用户的专门需要。

2、从函数的形势看,函数分两类:

(1)无参函数。printstar和print_message就是无参函数。在调用无参函数时,主调函数并不将数据传送给被调用函数,一般用来执行指定的一组操作。

(2)有参函数。在调用函数时,在主调函数和被调用函数之间有数据传递。也就是说,主调函数可以将数据传递给被调用函数使用,被调用函数中的数据也可以带回来供主调函数使用。

[编辑本段]

函数定义的一般形式

1、无参函数的定义形式

类型标示符 函数名()

{声明部分

语句

}

2、有参函数定义的一般形式

类型标示符 函数名 (形式参数列表)

{声明部分

语句

}

3、可以有“空函数”

它的形式为

类型说明符 函数名()

{ }

例如:

dummy(){}

4、对形参的声明的传统方式

在老版本c语言中,对形参类型的声明是放在函数定义的第二行,也就是不再第一行的括号内指定形参的类型,而在括号外单独指定,例如上面定义的max函数可以写成一下形式:

int max (x,y)/*指定形参x,y*/

int x,y;/*对形参指定类型*/

{int z;

z=x>y?x:y;

return(z);

}

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

相关文章:

Creating Apps With Material Design —— Defining Custom Animations

转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android&#xff0c;时间仓促&#xff0c;有翻译问题请留言指出。谢谢定义动画在材料设计动画让用户与您的应用程序进行交互时&#xff0c;为他们的行为提供反馈。并提供可视化的连续性。该材料的主题提供了一些默…

怎么剪切一段音乐其中的片段

剪切音乐想必大家都不陌生&#xff0c;在各种手机铃声中我们都需要用到它来制作个性有趣的来电铃声&#xff0c;那么大家知道有什么简便的方法使用吗&#xff1f;小编有一个办法就是利用剪切工具的功能就可以完成了&#xff0c;我们就不用不用一点一点的设置音频片段了&#xf…

无需重启, 使用Xephyr调试awesome

每次改了awesome总是心里忐忑的重新启动awesome 稍有不慎就会导致awesome加载失败 而使用默认配置加载. 对于改了一大堆快捷键绑定的人来说, 默认配置简直没法用了... 有时候还会直接起不来...需要用到killall awesome才能退回到lightdm的登录界面偶然发现xephyr这个工具 可以虚…

java程序员遇到的问题_Java 程序员平时最常遇到的故障:系统OOM (一)

作为 Java 程序员而言&#xff0c;先不考虑自己系统外部依赖的缓存、消息队列、数据库等等东西挂掉&#xff0c;就我们自己系统本身而言&#xff0c;最常见的挂掉的原因是什么&#xff1f;其实就是系统OOM&#xff0c;也就是所谓的内存溢出&#xff01;什么是内存溢出&#xff…

java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

http://langgufu.iteye.com/blog/2107023 java处理大文件&#xff0c;一般用BufferedReader,BufferedInputStream这类带缓冲的Io类&#xff0c;不过如果文件超大的话&#xff0c;更快的方式是采用MappedByteBuffer。 MappedByteBuffer是java nio引入的文件内存映射方案&#xf…

HTML5 Canvas编写五彩连珠(3):设计

在看了几篇Canvas相关的文章后&#xff0c;发现前两节的代码实现还是有问题&#xff0c;因为知道的少&#xff0c;所以只能在自己已知的知识上做实现。不过还好&#xff0c;这是一个发现的过程&#xff0c;也是一个纠错和完善的过程。我第一次尝试一边学习一遍写博客&#xff0…

SQL面试宝典一:

1.什么是sql Injection&#xff08;sql 注入&#xff09;&#xff1f;如何防止&#xff1f; 答&#xff1a;是一种恶意将sql代码添加到输入参数中&#xff0c;传递到sql服务器解析并执行的一种攻击手法。 防止&#xff1a;1.对用户的输入进行校验&#xff0c;可以通过正则表达…

java注解的执行顺序_深入理解Spring的@Order注解和Ordered接口

前言Spring的Order注解或者Ordered接口大家都知道是控制顺序的&#xff0c;那么它们到底是控制什么顺序的&#xff1f;是控制Bean的注入顺序&#xff0c;还是Bean的实例化顺序&#xff0c;还是Bean的执行顺序呢&#xff1f;那么我们先直接给出结论再来验证结论。结论&#xff1…

数据驱动安全需三大核心新技术

要做到数据驱动安全&#xff0c;齐向东认为需要三大核心技术。第一个核心技术是大数据采集器&#xff0c;第二个是大数据引擎&#xff0c;第三个是机器学习挖掘、重要安全问题定位准确。转载于:https://www.cnblogs.com/1992825-Amelia/p/4854220.html

[转]BI 问答

http://blog.bridata.ca/?cat16 前几天Post 了一些BI 的面试问题&#xff0c;感兴趣的人很多&#xff0c;有很多人问我答案以此来评估一下自己的知识水平。坦白地说我没有写在纸上的具体答案&#xff0c;事实上每个问题也没有具体和精确的答案&#xff0c;所谓面试就不是笔试&…

没有学不会的C++:用户自定义的隐式类型转换

C 中的类型转换包含内建类型的转换和用户自定义类型的转换&#xff0c;而这两者都又可分为隐式转换和显示转换&#xff0c;所以一共有如下四象限表格中的 A、B、C、D 四种情况 隐式转换显示转换(casting)内建类型转换 (int, float ...)AB用户自定义类型转换(类 vs 类; 类 vs 内…

python scrapy菜鸟教程_scrapy学习笔记(一)快速入门

安装ScrapyScrapy是一个高级的Python爬虫框架&#xff0c;它不仅包含了爬虫的特性&#xff0c;还可以方便的将爬虫数据保存到csv、json等文件中。首先我们安装Scrapy。pip install scrapy在Windows上安装时可能会出现错误&#xff0c;提示找不到Microsoft Visual C。这时候我们…

执行eclipse,迅速failed to create the java virtual machine。

它们必须在一排&#xff0c;否则会出现The Eclipse executable launcher was unable to locate its companion shared library的错误 打开eclipse文件夹下的eclipse.ini文件。改动–launcher.XXMaxPermSize属性&#xff0c;当中此属性有两处 -startup plugins/org.eclipse.equi…

vue打包后图片找不到情况

打包之前需要修改如下配置文件&#xff1a; 配置文件一&#xff1a;build>>>utils.js (修改publicPath:"../../" , 这样写是处理打包后找不到静态文件&#xff08;图片路径失效&#xff09;的问题) 配置文件二&#xff1a;config>>>index.js(修改a…

UBUNTU安装SSH和xrdp

一、安装SSH&#xff0c;通过PUTTY访问 命令&#xff1a;sudo apt-get install ssh 查看&#xff1a;netstat -l 二、安装xrdp&#xff0c;通过远程桌面访问 命令&#xff1a;sudo apt-get install xrdp 开启远程桌面访问权限 系统-->首选项-->remote desktop 三、去掉远…

python中opencv中inrange用法_python-opencv中的cv2.inRange函数

本次目标是将一副图像从rgb颜色空间转换到hsv颜色空间&#xff0c;颜色去除白色背景部分具体就调用了cv2的两个函数&#xff0c;一个是rgb转hsv的函数具体用法hsv cv2.cvtColor(rgb_image, cv2.COLOR_BGR2HSV)然后利用cv2.inRange函数设阈值&#xff0c;去除背景部分mask cv2…

[转]C++11 随机数学习

相对于C 11之前的随机数生成器来说&#xff0c;C11的随机数生成器是复杂了很多。这是因为相对于之前的只需srand、rand这两函数即可获取随机数来说&#xff0c;C11提供了太多的选择和东西。 随机数生成算法&#xff1a; 随机数生成算法有很多&#xff0c;C11之前的C/C只…

Linux Shell ssh登录脚本

Linux 登陆服务器敲命令太多,某时候确实不便,所以就用shell写了一个 我的blog地址: http://www.cnblogs.com/caoguo 一.说明 支持秘密和密钥两种格式用户名和密码都是写文件的,明文保存二.配置 密码文件配置:序号:IP:端口:用户:密码:说明 1:192.168.88.128:22:root:toor:虚拟机…

C# 温故而知新:Stream篇(二)

C# 温故而知新&#xff1a;Stream篇&#xff08;二&#xff09; TextReader 和StreamReader 目录&#xff1a; 为什么要介绍 TextReader&#xff1f; TextReader的常用属性和方法 TextReader 示例 从StreamReader想到多态 简单介绍下Encoding 编码 StreamReader 的定义及作用 S…

usaco Pollutant Control

第一问是求最小割。第二问求最小割中集合中边最少的集合的大小。 第三问求集合中边最少且字典序最小的边的下标。 第一问直接求最大流就能解&#xff0c;第二问将原来的边的容量都改为1&#xff0c;求出来的最大流就是元素最少的一个最小割的大小。 将容量都改为1之后&#xff…

洛谷P4705 玩游戏(生成函数+多项式运算)

题面 传送门 题解 妈呀这辣鸡题目调了我整整三天……最后发现竟然是因为分治\(NTT\)之后的多项式长度不是\(2\)的幂导致把多项式的值存下来的时候发生了一些玄学错误……玄学到了我\(WA\)的点全都是\(WA\)在\(2\)的幂次行里…… 看到这种题目二话不说先推倒 \[ \begin{aligned}…

blast程序 介绍 简介

每次找都挺麻烦&#xff0c;又记不住&#xff0c;于是抄下来&#xff1a; blastp:将待查询的蛋白质序列及其互补序列一起对蛋白质序列数据库进行查询&#xff1b;blastn:将待查询的核酸序列及其互补序列一起对核酸序列数据库进行查询&#xff1b;blastx:先将待查询的核酸序列按…

java泛型的实现和原理_java 泛型实现原理

泛型思想最早在C语言的模板(Templates)中产生&#xff0c;Java后来也借用了这种思想。虽然思想一致&#xff0c;但是他们存在着本质性的不同。C中的模板是真正意义上的泛型&#xff0c;在编译时就将不同模板类型参数编译成对应不同的目标代码&#xff0c;List和List是两种不同的…

java out of range_关于Parameter index out of range求解决办法

程序&#xff1a;提示参数越界&#xff0c;但我实在不知道我到底哪里越界了。明明该我那样写的嘛。求高手帮我看看&#xff0c;现在我是弄得我有气无力了&#xff01;要死了。在去死亡的路上等着你帮帮我&#xff01;Document : replyokCreated on : 2008-9-29, 6:05:31Autho…

FineReport——权限分配以及自定义首页

权限分配可以有两种方法&#xff0c;第一种方法是根据部门职位分配权限&#xff0c;第二种是根据角色分配权限&#xff1b; FR自带有三个JQ对象&#xff0c;用以保存用户名参数/角色参数/部门参数——$fr_username/$fr_authority/$fr_userposition 根据部门职位&#xff1a; 以…

去掉[]中的英文(正则表达式)C#

这个问题本来是以为信息科技大学的老师问蒋委员长的问题,蒋委员长用正则表达式完成了这个问题 1,问题的情况有哪些? abc[abc]abc,abc[-abc]abc,abc[一abc]abc,abc[一abc一]abc等等. 2,问题的解决目标? 写一个通用的方法来完成提出的问题. 3,解决方案 -->正则表达式方法 其…

Event Loop

事件队列 Javascript是单线程&#xff0c;单线程就意味着所有任务需要排队。然后会将所有任务分成两类&#xff1a;同步任务和异步任务&#xff01;同步任务&#xff1a;在主线程上执行的任务&#xff0c;只有前一个任务执行完成&#xff0c;才会执行后一个&#xff01;异步任务…

java makefile jar包_java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...

学习makefile教程&#xff0c;ubuntu中文网1.写一个简单的java项目&#xff0c;不需要外部jar,用的简单的importjava.util.ArrayList;是可以从CLASSPATH环境变量中找到的&#xff0c;在javac阶段不需要特殊添加-cphellocatHellocat.javaimportjava.util.ArrayList;importjava.u…

Python字符编码详解

Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的字符编码的特点&#xff0c;并介绍了在python2.x中如何与编码问题作战 &#xff1a;&#xff09; 请注意本文关于Python的内容仅适用于2.x&a…

《编写有效用例》读书笔记1

第一章 引言 本章主要介绍用例是什么样子的&#xff0c;并描述为什么不同的项目组需要采用不同 的用例编写风格以及在什么地方使用用例有利于做需求收集工作&#xff0c;也让我们了解 在编写用例之前&#xff0c;需要做哪些准备工作。 用例是代表系统中各个项目相关人员之间就系…