C语言简单c语言编写分段函数数问题 要求可以多次输出

C语言 分段涵数, C语言 分段涵数 #inclu供|欢饩
C语言 分段涵数 #inclu供|欢饩溶辰蓝镄ǚde&stdlib.h&#include&stdio.h&int main(void){
double x,y;
scanf(&%lf&,&x);
printf(&(%f)=%.0f\n&,x,y);
system(&pause&);
return 0;}想让它就输出结果,但实际输出为&&0.000000&=结果&请问怎么该,最好再告下我为什么,不胜感谢.满意有加分.问题补充:
还是不行啊。。。 WANGISHERO C语言 分段涵数
错误原因是
if语句中的
是把0付给X的意思,而不是相等的关系,写供|欢饩溶辰蓝镄ǚこ x==0
#include&stdlib.h&#include&stdi供|欢饩溶辰蓝镄ǚo.h&int main(void){
double x,y;
scanf(&%lf&,&x);
printf(&%.0f\n&,y);//输入输出的语句没弄懂?
system(&pause&);
return 0;}
double x,y;改成//看了你的程序,y的值只要用整形就okif(x=0) 改成if(x==0)//x=0是表示把0赋给x,x==0是表示x等于0printf(&(%f)=%.0f\n&,x,y);改成printf(&(%f)=%d\n&,x,y);//所以输出的时候用%d
if(x=0)这句错了,改为 if(x==0)
错误原因是
if语句中的
而不是相等的关系
应该写成 x==0
就可以了 顺便说下 您要注意您的书写风格 有点乱设有分段函数&&&写出X&Y的值&C语言在线考试
14-12-03 &匿名提问SS_OPTION_WORKS_WITH_CODE_REUSE |
SS_OPTION_EXCEPTION_FREE_CODE |
SS_OPTION_USE_TLC_WITH_ACCELERATOR);
static void mdlInitializeSampleTimes(SimStruct *S)
ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
ssSetModelReferenceSampleTimeDefaultInheritance(S);
static void mdlOutputs(SimStruct *S, int_T tid)
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
= ssGetOutputPortRealSignal(S,0);
width = ssGetOutputPortWidth(S,0);
for (i=0; i& i++)
*y++ = 2.0 *(*uPtrs[i]);
static void mdlTerminate(SimStruct *S)
#ifdef MATLAB_MEX_FILE
/* Is this file being compiled as a MEX-file? */
#include &simulink.c&
/* MEX-file interface mechanism */
#include &cg_sfun.h&
/* Code generation registration function */
这个实例包括3部分:宏定义和头文件;回调方法的实现;Simulink (或 Real-Time Workshop)接口。
宏定义和头文件
示例程序中包含两个宏定义:
#define S_FUNCTION_NAME timestwo
#define S_FUNCTION_LEVEL 2
第一个指定S-function的名字,第二个指示该S-function是Level-2格式的。 然后是包含头文件&simstruc.h&,在其中定义了SimStruct数据结构和MATLAB应用程序接口(API)函数。SimStruct是Simulink用于保持S-function信息的数据结构,&simstruc.h&中还有用于MEX文件设置或获取SimStruct属性值的宏定义。
回调方法的实现
mdlInitializeSizes:
Simulink调用mdlInitializeSizes方法查询S-function模块的输入输出端口数,端口容量,以及S-function所需的其他对象(如,状态个数等)。
Timestwo实现的mdlInitializeSizes方法指定了下面信息
● 零参数:
意味着S-function对话框的参数框必须为空。否则,Simulink将报告参数不匹配。 ● 一个输入和一个输出端口:
输入输出端口的宽度可以动态变化。Simulink将把所有输入信号乘以2作为输出信号的结果。注意,在这种情况下(一个输入一个输出端口),Simulink对S-function宽度的默认处理是输入和输出宽度相等。
● 一个采样时间
例子timestwo在mdlInitializeSampleTimes中指定实际的采样时间。 ● 代码无异常处理
指定无异常处理的代码可以加速S-function的执行。作这项指定必须谨慎。通常,如果用户S-function与MATLAB没有交互,指定无异常处理的代码是安全的。
mdlInitializeSampleTimes:
Simulink调用mdlInitializeSampleTimes设置S-function的采样时间。每当timestwo模块的前驱模块执行一次,timestwo模块就执行一次,所以timestwo模块采用继承的采样时间。
mdlOutputs
Simulink在每个时间步调用mdlOutputs计算模块的输出。Timestwo模块的mdlOutputs方法实现了将输入信号乘以2,将结果写到输出信号。
Timestwo模块的mdlOutputs方法使用了SimStruct中的宏:
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
来实现对输入信号的访问。这个宏返回一个指针向量,必须通过*uPtrs[i]来访问。 Timestwo模块的mdlOutputs方法还使用了
real_T *y = ssGetOutputPortRealSignal(S,0);
来访问输出信号。这个宏返回一个包含模块输出的数组。
S-function使用
int_T width = ssGetOutputPortWidth(S,0);
来得到通过该模块的信号宽度。最后S-function循环通过输入得到输出。 mdlTerminate
执行仿真结束最后的任务。这是一个强制的S-function过程。不过由于timestwo模块不需要任何终止操作,所以其函数为空。
Simulink/Real-Time Workshop 接口
在S-function的最后,下面的特定代码将该例子关联到Simulink或者Real-Time Workshop:
#ifdef MATLAB_MEX_FILE
#include &simulink.c&
#include &cg_sfun.h&
生成timestwo实例
在命令行键入:mex timestwo.c
mex命令将把timestwo.c编译、链接为一个可由Simulink动态加载执行的模块。这是一个动态链接库文件,在Window中,是个dll文件。
4.5 C MEX S-functions模板
Simulink提供了C MEX S-functions模板。&matlabroot&/simulink/src/sfuntmpl_basic.c提供了C MEX S-functions的常用功能方法。&matlabroot&/simulink/src/sfuntmpl_doc.c则描述了C MEX S-functions的全部实现方法。
S-function源代码文件的要求
用户S-function要访问SimStruct结构,则必须在文件头部具备下列宏定义和头文件:
#define S_FUNCTION_NAME your_sfunction_name_here
#define S_FUNCTION_LEVEL 2
#include &simstruc.h&
这里your_sfunction_name_here指得是用户S-function的模块名。这些声明使S-function能访问SimStruct结构。
当被编译为MEX文件时,matlabroot/simulink/include/simstruc.h将包括下面头文件:
Header File
Description
matlabroot/extern/include/tmwtypes.h
General data types, e.g., real_T
matlabroot/extern/include/mex.h
MATLAB MEX-file API routines
matlabroot/extern/include/matrix.h
MATLAB MEX-file API routines
当被编译为MEX文件时,matlabroot/simulink/include/simstruc.h将包括下面头文件:
Header File
Description
matlabroot/extern/include/tmwtypes.h
General types, e.g., real_T
matlabroot/rtw/c/libsrc/rt_matrx.h
Macros for MATLAB API routines
用户C MEX S-function文件尾部必须包括下面声明:
#ifdef MATLAB_MEX_FILE
/* Is this being compiled as MEX-file? */
#include &simulink.c&
/* MEX-file interface mechanism */
#include &cg_sfun.h&
/* Code generation registration func */
这些声明确保针对用户具体应用选择适当的代码:
● 当被编译为MEX文件的时候,simulink.c文件将被包含。
欢迎转载:
推荐:    

我要回帖

更多关于 c语言计算分段函数 的文章

 

随机推荐