帮我写一个简单的C程序。

帮我写一个简单的C程序。,第1张

#include"iostreamh"

void displayGreeting() {

cout<<"Hello World"<<endl;

}

char askIfFinished(){

char a;

cin>>a;

return a;

}

void main(){

while(true){

displayGreeting();

char c=askIfFinished();

if(c=='n'||c=='N')

break;

}

}

C语言程序如下:

#include <stdioh>

#include <mathh>

 

/ 三维向量结构 /

typedef struct Point

{

    double i;      / X 轴分量 /

    double j;      / Y 轴分量 /

    double k;      / Z 轴分量 /

} Point;

 

/ 计算两点之间的空间距离 /

double distance(Point p1, Point p2);

/ 计算向量与数的乘积 /

Point product1(Point p, double n);

/ 计算两个向量的数量积 /

double product2(Point p1, Point p2);

 

Point ZERO;

 

void main()

{

    Point p1, p2;

    Point p;

    double s;

double n;

 

    ZEROi = 0;

    ZEROj = 0;

    ZEROk = 0;

 

    printf("请输入向量1的值(i, j, k):");

    scanf("%lf,%lf,%lf", &p1i, &p1j, &p1k);

    printf("请输入向量2的值(i, j, k):");

    scanf("%lf,%lf,%lf", &p2i, &p2j, &p2k);

printf("向量系数(n):");

scanf("%lf", &n);

 

    p = product1(p1, n);

    printf("向量(%lf, %lf, %lf) × %lf = (%lf, %lf, %lf)\n", p1i, p1j, p1k, n, pi, pj, pk);

 

    s = product2(p1, p2);

    printf("向量(%lf, %lf, %lf) × 向量(%lf, %lf, %lf) =  %lf\n", p1i, p1j, p1k, p2i, p2j, p2k, s);

 

/ 计算两点之间的空间距离 /

double distance(Point p1, Point p2)

{

    return sqrt(pow(p1i - p2i, 2) + pow(p1j - p2j, 2) + pow(p1k - p2k, 2));

}

/ 计算向量与数的乘积 /

Point product1(Point p, double n)

{

Point temp;

tempi = pi  n;

tempj = pj  n;

tempk = pk  n;

return temp;

}

/ 计算两个向量的数量积 /

double product2(Point p1, Point p2)

{

double a, b, cos, p;

 

    a = distance(ZERO, p1);

    b = distance(ZERO, p2);

    

    cos = (p1i  p2i + p1j  p2j + p1k  p2k) / sqrt(p1i  p1i + p1j  p1j + p1k  p1k) / sqrt(p2i  p2i + p2j  p2j + p2k  p2k); 

    

    p = a  b  cos;

 

    return p;

}

运行测试:

#include <stdioh>

void main(){

int i;

scanf("%d",&i);

printf("用户输入的是%d\n它的八进制是 %o\n它的十六进制是%x",i,i,i);

}

c printfz这个函数提供了一些输出的格式

以下是我搜集的 希望可以帮到你

=============================================

printf的格式控制的完整格式:

% - 0 mn l或h 格式字符

下面对组成格式说明的各项加以说明:

①%:表示格式说明的起始符号,不可缺少。

②-:有-表示左对齐输出,如省略表示右对齐输出。

③0:有0表示指定空位填0,如省略表示指定空位不填。

④mn:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。

⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

---------------------------------------

格式字符

格式字符用以指定输出项的数据类型和输出格式。

①d格式:用来输出十进制整数。有以下几种用法:

%d:按整型数据的实际长度输出。

%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

%ld:输出长整型数据。

②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。

例:

main()

{ int a = -1;

printf("%d, %o", a, a);

}

运行结果:-1,177777

程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。

③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。

④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。

⑤c格式:输出一个字符。

⑥s格式:用来输出一个串。有几中用法

%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。

%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。

%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

%mns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

%-mns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。

⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:

%f:不指定宽度,整数部分全部输出并输出6位小数。

%mnf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。

%-mnf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。

⑧e格式:以指数形式输出实数。可用以下形式:

%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

%mne和%-mne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。

---------------------------------------

关于printf函数的进一步说明:

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:

printf("%f%%", 10/3);

输出0333333%。

---------------------------------------

对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位.

对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位.

######################################拾遗########################################

由高手指点

对于mn的格式还可以用如下方法表示(例)

char ch[20];

printf("%s\n",m,n,ch);

前边的定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。

--------------------------------------------------------------------------------

今天(0669)又看到一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:

int slen;

printf("hello world%n", &slen);

执行后变量被赋值为11。

如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求…

      考虑了一阵子后,就想到了qsort上qsort的函数原型:

void qsort( void base, size_t num, size_t width, int (__cdecl compare )(const void elem1, const void elem2 ) );

      快排时,只要自己实现相应数据类型的比较函数cmpare就可以了如果比较int型时,一个典型的compare函数如下:

那么,就是说可以利用void void 意指未指定类型,也可以理解为任意类型。其他类型的指针可以直接赋值给void 变量,但是void 变量需要强制类型转换为其它指针类型。这个相信大家都知道。那么下面以一个简单的题目为例,来探讨如何在C语言中实现模板函数。

      方法1: 利用void

    在看下面的源程序之前,需要了解几点。首先,在32位平台上,任何类型的指针所占的字节都是4个字节,因为32位机器虚拟内存一般为4G,即2的32次方,只要32位即4个字节就可以足够寻址,sizeof(void )=4; 其次,虽然各种不同类型的指针所占的空间都为4个字节,但是不同类型的指针所指的空间的字节数却不同(这一点尤为重要,下面的程序我在开始没有调通就因为这点意识不强)。所以,如果你将一个指针强制转换为另一个类型的指针,指针本身所占的字节是不变的,但是,如果对这个指针进行运算,比如 p,p++,p-=1等一般都是不同的。 再次,函数指针应该了解下,这里不多说。 最后,因为Sandy跟我说,C++开始的时候模板的实现其实就是利用宏替换,在编译的时候确定类型。所以,为了方便,类型也用了预编译指令#define。

<span>#include "stdioh"</span>

<span>#include "stdlibh"</span>

<span>//typedef int T;  //或者下面的也可以</span>

<span>#define  T int</span>

//这个FindMin是Sandy写的felix021也写了个,差不多的就不贴出来的

void FindMin(const void  arr,int arr_size,int arrmembersize,int index,

int (cmp)(const void ,const void b)){

int i;

index=0;

char p=(char )arr;

char tmp=p;

for (i=1;i<arr_size ;i++){

if (cmp(tmp,p)>0){

tmp=p;

}

p+=arrmembersize;

}

(index)=((int)(tmp-arr))/arrmembersize;

}

/</span>

可以把指针看作是char ,如果转换为int ,那下面的位移就不正确了</span>

index<span>=</span>i<span>;</span>

<span>}</span>

