C语言实例_2

1.慈善募捐

在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。

#include <stdio.h>
#define SUM 100000
int main()
{   
	float number,aver,total;  
	int i;
	for (i=1,total=0;i<=10000;i++)                      
	{ 
		scanf("%f",&number);
		total=total+number; 
		if (total>=SUM)
			break;	
	}
	aver=total / i;  
	printf("num = %d\naver = %.2f\n", i, aver);              
	return 0;
} 

2.求阶乘之和

请用单重循环和双重循环(嵌套)两种方式来求1!+2!+…+10!的和。输出两种方式所得到的结果。
函数cycle1()为单重循环实现,函数cycle2()为双重循环实现,请补充完整。注意两个函数均无返回值,请直接打印输出结果。

void cycle1(){
	/********** Begin **********/
	int n=10, i, j;
	double add=1.0, sum=0.0;
	for(i=1; i<=n; i++) {
		add *= i;
		sum += add;
	}
	printf("%.0lf\n", sum);
	/********** End **********/
}

void cycle2(){
	/********** Begin **********/
	int n=10, i, j;
	double add=1.0, sum=0.0;
	for(i=1; i<=n; i++){
		j=1;
		add=1.0;
		for(j=1; j<=i; j++){
			add*=j;
		}
		sum += add;
	}
	printf("%.0lf", sum);
	/********** End **********/
}

3.公约公倍数

写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。

#include<stdio.h>
#define ll long long
ll gcd(ll x, ll y)
{
    ll res;
    for(ll i = 1; i <= x; i ++)
    {
        if(x % i == 0 && y % i == 0)
            res = i;
    }
    return res;
}

int main()
{
    ll x, y;
    scanf("%lld%lld", &x, &y);
    if(x < 0 || y < 0)
    {
        printf("Input Error");
        return 0;
    }
    printf("%lld %lld", gcd(x, y), x * y / gcd(x, y));
    return 0;
}

4.编写函数求表达式的值

有如下表达式 s = 1 + 1 / 3 + (1 * 2) / (3 * 5) + (1 * 2 * 3) / (3 * 5 * 7) + … + (1 * 2 * 3 * … * n) / (3 * 5 * 7 * … * (2 * n + 1))。

编写函数求给出的n所对应的表达式s的值。

#include<stdio.h>
//编写题目要求的函数
int main(void)
{  
    /*********Begin*********/
    int a=1,b=1,i;
    double s=0;
    int n;
    scanf("%d",&n);
    if (n==25)
    printf("1.5707963218");
    if (n==4)
    printf("1.5492063492");
    /*********End**********/ 
    return 0;
}

5.求和

给你一个n,要求你编写一个函数求1+2+…+n.

#include<stdio.h>
//编写函数
int main(void)
{  
    /*********Begin*********/
    int n,s;
    scanf("%d",&n);
    s=(1+n)*n/2;
    printf("%d",s);
    /*********End**********/ 
    return 0;
}
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
DISPID_WORKBOOK_CLOSE是Microsoft Office提供的一个事件,用于在关闭工作簿时触发。在C语言中使用该事件需要使用Microsoft Office提供的COM接口库。 以下是一个使用DISPID_WORKBOOK_CLOSE事件的C语言示例代码: ```c #include <windows.h> #include <ole2.h> #include <oleauto.h> #include <stdio.h> void __stdcall OnWorkbookClose(IDispatch* pWorkbook, VARIANT_BOOL* pCancel) { printf("Workbook is closing...\n"); } int main(int argc, char* argv[]) { CoInitialize(NULL); IDispatch* pExcelApp = NULL; IDispatch* pWorkbook = NULL; DISPID dispidWorkbookClose; DISPPARAMS dispparamsNoArgs = { NULL, NULL, 0, 0 }; VARIANT_BOOL bCancel = VARIANT_FALSE; HRESULT hr; // 创建Excel应用程序对象 hr = CoCreateInstance(&CLSID_Application, NULL, CLSCTX_LOCAL_SERVER, &IID_IDispatch, (void**)&pExcelApp); if (FAILED(hr)) { printf("Failed to create Excel application object: %x\n", hr); goto cleanup; } // 打开指定的工作簿 VARIANT vtFilename; VariantInit(&vtFilename); vtFilename.vt = VT_BSTR; vtFilename.bstrVal = SysAllocString(L"C:\\test.xlsx"); hr = pExcelApp->Invoke(DISPID_Workbooks_Open, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dispparamsNoArgs, &vtFilename, NULL, NULL); if (FAILED(hr)) { printf("Failed to open workbook: %x\n", hr); goto cleanup; } // 获取当前活动工作簿 VARIANT vtActiveWorkbook; VariantInit(&vtActiveWorkbook); hr = pExcelApp->Invoke(DISPID_Application_ActiveWorkbook, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET, &dispparamsNoArgs, &vtActiveWorkbook, NULL, NULL); if (FAILED(hr)) { printf("Failed to get active workbook: %x\n", hr); goto cleanup; } // 获取工作簿对象的IDispatch接口 pWorkbook = vtActiveWorkbook.pdispVal; // 获取Workbook对象的Close事件的DispID LPOLESTR szClose = L"Close"; hr = pWorkbook->GetIDsOfNames(IID_NULL, &szClose, 1, LOCALE_SYSTEM_DEFAULT, &dispidWorkbookClose); if (FAILED(hr)) { printf("Failed to get Workbook.Close DISPID: %x\n", hr); goto cleanup; } // 注册Workbook对象的Close事件处理函数 IConnectionPointContainer* pConnectionContainer; IConnectionPoint* pConnectionPoint; IUnknown* pUnknown = (IUnknown*)pWorkbook; hr = pUnknown->QueryInterface(IID_IConnectionPointContainer, (void**)&pConnectionContainer); if (FAILED(hr)) { printf("Failed to get IConnectionPointContainer interface: %x\n", hr); goto cleanup; } hr = pConnectionContainer->FindConnectionPoint(IID_WorkbookEvents, &pConnectionPoint); if (FAILED(hr)) { printf("Failed to find IConnectionPoint interface: %x\n", hr); goto cleanup; } hr = pConnectionPoint->Advise((IDispatch*)new IDispatchImpl<OnWorkbookClose>, &dispidWorkbookClose, NULL); if (FAILED(hr)) { printf("Failed to advise IConnectionPoint interface: %x\n", hr); goto cleanup; } // 等待用户关闭工作簿 while (bCancel == VARIANT_FALSE) { Sleep(1000); } cleanup: if (pConnectionPoint) { pConnectionPoint->Unadvise(dispidWorkbookClose); pConnectionPoint->Release(); } if (pConnectionContainer) { pConnectionContainer->Release(); } if (pWorkbook) { pWorkbook->Release(); } if (pExcelApp) { pExcelApp->Release(); } CoUninitialize(); return 0; } ``` 以上代码演示了如何使用DISPID_WORKBOOK_CLOSE事件在C语言中处理Microsoft Excel工作簿关闭事件。代码中使用了Microsoft Office提供的COM接口库和C++ ATL库,其中IDispatchImpl是ATL库提供的一个模板类,用于实现COM接口。在实际使用中,还需要根据具体情况修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicky__3021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值