c语言简单实例
A. 经典c语言程序例子
题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。
(1)c语言简单实例扩展阅读:
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
B. C语言实例
#include
<stdio.h>
#define
N
50
//
排队人数(可任意更改)
#define
CAL
3
//凡报3的人出列(可任意更改)
//下面是排队编号函数:从h
开始的n个人依次编号1到n
void
stdline(int
*h,int
n)
{
int
i;
for(i=1;i<n+1;i++)
*(h+i-1)=i;
}
/*下面函数表示从指针h处开始的人数为boy个人排队,从1报数,每报到call的人出列*/
void
outline(int
*h,int
boy,int
call)
{
int
*p,
chu,
callnum;
/*说明:
p
工作指针,表示从头依次指向每个元素,点名
chu
计数器,记录出列的人数
callnum
计数器,记录点名次序
*/
chu=0;
callnum=0;//各计数器清零
p=h;
//开始时,工作指针指向数组首
printf("出列顺序是:\n");
while(chu<boy)
{
if(*p!=0)
callnum++;
//每次加报数
if(callnum==call)
//如果某一个人报到出列数call...
{
printf("%5d",*p);
//打印编号,表示出列
chu++;
//出列人数加1
if(chu==boy)//如果全部出列....
{
*h=*p;
//把最后一个出列人的编号记入地址开始处
return;
//结束
}
if(chu%10==0)printf("\n");//每输出10个换行
callnum=0;
//出列后,重新报数
*p=0;
//出列后,将其编号赋零,以示区别
}
p++;
//工作指针移向下一个人,即下一个数组元素
if(p>h+boy-1)p=h;/*如果移到最后一个元素的后面,则让指向地址开头继续报数*/
}
}
void
main()
{
int
a[N];
//用数组模拟队列,每个元素代表一个人
stdline(a,N);//编号
outline(a,N,CAL);//计算并打印出列顺序
printf("\n最后留下来的是
%d
号\n",*a);/*在函数中,已经把最后一个人的编号写入了数组首地址处,
这里输出就可以了*/
}
C. 求C语言编程实例100行以上,要有文字大概解释一下
下面是一个用C语言显示一个简单的WIndows窗口的小程序。用C语言对Windows编程的基础。
//+---------------------------------------------------------------------------
//
//HELLO_WIN.C-WindowsGUI'HelloWorld!'示例
//
//+---------------------------------------------------------------------------
#include<windows.h>
#defineAPPNAME"HELLO_WIN"
charszAppName[]=APPNAME;//当前有用程序的名称
charszTitle[]=APPNAME;//标题行显示的文字
constchar*pWindowText;
voidCenterWindow(HWNDhWnd);
//+---------------------------------------------------------------------------
//
//Function:WndProc
//
//Synopsis:处理Windows消息的函数
//
//Arguments:sameasalways.
//----------------------------------------------------------------------------
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
switch(message){
//-----------------------firstandlast
caseWM_CREATE:
CenterWindow(hwnd);
break;
caseWM_DESTROY:
PostQuitMessage(0);
break;
//-----------------------getoutofit...
caseWM_RBUTTONUP:
DestroyWindow(hwnd);
break;
caseWM_KEYDOWN:
if(VK_ESCAPE==wParam)
DestroyWindow(hwnd);
break;
//-----------------------displayourminimalinfo
caseWM_PAINT:
{
PAINTSTRUCTps;
HDChdc;
RECTrc;
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rc);
SetTextColor(hdc,RGB(240,240,96));
SetBkMode(hdc,TRANSPARENT);
DrawText(hdc,pWindowText,-1,&rc,DT_CENTER|DT_SINGLELINE|DT_VCENTER);
EndPaint(hwnd,&ps);
break;
}
//-----------------------letwindowsdoallotherstuff
default:
returnDefWindowProc(hwnd,message,wParam,lParam);
}
return0;
}
//+---------------------------------------------------------------------------
//
//Function:WinMain
//
//Synopsis:
//
//----------------------------------------------------------------------------
intAPIENTRYWinMain(
HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow
)
{
MSGmsg;
WNDCLASSwc;
HWNDhwnd;
pWindowText=lpCmdLine[0]?lpCmdLine:"HelloWindows!";
//
//themainwindow.
ZeroMemory(&wc,sizeofwc);
wc.hInstance=hInstance;
wc.lpszClassName=szAppName;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.style=CS_DBLCLKS|CS_VREDRAW|CS_HREDRAW;
wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
if(FALSE==RegisterClass(&wc))
return0;
//createthebrowser
hwnd=CreateWindow(
szAppName,
szTitle,
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
360,//CW_USEDEFAULT,
240,//CW_USEDEFAULT,
0,
0,
hInstance,
0);
if(NULL==hwnd)
return0;
//Mainmessageloop:
while(GetMessage(&msg,NULL,0,0)>0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
returnmsg.wParam;
}
//+---------------------------------------------------------------------------
//+---------------------------------------------------------------------------
voidCenterWindow(HWNDhwnd_self)
{
HWNDhwnd_parent;
RECTrw_self,rc_parent,rw_parent;
intxpos,ypos;
hwnd_parent=GetParent(hwnd_self);
if(NULL==hwnd_parent)
hwnd_parent=GetDesktopWindow();
GetWindowRect(hwnd_parent,&rw_parent);
GetClientRect(hwnd_parent,&rc_parent);
GetWindowRect(hwnd_self,&rw_self);
xpos=rw_parent.left+(rc_parent.right+rw_self.left-rw_self.right)/2;
ypos=rw_parent.top+(rc_parent.bottom+rw_self.top-rw_self.bottom)/2;
SetWindowPos(
hwnd_self,NULL,
xpos,ypos,0,0,
SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE
);
}
//+---------------------------------------------------------------------------
D. C语言编程简单实例
是条件,不可以少的,for
(
表达式1;
表达式2;
表达式3
)
一条语句/复合语句
无论
for
循环到底会循环多少次,表达式1
都只会被运算一次——只有当
for
循环第一次执行时才会运算表达式1。表达式2
用于控制是否继续进行循环。如果表达式2
为真,则执行“一条语句/复合语句”,反之则退出循环。出于表达上的方便,我们把循环结构中的“一条语句/复合语句”称为循环体。在表达式2
成立的情况下,并且在循环体执行完毕后,表达式3
才会被运算。表达式3
运算完毕后,再次运算表达式2,若表达式2
为真,则再执行一次循环体,然后再运算表达式3,接着再测试表达式2
的真假性……
E. c语言入门经典里的一个简洁的例子,求大神指点,100分!!!
函数中的变量pay是开设在堆中的,如果采用(2)调用printf时先入栈的是*pnew_pay,正巧这时堆还未被printf冲掉,可以将已废弃的pay位置的值返回;而(1)由于先调用了一遍printf堆中的pay位置数据被用作其他而值被改过了,所以不对。
依此,你在(1)中将两个printf颠倒一下有可能还是能输出正确的值的。
F. C语言编程实例
首先main中对x进行赋值,是12345678这个无符号长整形数,然后传到part()函数中,结构体那部分不用考虑,其它地方也没有对num进行更改,不会对内容有影响,所以输出结果为12345678;
然后p=&n把n的地址赋给指针p,n.w=num把12345678赋给w,此时结构体n的地址其实就是12345678所在的地址,p指向n,同时结构体*p中的数组part的初始地址也在p上,也就是说p指向的数组part于n.w的首地址是相同的;
看你的输出结果,你的C中int和long应该都是32位吧,所以输出part[0]就是输出part地址上的前32位,即num,part[1]上都是空的,什么也没有,所以就是8个C;
PS:我想这个程序的意义是把long型整数进行拆分,分别输出高低位两部分,但是你的C中的int和long都是32位,所以没成功吧
呵呵,也不知道说的对不,C很久没用了