<span>}</span>

<span>return</span> index<span>;</span>

<span>}</span>

<span>int</span> result<span>;</span><span>//result保存的是最小值索引</span>

result<span>=</span>FindMin<span>(</span>arr,<span>12</span>,

c语言是函数语言,所以画图也离不开各种图形函数:下面举几个简单的例子:

=======================================

1/学用circle画圆形/

#include "graphicsh"

main()

{int driver,mode,i;

float j=1,k=1;

driver=VGA;mode=VGAHI;

initgraph(&driver,&mode,"");

setbkcolor(YELLOW);

for(i=0;i<=25;i++)

{

setcolor(8);

circle(310,250,k);

k=k+j;

j=j+03;

}

getch();

}

2//line画直线

#include "graphicsh"

main()

{int driver,mode,i;

float x0,y0,y1,x1;

float j=12,k;

driver=VGA;mode=VGAHI;

initgraph(&driver,&mode,"");

setbkcolor(GREEN);

x0=263;y0=263;y1=275;x1=275;

for(i=0;i<=18;i++)

{

setcolor(5);

line(x0,y0,x0,y1);

x0=x0-5;

y0=y0-5;

x1=x1+5;

y1=y1+5;

j=j+10;

}

x0=263;y1=275;y0=263;

for(i=0;i<=20;i++)

{

setcolor(5);

line(x0,y0,x0,y1);

x0=x0+5;

y0=y0+5;

y1=y1-5;

}

getch();

}

3//用rectangle画方形

#include "graphicsh"

main()

{int x0,y0,y1,x1,driver,mode,i;

driver=VGA;mode=VGAHI;

initgraph(&driver,&mode,"");

setbkcolor(YELLOW);

x0=263;y0=263;y1=275;x1=275;

for(i=0;i<=18;i++)

{

setcolor(1);

rectangle(x0,y0,x1,y1);

x0=x0-5;

y0=y0-5;

x1=x1+5;

y1=y1+5;

}

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(150,40,"How beautiful it is!");

line(130,60,480,60);

setcolor(2);

circle(269,269,137);

}

===================================

更多有关c语言图形方面的函数及用法请参考c语言图形学的相关知识。

我前几天刚在网上看到的,不知道对你有没有用》

1. 闪烁灯

1. 实验任务

如图411所示:在P10端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为02秒。

2. 电路原理图

图411

3. 系统板上硬件连线

把“单片机系统”区域中的P10端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4. 程序设计内容

(1). 延时程序的设计方法

作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为02秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:

如图411所示的石英晶体为12MHz,因此,1个机器周期为1微秒

机器周期 微秒

MOV R6,#20 2个机器周期 2

D1: MOV R7,#248 2个机器周期 2 2+2×248=498 20×

DJNZ R7,$ 2个机器周期 2×248 498

DJNZ R6,D1 2个机器周期 2×20=40 10002

因此,上面的延时程序时间为10002ms。

由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求02秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:

DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET

(2). 输出控制

如图1所示,当P10端口输出高电平,即P10=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P10端口输出低电平,即P10=0时,发光二极管L1亮;我们可以使用SETB P10指令使P10端口输出高电平,使用CLR P10指令使P10端口输出低电平。

5. 程序框图

如图412所示

图412

6. 汇编源程序ORG 0START: CLR P10LCALL DELAYSETB P10LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时02秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7. C语言源程序#include <AT89X51H>sbit L1=P1^0;void delay02s(void) //延时02秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}}

2. 模拟开关灯

1. 实验任务

如图421所示,监视开关K1(接在P30端口上),用发光二极管L1(接在单片机P10端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。

2. 电路原理图

图421

3. 系统板上硬件连线

(1). 把“单片机系统”区域中的P10端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;

(2). 把“单片机系统”区域中的P30端口用导线连接到“四路拨动开关”区域中的K1端口上;

4. 程序设计内容

(1). 开关状态的检测过程

单片机对开关状态的检测相对于单片机来说,是从单片机的P30端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。

(2). 输出控制

如图3所示,当P10端口输出高电平,即P10=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P10端口输出低电平,即P10=0时,发光二极管L1亮;我们可以使用SETB P10指令使P10端口输出高电平,使用CLR P10指令使P10端口输出低电平。

5. 程序框图

图422

6. 汇编源程序 ORG 00HSTART: JB P30,LIGCLR P10SJMP STARTLIG: SETB P10SJMP STARTEND

7. C语言源程序#include <AT89X51H>sbit K1=P3^0;sbit L1=P1^0;void main(void){while(1){if(K1==0){L1=0; //灯亮}else{L1=1; //灯灭}}}

3. 多路开关状态指示

1. 实验任务

如图431所示,AT89S51单片机的P10-P13接四个发光二极管L1-L4,P14-P17接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。

2. 电路原理图

图431

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P10-P13用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;

(2. 把“单片机系统”区域中的P14-P17用导线连接到“四路拨动开关”区域中的K1-K4端口上;

4. 程序设计内容

(1. 开关状态检测

对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1X,REL或JNB P1X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。

(2. 输出控制

根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1X和CLR P1X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。

5. 程序框图

读P1口数据到ACC中

ACC内容右移4次

ACC内容与F0H相或

ACC内容送入P1口

<![endif]-->

图432

6. 方法一(汇编源程序)ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP STARTEND7. 方法一(C语言源程序)#include <AT89X51H>unsigned char temp;void main(void){while(1){temp=P1>>4;temp=temp | 0xf0;P1=temp;}}8. 方法二(汇编源程序)ORG 00HSTART: JB P14,NEXT1CLR P10SJMP NEX1NEXT1: SETB P10NEX1: JB P15,NEXT2CLR P11SJMP NEX2NEXT2: SETB P11NEX2: JB P16,NEXT3CLR P12SJMP NEX3NEXT3: SETB P12NEX3: JB P17,NEXT4CLR P13SJMP NEX4NEXT4: SETB P13NEX4: SJMP STARTEND9. 方法二(C语言源程序)#include <AT89X51H>void main(void){while(1){if(P1_4==0){P1_0=0;}else{P1_0=1;}if(P1_5==0){P1_1=0;}else{P1_1=1;}if(P1_6==0){P1_2=0;}else{P1_2=1;}if(P1_7==0){P1_3=0;}else{P1_3=1;}}}

先给你,传不上 太多了

以上就是关于帮我写一个简单的C程序。全部的内容,包括:帮我写一个简单的C程序。、简单c语言程序,求帮助,谢谢、谁能帮我写一个简单的C语言程序啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9811139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存