精华内容
下载资源
问答
  • C语言写计算器界面源码,GDI绘制控件,HOOK拦截键盘按键。
  • C语言写计算器界面

    万次阅读 多人点赞 2013-04-04 21:40:59
    C语言写计算器界面,GDI绘制控件,HOOK拦截键盘按键。 主文件源码预览: // Calculator.cpp : 定义应用程序的入口点。 // #include "stdafx.h" #include "Calculator.h" #include using namespace std; #...

    纯C语言写计算器界面,GDI绘制控件,HOOK拦截键盘按键。


    主文件源码预览:

    // Calculator.cpp : 定义应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "Calculator.h"
    #include <map>
    
    using namespace std;
    
    #define MAX_LOADSTRING 100
    
    // 全局变量:
    HINSTANCE hInst;								// 当前实例
    TCHAR szTitle[MAX_LOADSTRING];					// 标题栏文本
    TCHAR szWindowClass[MAX_LOADSTRING];			// 主窗口类名
    map<HWND, RECT> mapSubHWndRect;					//子窗口区域集合
    SIZE szPreWnd;									//窗口之前的大小
    
    HWND hWndText = NULL;
    HHOOK hKeyHook = NULL;
    
    // 此代码模块中包含的函数的前向声明:
    ATOM				MyRegisterClass(HINSTANCE hInstance);
    BOOL				InitInstance(HINSTANCE, int);
    LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
    INT_PTR CALLBACK	About(HWND, UINT, WPARAM, LPARAM);
    HWND CreateStaticForMainWnd(HWND hWnd, LPCTSTR strText, LONG lStyle, 
    							int x, int y, int iWidth, int iHeight);
    void CreateButtonForMainWnd(HWND hWnd, int iID, LPCTSTR strText, int x, int y, int iWidth, int iHeight);
    LRESULT CALLBACK HookKeyProc(int iCode, WPARAM wParam, LPARAM lParam);
    void OnShowNum(int iNum);
    
    int APIENTRY _tWinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPTSTR    lpCmdLine,
                         int       nCmdShow)
    {
    	UNREFERENCED_PARAMETER(hPrevInstance);
    	UNREFERENCED_PARAMETER(lpCmdLine);
    
     	// TODO: 在此放置代码。
    	MSG msg;
    	HACCEL hAccelTable;
    
    	// 初始化全局字符串
    	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    	LoadString(hInstance, IDC_CALCULATOR, szWindowClass, MAX_LOADSTRING);
    	MyRegisterClass(hInstance);
    
    	// 执行应用程序初始化:
    	if (!InitInstance (hInstance, nCmdShow))
    	{
    		return FALSE;
    	}
    
    	hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_CALCULATOR));
    
    	// 主消息循环:
    	while (GetMessage(&msg, NULL, 0, 0))
    	{
    		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    		{
    			TranslateMessage(&msg);
    			DispatchMessage(&msg);
    		}
    	}
    
    	return (int) msg.wParam;
    }
    
    
    
    //
    //  函数: MyRegisterClass()
    //
    //  目的: 注册窗口类。
    //
    //  注释:
    //
    //    仅当希望
    //    此代码与添加到 Windows 95 中的“RegisterClassEx”
    //    函数之前的 Win32 系统兼容时,才需要此函数及其用法。调用此函数十分重要,
    //    这样应用程序就可以获得关联的
    //    “格式正确的”小图标。
    //
    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    	WNDCLASSEX wcex;
    
    	wcex.cbSize = sizeof(WNDCLASSEX);
    
    	wcex.style			= CS_HREDRAW | CS_VREDRAW;
    	wcex.lpfnWndProc	= WndProc;
    	wcex.cbClsExtra		= 0;
    	wcex.cbWndExtra		= 0;
    	wcex.hInstance		= hInstance;
    	wcex.hIcon			= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON3));
    	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
    	wcex.hbrBackground	= (HBRUSH)(COLOR_BTNFACE+1);
    	wcex.lpszMenuName	= MAKEINTRESOURCE(IDC_CALCULATOR);
    	wcex.lpszClassName	= szWindowClass;
    	wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_ICON2));
    
    	return RegisterClassEx(&wcex);
    }
    
    //
    //   函数: InitInstance(HINSTANCE, int)
    //
    //   目的: 保存实例句柄并创建主窗口
    //
    //   注释:
    //
    //        在此函数中,我们在全局变量中保存实例句柄并
    //        创建和显示主程序窗口。
    //
    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    {
       HWND hWnd;
    
       hInst = hInstance; // 将实例句柄存储在全局变量中
    
    
    //    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX,
    //       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
    
       hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX |WS_CLIPCHILDREN,
    	   500, 200, 228, 322, NULL, NULL,hInstance, NULL);
    
       
       if (!hWnd)
       {
          return FALSE;
       }
    	SetWindowText(hWnd,L"计算器");	
       ShowWindow(hWnd, nCmdShow);
       UpdateWindow(hWnd);
       return TRUE;
    }
    
    //
    //  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
    //
    //  目的: 处理主窗口的消息。
    //
    //  WM_COMMAND	- 处理应用程序菜单
    //  WM_PAINT	- 绘制主窗口
    //  WM_DESTROY	- 发送退出消息并返回
    //
    //
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	int wmId, wmEvent;
    	PAINTSTRUCT ps;
    	HDC hdc;
    
    	switch (message)
    	{
    	case WM_CREATE:
    		{
    			RECT rect = {0};
    			GetClientRect(hWnd, &rect);
    
    			szPreWnd.cx = rect.right - rect.left;
    			szPreWnd.cy = rect.bottom - rect.top;
    
    			CreateStaticForMainWnd(hWnd, _T(""), WS_CHILD|WS_VISIBLE, 10, 15, 195, 50);
    			hWndText = CreateStaticForMainWnd(hWnd, _T("0"), WS_CHILD|WS_VISIBLE|SS_RIGHT, 12, 35, 191, 20);
    			CreateStaticForMainWnd(hWnd, _T(""), WS_CHILD|WS_VISIBLE|SS_GRAYFRAME, 10, 15, 195, 50);
    
    			CreateButtonForMainWnd(hWnd, ID_BTN_MC, _T("MC"), 10, 75, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_MR, _T("MR"), 50, 75, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_MS, _T("MS"), 90, 75, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_M_ADD, _T("M+"), 130, 75, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_M_SUBTRACT, _T("M-"), 170, 75, 35, 25);
    
    			CreateButtonForMainWnd(hWnd, ID_BTN_DELETE, _T("Del"), 10, 105, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_CE, _T("CE"), 50, 105, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_C, _T("C"), 90, 105, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_AS, _T("+-"), 130, 105, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_TICE, _T("V"), 170, 105, 35, 25);
    
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM7, _T("7"), 10, 135, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM8, _T("8"), 50, 135, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM9, _T("9"), 90, 135, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_DIVIDE, _T("/"), 130, 135, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_PERCENT, _T("%"), 170, 135, 35, 25);
    
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM4, _T("4"), 10, 165, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM5, _T("5"), 50, 165, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM6, _T("6"), 90, 165, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_MULTIPLY, _T("*"), 130, 165, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_RECIPROCAL, _T("1/x"), 170, 165, 35, 25);
    
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM1, _T("1"), 10, 195, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM2, _T("2"), 50, 195, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM3, _T("3"), 90, 195, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_SUBTRACT, _T("-"), 130, 195, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_EQUAL, _T("="), 170, 195, 35, 55);
    
    			CreateButtonForMainWnd(hWnd, ID_BTN_NUM0, _T("0"), 10, 225, 75, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_POINT, _T("."), 90, 225, 35, 25);
    			CreateButtonForMainWnd(hWnd, ID_BTN_ADD, _T("+"), 130, 225, 35, 25);
    
    			hKeyHook = SetWindowsHookEx(WH_KEYBOARD, HookKeyProc, NULL, GetCurrentThreadId());
    			break;
    		}
    		
    	case WM_COMMAND:
    		wmId    = LOWORD(wParam);
    		wmEvent = HIWORD(wParam);
    			if (wmId == ID_BTN_MC)
    			{
    				SetWindowText(hWndText, _T("MC"));
    			}
    			else if (wmId == ID_BTN_MR)
    			{
    				SetWindowText(hWndText, _T("MR"));
    			}
    			else if (wmId == ID_BTN_MS)
    			{
    				SetWindowText(hWndText, _T("MS"));
    			}
    			else if (wmId == ID_BTN_M_ADD)
    			{
    				SetWindowText(hWndText, _T("M+"));
    			}
    			else if (wmId == ID_BTN_M_SUBTRACT)
    			{
    				SetWindowText(hWndText, _T("M-"));
    			}
    			else if (wmId == ID_BTN_DELETE)
    			{
    				SetWindowText(hWndText, _T("DEL"));
    			}
    			else if (wmId == ID_BTN_CE)
    			{
    				SetWindowText(hWndText, _T("CE"));
    			}
    			else if (wmId == ID_BTN_C)
    			{
    				SetWindowText(hWndText, _T("C"));
    			}
    			else if (wmId == ID_BTN_AS)
    			{
    				SetWindowText(hWndText, _T("+-"));
    			}
    			else if (wmId == ID_BTN_TICE)
    			{
    				SetWindowText(hWndText, _T("V"));
    			}
    			else if (wmId == ID_BTN_DIVIDE)
    			{
    				SetWindowText(hWndText, _T("/"));
    			}
    			else if (wmId == ID_BTN_PERCENT)
    			{
    				SetWindowText(hWndText, _T("%"));
    			}
    			else if (wmId == ID_BTN_MULTIPLY)
    			{
    				SetWindowText(hWndText, _T("*"));
    			}
    			else if (wmId == ID_BTN_RECIPROCAL)
    			{
    				SetWindowText(hWndText, _T("1/x"));
    			}
    			else if (wmId == ID_BTN_SUBTRACT)
    			{
    				SetWindowText(hWndText, _T("-"));
    			}
    			else if (wmId == ID_BTN_EQUAL)
    			{
    				SetWindowText(hWndText, _T("="));
    			}
    			else if (wmId == ID_BTN_POINT)
    			{
    				SetWindowText(hWndText, _T("."));
    			}
    			else if (wmId == ID_BTN_ADD)
    			{
    				SetWindowText(hWndText, _T("+"));
    			}
    			else if (wmId>=ID_BTN_NUM0 && wmId<=ID_BTN_NUM9)
    			{
    				OnShowNum(wmId-ID_BTN_NUM0+48);
    			}
    
    		// 分析菜单选择:
    		switch (wmId)
    		{
    		case IDM_ABOUT:
    			//DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
    			::ShellAbout(hWnd,L"计算器",L"雁子TEST-123456",NULL);
    			break;
    		case IDM_EXIT:
    			DestroyWindow(hWnd);
    			break;
    		default:
    			return DefWindowProc(hWnd, message, wParam, lParam);
    		}
    		
    		break;
    	case WM_PAINT:
    		hdc = BeginPaint(hWnd, &ps);
    		// TODO: 在此添加任意绘图代码...
    		EndPaint(hWnd, &ps);
    		break;
    	case WM_DESTROY:
    		UnhookWindowsHookEx(hKeyHook);
    		PostQuitMessage(0);
    		break;
    
    	case WM_SIZE:
    		{
    			WORD x = LOWORD(lParam);
    			WORD y = HIWORD(lParam);
    			double dx = (double)x/szPreWnd.cx;
    			double dy = (double)y/szPreWnd.cy;
    			for (map<HWND, RECT>::iterator it=mapSubHWndRect.begin(); it!=mapSubHWndRect.end(); ++it)
    			{
    				pair<HWND, RECT> pi = *it;
    				MoveWindow(pi.first, pi.second.left*dx, pi.second.top*dy, 
    					(pi.second.right-pi.second.left)*dx, (pi.second.bottom-pi.second.top)*dy, TRUE);
    			}
    		}
    		break;
    	default:
    		return DefWindowProc(hWnd, message, wParam, lParam);
    	}
    	return 0;
    }
    
    // “关于”框的消息处理程序。
    INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	UNREFERENCED_PARAMETER(lParam);
    	switch (message)
    	{
    	case WM_INITDIALOG:
    		return (INT_PTR)TRUE;
    
    	case WM_COMMAND:
    		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
    		{
    			EndDialog(hDlg, LOWORD(wParam));
    			return (INT_PTR)TRUE;
    		}
    		break;
    	}
    	return (INT_PTR)FALSE;
    }
    
    
    
    HWND CreateStaticForMainWnd(HWND hWnd, LPCTSTR strText, LONG lStyle, int x, int y, int iWidth, int iHeight)
    {
    	HWND hWndResult = CreateWindow(_T("STATIC"), strText, lStyle, x, y, iWidth, iHeight, hWnd, NULL, hInst, NULL);
    	RECT rect = {x,y,x+iWidth,y+iHeight};
    	mapSubHWndRect.insert(pair<HWND,RECT>(hWndResult,rect));
    
    	return hWndResult;
    }
    
    
    void CreateButtonForMainWnd(HWND hWnd, int iID, LPCTSTR strText, int x, int y, int iWidth, int iHeight)
    {
    	HWND hWndTemp= CreateWindow(_T("BUTTON"), strText, WS_CHILD|WS_VISIBLE,x, y, iWidth, iHeight, hWnd, (HMENU)iID, hInst, NULL);
    	RECT rect = {x,y,x+iWidth,y+iHeight};
    	mapSubHWndRect.insert(pair<HWND,RECT>(hWndTemp,rect));
    }
    
    LRESULT CALLBACK HookKeyProc(int iCode, WPARAM wParam, LPARAM lParam)
    {
    	if (iCode == HC_ACTION)
    	{
    		UINT nFlags = HIWORD(lParam);
    		BOOL bKeyDown = 0 == (nFlags & KF_UP);
    
    		if (bKeyDown)
    		{
    			//数字键的0-9
    			if (wParam>=VK_NUMPAD0 && wParam<=VK_NUMPAD9)
    			{
    				//转换成主键盘的0-9
    				wParam -= 0x30;
    			}
    
    			//主键盘的0-9
    			if (wParam>=0x30 && wParam<=0x39)
    			{
    				OnShowNum(wParam);
    			}
    		}
    	}
    
    	return CallNextHookEx(hKeyHook, iCode, wParam, lParam);
    }
    
    void OnShowNum(int iNum)
    {
    	TCHAR tc[2] = {0};
    	tc[0] = (TCHAR)iNum;
    
    	TCHAR tcCur[100] = {0};
    	GetWindowText(hWndText, tcCur, 100);
    
    	LPCTSTR str = lstrcat(tcCur, tc);
    
    	if (lstrlen(str) > 50)
    	{
    		str = _T("");
    	}
    
    	SetWindowText(hWndText, str);
    }
    

    源码下载: http://download.csdn.net/detail/goosdy/5221164

    展开全文
  • C语言实现计算器

    万次阅读 多人点赞 2018-05-27 09:03:51
    C语言实现计算器

                                                                                同学,你好!


     

    附:

    C语言实现迷宫类小游戏完整思路与代码实例:https://blog.csdn.net/qq_41915690/article/details/80463892

    Design By 海上的雨

    效果图

    完整代码

     

    #include <stdio.h>
    #include <math.h>
    #include<malloc.h>
    void jingtailianbiao();
    void dongtailianbiao();
    int stu_num;
    #define LEN sizeof(struct student)
    struct student
    {
    	long num;
    	float score;
    	struct student *next;
    };
    struct student_score
    {
    	long num;
    	char name[10];
    	float score;		
    };
    int main()
    {
    	int select;
    	printf("*************************************************\n");
    	printf("*       小小计算器  Design By 海与炜            *\n");
    	printf("*        1 加法                                 *\n");
    	printf("*        2 减法                                 *\n");
    	printf("*        3 乘法                                 *\n");
    	printf("*        4 除法                                 *\n");
    	printf("*        5 取模                                 *\n");
    	printf("*        6 圆的面积                             *\n");
    	printf("*        7 判断闰年                             *\n");
    	printf("*        8 成绩转化                             *\n");
    	printf("*        9 计算从1到输入数之间的奇数和(for)     *\n");
    	printf("*        10 计算从1到输入数之间的偶数和(while)  *\n");
    	printf("*        11 输出从1到输入数之间所有3的倍数      *\n");
    	printf("*        12 求即被3整除又被5整除的数            *\n");
    	printf("*        13 判断数字位数                        *\n");
    	printf("*        14 求水仙花数                          *\n");
    	printf("*        15 求最大值                            *\n");
    	printf("*        16 求最大最小值                        *\n");
    	printf("*        17 冒泡排序                            *\n");
    	printf("*        18 矩阵转置                            *\n");
    	printf("*        19 求对角线和                          *\n");
    	printf("*        20 统计单词个数                        *\n");
    	printf("*        21 静态创建链表                        *\n");
    	printf("*        22 动态创建链表                        *\n");
    	printf("*        23 学生成绩排序                        *\n");
    	printf("*        24 学生成绩普涨10分                    *\n");
    	printf("*     输入任意非功能选项序号退出小小计算器      *\n");
    	printf("*************************************************\n");
    	printf("输入菜单项:\n");
    	scanf("%d",&select);
    	switch (select)
    	{
    	case 1:
    		{
    			float num1,num2;
    			printf("做加法。\n");
    			printf("输入两个数,逗号分隔。\n");
    			scanf("%f,%f",&num1,&num2);
    			printf("%f+%f=%f\n",num1,num2,num1+num2);
    			break;
    		}
    	case 2:
    		{
    			float num1,num2;
    			printf("做减法。\n");
    			printf("输入两个数,逗号分隔。\n");
    			scanf("%f,%f",&num1,&num2);
    			printf("%f-%f=%f\n",num1,num2,num1-num2);
    			break;
    		}
    	case 3:
    		{
    			float num1,num2;
    			printf("做乘法。\n");
    			printf("输入两个数,逗号分隔。\n");
    			scanf("%f,%f",&num1,&num2);
    			printf("%f*%f=%f\n",num1,num2,num1*num2);
    			break;
    		}
    	case 4:
    		{
    			float num1,num2;
    			printf("做除法。\n");
    			printf("输入两个数,逗号分隔。\n");
    			scanf("%f,%f",&num1,&num2);
    			printf("%f/%f=%f\n",num1,num2,num1/num2);
    			break;
    		}
    	case 5:
    		{
    			float num1,num2;
    			printf("取模运算。\n");
    			printf("输入两个数,逗号分隔。\n");
    			scanf("%f,%f",&num1,&num2);
    			printf("%f%%%f=%f\n",num1,num2,fmod(num1,num2));
    			break;
    		}
    	case 6:
    		{
    			float r;
    			double s;
    			printf("计算圆面积。\n");
    			printf("请输入半径:\n");
    			scanf("%f",&r);
    			if  (r >= 0)
    			{
    				s=3.14*r*r;
    				printf("圆面积是:%lf\n",s);
    			}
    			else
    				printf  ("半径输入错误!\n");
    			break;
    		}
    	case 7:
    		{
    			int year,leap;
    			printf("判断闰年。\n");
    			printf("enter year");
    			scanf("%d",&year);
    			if((year%4==0&&year%100!=0)||(year%400==0))
    				leap=1;
    			else
    				leap=0;
    			if(leap)
    				printf("%d is",year);
    			else
    				printf("%d is not",year);
    			printf("a leap year\n");
    			break;
    		}
    	case 8:
    		{
    			int a;
    			printf("成绩转化。\n");
    			scanf("%d",&a);
    			if(a>=90)
    				printf("优");
    			else if(a>=80)
    				printf("良");
    			else if(a>=70)
    				printf("中");
    			else if(a>=60)
    				printf("差");
    			else printf("不及格");
    			break;
    		}
    	case 13:
    		{
    			long int num,num_t;
    			int digits=0,i=1;
    			printf("判断数字位数。\n");
    			printf("输入待判断数字:");
    			scanf("%ld",&num);
    			num_t=num;
    			do
    			digits++;
    			while((num_t/=10)>0);
    			printf("%ld是%d位数。\n",num,digits);
    			while(digits>=i);
    			{
    				printf("%ld的第%d位数是:%d\n",num,i,(num/(long)pow(10,(digits-i)))%10);
    				i++;
    			}
    			break;
    		}
    	case 9:
    		{
    			int n,sum=0,i;
    			printf("输入一个数:\n");
    			scanf("%d",&n);
    			for(i=1;i<=n;i++)
    				if(i%2!=0)
    					sum+=i;
    				printf("从1到输入数之间的奇数和是:%d\n",sum);
    				break;
    		}
    	case 10:
    		{
    			int sum,i,n;
    			i=1;
    			sum=0;
    			printf("输入一个数:\n");
    			scanf("%d",&n);
    			while(i<=n)
    			{
    				if(i%2==0)
    					sum+=i;
    				i++;
    			}
    			printf("从1到输入数之间的偶数和是:%d\n",sum);
    			break;
    		}
    	case 12:
    		{
    			int n,i,m;
    			printf("输入两个数:\n");
    			scanf("%d,%d",&n,&m);
    			for(i=n;i<=m;i++)
    				if(i%3==0&&i%5==0)
    				{
    					printf("既能被3整除又能被5整除的数:%d\n",i);
    				}
    				break;
    		}
    	case 11:
    		{
    			int sum,i,m;
    			i=1;
    			sum=0;
    			printf("输入一个数:\n");
    			scanf("%d",&m);	
    			do
    			{
    				if(i%3==0)
    					sum+=i;
    				i++;
    			}
    			while(i<=m);
    			printf("从1到输入数之间所有3的倍数:%d\n",sum);
    			break;
    		}
    	case 14:
    		{
    			int i=100;
    			int a,b,c;
    			for(i=100;i<1000;i++)
    			{
    				a=i/100;
    				b=(i-a*100)/10;
    				c=(i-a*100-b*10);
    				if(a*a*a+b*b*b+c*c*c==i)
    				{
    					printf("水仙花数:%d\n",i);
    				}
    			}
    			break;
    		}
    	case 15:
    		{
    			int a,b,c;
    			printf("请输入两个数\n");
    			scanf("%d,%d",&a,&b);
    			if(a>=b)
    				c=a;
    			else
    				c=b;
    			printf("最大值为:%d\n",c);
    			break;
    		}
    	case 16:
    		{
    			int a,b,c,d;
    			printf("请输入两个数\n");
    			scanf("%d,%d",&a,&b);
    			if(a>=b)
    			{
    				c=a;
    				d=b;
    			}
    			else
    			{
    				c=b;
    				d=a;
    			}
    			printf("最大值为:%d\n",c);
    			printf("最小值为:%d\n",d);
    			break;
    		}
    	case 17:
    		{
    			int i,j,k;
    			int a[10];
    			printf("输入十个数: \n");
    			for(i=0;i<10;i++)
    				scanf("%d",&a[i]);
    			printf("\n");
    			for(j=0;j<9;j++)                
    				for(i=0;i<9-j;i++)          
    					if(a[i]>a[i+1])         
    					{
    						k=a[i];
    						a[i]=a[i+1];
    						a[i+1]=k;
    					}
    					printf("排序后: \n");
    					for(i=0;i<10;i++)
    						printf("%d ",a[i]);
    					printf("\n");
    					break;
    		}
    	case 18:
    		{
    			int i,j;
    			int array[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    			int temp;
    			printf("原矩阵:\n");
    			for(i=0;i<4;i++)
    			{
    				for(j=0;j<4;j++)
    				{
    					printf("%d\t",array[i][j]);
    				}
    				printf("\n");
    			}
    			for(i=0;i<4;i++)
    			{
    				for(j=i;j<4;j++)
    				{
    					temp=array[i][j];
    					array[i][j]=array[j][i];
    					array[j][i]=temp;
    				}
    			}
    			printf("转置矩阵:\n");
    			for(i=0;i<4;i++)
    			{
    				for(j=0;j<4;j++)
    				{
    					printf("%d\t",array[i][j]);
    				}
    				printf("\n");
    			}
    			break;
    		}
    	case 19:
    		{
    			int i,j;
    			int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    			int sum=0;
    			printf("原矩阵:\n");
    			for(i=0;i<3;i++)
    			{
    				for(j=0;j<3;j++)
    				{
    					printf("%d\t",a[i][j]);
    				}
    				sum+=a[i][i];
    				printf("\n");
    			}
    			printf("对角线的和等于:%d\n",sum);
    			break;
    		}
    	case 20:
    		{
    			char string[81],c;
    			int i,num=0,word=0;
    			printf("请输入一句话:\n");
    			c=getchar();
    			gets(string);
    			for(i=0;(c=string[i])!='\0';i++)
    			{
    				if(c==' ')
    					
    				{
    					word=0;
    				}
    				else if(word==0)
    				{
    					word=1;
    					num++;
    				}
    			}
    			printf("%d words\n",num);
    			break;
    		}
    	case 21:
    		{
    			jingtailianbiao();
    			break;
    		}
    	case 22:
    		{
    			printf("请输入两个数,逗号隔开。输入负数结束。\n");
    			dongtailianbiao();
    			break;
    		}
    				case 23:
    					{
    						float sum=0;
    						struct student_score stu_temp,stu[10];
    						printf("分别输入10位学生的学号姓名和成绩 ,用空格隔开。\n");
    						
    						for (int i=0;i<10;i++)
    						{
    							scanf("%d %s %f",&stu[i].num,&stu[i].name,&stu[i].score);
    							sum+=stu[i].score;
    						}			
    						for (i=0;i<9;i++)
    							for (int j=0;j<9-i;j++)
    								if (stu[j].score>stu[j+1].score)
    								{
    									stu_temp = stu[j];
    									stu[j] = stu[j+1];
    									stu[j+1] = stu_temp;
    								}
    								printf("按成绩从低到高排序为:\n");
    								for (i=0;i<10;i++)
    								{		
    									printf("学号:%d\t姓名:%s\t成绩:%.1f\n",stu[i].num,stu[i].name,stu[i].score);
    								}			
    								printf("成绩总和为:%.1f\n",sum);
    								break;
    					}
    				case 24:{
    					printf("将为d盘根目录下的文本文件my.txt内的10位学生的学生成绩分别加10分,请确保此文件存在!\n");
    					int i,a[10];
    					FILE *fp;
    					fp=fopen("d:\\my.txt","r+");
    					for(i=0;i<10;i++)
    						fscanf(fp,"%d",&a[i]);
    					rewind(fp);
    					for(i=0;i<10;i++)
    						fprintf(fp,"%d\n",a[i]+10);
    					fclose(fp);
    					printf("保存完毕!\n");
    					break;
    						}
    	}
    	return 0 ;
    }
    void jingtailianbiao()
    {
    	struct student a,b,c,d,*head,*p;
    	a.num=1;
    	a.score=96;
    	b.num=2;
    	b.score=99.5;
    	c.num=3;
    	c.score=96;
    	d.num=4;
    	d.score=98;
    	head=&a;
    	a.next=&b;
    	b.next=&c;
    	c.next=&d;
    	d.next=0;
        p=head;
    	do
    	{
    		printf("%ld %5.1f\n",p->num,p->score);
    		p=p->next;
    	}
    	while(p!=0);
    }
    
    struct student * creat()
    {
    	struct student *head;
    	struct student *p1,*p2;
    	stu_num=0;
        p1=p2=(struct student*)malloc(LEN);
        scanf("%ld,%f",&p1->num,&p1->score);
    	head=0;
        while(p1->num>=0)
    	{
    		stu_num=stu_num+1;
            if(stu_num==1)
    			head=p1;
    		else
    			p2->next=p1;
    		p2=p1;
    		p1=(struct student*)malloc(LEN);
    		scanf("%ld,%f",&p1->num,&p1->score);
    	}
    	p2->next=0;
    	return (head);
    }
    
    void print(struct student *head)
    {
    	struct student *p;	
    	p=head;
    	printf("你输入的动态链表为:\n",stu_num);
    	if(head!=0)
    		do
    		{
    			printf("%ld %5.1f\n",p->num,p->score);
                p=p->next;			
    		}
    		while(p!=0);
    }
    void dongtailianbiao()
    {
    	struct student *link;
    	link=creat();
    	print(link);
    }
    

    若觉得有用或有问题,请关注或评论,以后会更新更多内容。

     

     

     

    展开全文
  • PAGE / NUMPAGES 用C语言写计算器源代码.txt什么叫神话请听男人向你表达爱意什么叫传说请听男人对你的承诺什么叫梦境请看你自己听到前两者时的反应用C语言写计算器源代码 #include<stdio.h> #include...
  • C语言实现计算器功能》由会员分享,可在线阅读,更多相关《C语言实现计算器功能(11页珍藏版)》请在人人文库网上搜索。1、实验1多功能计算机一、问题的说明设计一台能完成基本计算的多功能计算机。设计要求:1 ....

    《C语言实现计算器功能》由会员分享,可在线阅读,更多相关《C语言实现计算器功能(11页珍藏版)》请在人人文库网上搜索。

    1、实验1多功能计算机一、问题的说明设计一台能完成基本计算的多功能计算机。设计要求:1 .具有整数数据、浮点型数据的算术(加法、减法、乘法、除法)运算功能。 依次输入第一个操作数、运算符(,-,*,/)和第二个操作数,并输出结果。 结果可以是下一运算的第一运算数。 按“c”清除画面,按“r”返回菜单。输入: 25输出: 72 .实现一元运算符公式计算的功能。 输入的操作数可以包含整数或浮点数。 输入公式如下所示输入: 2 5输出: 7二、算法的说明1 .数据结构的说明(可以图示说明,也可以用文字说明)该程序主要基于选择菜单描述用于以main ()函数调用的六个自定义函数,在main ()中,用一个。

    2、字符变量num1记录菜单选项的标签,并根据num1的值确定调用哪个函数。程序完成的功能和所使用的函数如下整个程序的流程图如下所示2 .算法的说明(函数的说明)void suanshuyunsuan() /算术运算时调用的函数选择一个继续调用void suanshuyunsuan2() /算术运算的函数,以确定上一次运算的结果是否继续下一次算术运算的第一个操作数/算术运算判断void panduan() /算术运算是否继续voidabiodashiyunsun()/单运算符表达式实现函数清除void qingping() /画面显示void fanhuicaidan() /菜单三、测试结果(这部。

    3、分需要结合文字和图标)1 .第一组测试用例(1)测试输入:测试目的:测试算术运算的功能结果输出:(2)再输入: 1测试目的:测试算术运算是否可以继续结果输出:(3)此时输入: 0测试目的:结束算术运算结果输出:2 .第二组测试用例测试输入:测试目的:测试一元运算符表达式函数结果输出:3 .第三组测试用例测试输入: c测试目的:测试输入c是否能清除屏幕。测试输出:4 .第四组测试用例测试输入: r测试目的:测试返回菜单函数测试输出:5 .第五组测试用例测试输入: t测试目的:测试程序是否能正确结束。测试输出:附录:源代码(附加了所有源代码,不相同的雷电)#include#includewindo。

    4、ws.h 双倍z; /定义全局变量以存储算术运算的上次结果/算术运算时调用的函数void suanshuyunsuan ()举止char fh、hh1、hh2; /hh1和hh2用于存储回车字符双数字1,数字2;printf (输入: );扫描( % lf % c % lf ,数字1,hh1,fh,hh2,num2);判断交换机(FH )/在做什么举止case :z=num1 num2; break;case -:z=num1-num2; break;case *:z=num1*num2; break;case /:z=num1/num2; break;以下printf (结果:= );打印(。

    5、n % lfn ,z );以下选择继续调用/算术运算的函数,并将上一次运算的结果作为下一次算术运算的第一个操作数void suanshuyunsuan2()举止双数字1;叉烧;打印( % lfn ,z ); /首先输出上次算术运算的结果rewind(stdin )扫描( % c % lf ,fh,num1);交换机(PS )举止case :z=z num1; break;case -:z=z-num1; break;case *:z=z*num1; break;case /:z=z/num1; break;以下printf (结果:= );打印机(n % lfn ,z );以下/判断算术运算是。

    6、否继续void panduan ()举止printf (要结束运算吗? n );printf (0.是 );printf (1.否 n );printf(0或1: );以下/单运算符表达式实现函数voidabiodashiyunsun ()举止int num1、num2、num3;柴胡;printf (输入: );扫描( % d % c % d ,数字1,fh,数字2 );printf (结果:= );交换机(PK )举止case :num3=num1 num2; break;case -:num3=num1-num2; break;case *:num3=num1*num2; break;c。

    7、ase /:num3=num1/num2; break;以下printf(%d ,num3);以下/清除屏幕void清平()举止系统( cls );以下/显示菜单void fanhuicaidan ()举止打印(菜单n );printf(a .算术运算 n );printf(b .式运算 n );printf(c .清除屏幕并重新开始n );printf(r .返回菜单n );printf(t .退出程序n );以下void main ()举止char num1; /用于存储选定的菜单选项。PR; /存储是否继续算术运算的选项打印(菜单n ); /先显示菜单printf(a .算术运算 n )。

    8、;printf(b .式运算 n );printf(c .清除屏幕并重新开始n );printf(r .返回菜单n );printf(t .退出程序n );while(1)举止清除rewind(stdin) /键盘缓冲区printf (npleasecheseoneletterfrom,b,c,r,and tn );扫描( % c ,num1); /输入用于判断选择了哪个菜单项的数量选择了if(num1=a) /算术运算举止suanshuyunsuan ();panduan ();扫描( % d ,pd );继续while(pd) /算术运算就循环了举止suanshuyunsuan2();panduan ();扫描( % d ,pd );以下以下选择了if(num1=b) /一元运算符式的运算biaodashiyunsuan ();清除if(num1=c) /屏幕清平();显示if(num1=r) /菜单范惠翠();if(num1=t) /结束程序break;以下以下。

    展开全文
  • C语言-计算器

    2015-03-30 20:57:16
    C语言-计算器 利用C语言写计算器,带注释,供大家学习交流
  • c语言实现计算器

    2018-01-24 22:07:44
    c语言实现计算器
  • C语言简易计算器.zip

    2021-06-21 22:54:30
    C语言简易计算器
  • 用C语言设计计算器程序源代码,有需要的来下载吧~
  • C语言简单计算器

    2013-10-31 09:29:12
    用c语言写计算器程序,比较详细全面,适合新老手看。
  • c语言课设计算器

    2013-07-07 10:59:40
    用c语言设计一个建议四则运算计算器 c语言 计算器课程设计
  • 本文实例为大家分享了C语言实现简单计算器的具体代码,供大家参考,具体内容如下实现效果如图:实现代码如下:#include#include//gotoxy#include#define width 80#define height 30void gotoxy(int x, int y);...

    本文实例为大家分享了C语言实现简单计算器的具体代码,供大家参考,具体内容如下

    实现效果如图:

    1f7f628684cf996328c7243c049a53af.png

    441961fee0d64d5169d57b75844c8be7.png

    实现代码如下:

    #include

    #include//gotoxy

    #include

    #define width 80

    #define height 30

    void gotoxy(int x, int y);

    void GreateFrame()

    {

    int i = 0;

    for (i = 0 ; i < width; i += 2)

    {

    gotoxy(i, 0); printf("■");

    gotoxy(i, height); printf("■");

    }

    for (i = 0; i < height + 1; i++)

    {

    gotoxy(0 , i); printf("■");

    gotoxy(width, i); printf("■");

    }

    }

    void Add()

    {

    float i, j;

    printf("*加法运算*\n");

    scanf_s("%f %f", &i, &j);

    printf("%5.2f + %5.2f=%5.2f\n", i, j, i+j);

    _getch();

    }

    void Sub()

    {

    float i, j;

    printf("*减法运算*\n");

    scanf_s("%f %f", &i, &j);

    printf("%5.2f - %5.2f=%5.2f\n", i, j, i -j);

    _getch();

    }

    void Mul()

    {

    float i, j;

    printf("*乘法运算*\n");

    scanf_s("%f %f", &i, &j);

    printf("%5.2f * %5.2f=%5.2f\n", i, j, i * j);

    _getch();

    }

    void Div()

    {

    float i, j;

    printf("*除法运算*\n");

    scanf_s("%f %f", &i, &j);

    printf("%5.2f / %5.2f=%5.2f\n", i, j, i / j);

    _getch();

    }

    int main(int argc, char* argv[])

    {

    int choose;

    while (1)

    {

    GreateFrame();

    gotoxy(width / 3, height / 3 + 2);

    printf("1.加法");

    gotoxy(width / 3, height / 3 + 4);

    printf("2.减法");

    gotoxy(width / 3, height / 3 + 6);

    printf("3.乘法");

    gotoxy(width / 3, height / 3 + 8);

    printf("4.除法");

    gotoxy(width / 3, height / 3 + 10);

    printf("5.退出程序");

    gotoxy(width / 3, height / 3);

    printf("请选择你要计算的方式:( )\b\b");

    scanf_s("%d", &choose);

    switch (choose)

    {

    case 1:system("cls");

    Add(); break;

    case 2:system("cls");

    Sub(); break;

    case 3:system("cls");

    Mul(); break;

    case 4:system("cls");

    Div(); break;

    case 5:

    exit(0);

    }

    system("cls");

    }

    }

    void gotoxy(int x, int y)

    {

    COORD POS;

    POS.X = x;

    POS.Y = y;

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),POS);

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • c语言计算器实验报告计算器实验报告班级: 07计本(1)班姓名: 王林学号: 20706031047指导老师: 韩静需求分析制作一个计算器界面工程,有数字运算符等键,输入表达式后,按等号键输入结束,并显示出正确的结果。...
  • c语言简单计算器报告xxxx大学信息科学与工程学院 课程设计报告 班级:姓名:实验项目名称: 实验室(中心):指导教师: 实验完成时间: 通信工程一班 xxx 简易计算器信息科学与工程学院信息技术实验室 xxxXX...
  • 利用函数一个计算器 包括菜单功能和加减乘除四个功能 作者:NBDR_YL */ #include&lt;stdio.h&gt; int mean(void); //声明菜单的函数 float add(float,float);//声明加法的函数 float sub(float,...
  • 菜单实现计算器的功能,虽然选项5的功能还不完善,但是对于我这样一个只会C语言,而且C语言基础还不好的小白来说,已经不错了。前四个选项分别是实现连加,连减,连乘,连除(考虑除数为零)。 题目: 输入一个...
  • c语言制作计算器

    2018-08-09 15:21:44
    这个是用c语言控制台制作的小程序,仅供参考,没有商业用途。
  • 基于C语言计算器

    2013-12-30 09:03:55
    基于c语言计算器栈和二叉树两种方法实现
  • C语言简易计算器

    热门讨论 2012-11-17 22:59:59
    通过VC编程实现计算器,可以实现+,-,*,/以及三角函数的运算,有简单的程序界面,适合C语言初学者学习研究。 计算器程序目录:简易计算器.rar\计算器\Debug\计算器.exe C语言源文件:简易计算器.rar\计算器\计算器.c
  • c语言生命计算器

    2021-03-20 20:28:48
    c语言生命计算器 闲话少说!!!直接上代码 //7.一个生命计算器, //要求用户输入生日,显示他在这个世界上已经活了多少天? #include<stdio.h> int main() { int count = 0;//计算,用户已经活了多少天了 ...
  • C语言表达式计算器

    2012-01-02 12:39:52
    C语言写的表达式计算器,支持四则和括号混合运算,尚不支持sin cos log等数学函数运算,希望能遇到高人指点
  • C语言 小型计算器

    2021-09-13 15:13:18
    C语言 小型计算器 #include<stdio.h> int main () { int a,b,sum; //运算数字的定义 char cob; //运算符的定义 printf("请输入两个操作数\n"); scanf("%d%d",&a,&b); printf("请输入操作符号\n\...
  • C语言写计算器.rar

    2021-07-19 18:41:59
    C语言写计算器,有需要的可以下载试试(附源码)
  • c语言计算器的实验报告 1. 题目:简单计算器 2. 实验目的:模仿日常生活中所用的计算器,自行设计一个简单 的计算器程序,实现简单的计算功能。 3. 实验主要硬件软件环境:Window 7Visual C++ 6.0 4. 实验内容: (1)...
  • C语言计算器源代码

    2015-07-01 23:21:33
    一个C语言计算器源代码来源:Linux社区
  • PAGE / NUMPAGES 用C语言写计算器源代码 #include<stdio.h> #include<iostream.h> #include<stdlib.h> #include<string.h> #include<ctype.h> typedef float DataType; typedef struct { DataType *data; int max;...
  • C语言堆栈计算器

    2012-07-03 01:26:00
    C语言实现的堆栈计算器,通过输入整个算式进行计算,并且对简单错误进行判断输出,可识别括号等特殊符号。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,352
精华内容 6,940
关键字:

如何用c语言写计算器

c语言 订阅