首页 > 软件 > 以下内容[图片]怎么用C++实现?

以下内容[图片]怎么用C++实现?

软件 2024-02-21

如何用c语言实现以下内容?

//输入正整数,找出该数的所有因子并存放在数组a中,再将因子中所有素数存放在数组b中。 //例如:输入12,则数组a中存放1,2,3,4,6,12;数组b中存放2和3。 #include int prime( int i ) { int j; for(j=2; j怎样用C语言实现以下内容类似于重载操作符^ 提供两个参数,一个底数一个指数。分别解析两个参数的整数位和小数位,并得到整数和小数的位数 如参数x,y 解析x为:整数部分intX,位数iXCount 小数部分化为整数decX,位数dXCount 解析y为:整数部分intY,位数iYCount 小数部分化为整数decY,位数dYCount 则输出为: x是整数: x^y = intX*10的(iXCount*(intY-1)+dYCount)次方 + intX*10的(iXCount*(intY-2)+dYCount)次方 +...+ intX*10的dYCount次方 + decY x是小数: x^y = intX*10

怎样用C语言显示一张jpg的图片呢

可以用函数OleLoadPicture从包含有图像数据的流中装载图像。

具体实现代码如下:

//在显示图像之前,首先要获取到图像文件的存放路径,这里采用标准的文件打开对话框来选取图像文件,文件名存放在CString型的变量m_sPath中:
CFileDialogdlg(TRUE,"jpg","*.jpg",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif||",NULL);
if(dlg.DoModal()==IDOK)
{
m_sPath=dlg.GetPathName();
Invalidate();
}
//为简单计,图形显示的代码直接在视类中的OnDraw中编写,首先打开文件并判断文件的可用性,并把文件内容放到流接口IStream的对象pStm中:
IStream*pStm;
CFileStatusfstatus;
CFilefile;
LONGcb;
……
if(file.Open(m_Path,CFile::modeRead)&&file.GetStatus(m_Path,fstatus)&&((cb=fstatus.m_size)!=-1))
{
HGLOBALhGlobal=GlobalAlloc(GMEM_MOVEABLE,cb);
LPVOIDpvData=NULL;
if(hGlobal!=NULL)
{
if((pvData=GlobalLock(hGlobal))!=NULL)
{
file.ReadHuge(pvData,cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);
}
}
}
//然后,就直接调用OleLoadPicture函数从流中装载图像:
IPicture*pPic;
……
OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic));
//由于该函数有时会导致失败,所以应当用SUCCEEDED宏来做一些适当的保护工作,只有在数据装载成功的前提下才能继续下面的图像显示工作:
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIChmWidth;
OLE_YSIZE_HIMETRIChmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
doublefX,fY;
……
fX=(double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY=(double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("渲染图像失败!");
pPic->Release();
}
else
AfxMessageBox("从流中装载图像失败!");
//其中,显示工作主要是由IPicture接口对象的Render函数来完成的,该函数主要用来将图片的指定部分画到指定的设备环境的指定位置。
原型如下:
HRESULTRender(HDChdc,//渲染图像用的设备环境句柄
longx,//在hdc上的水平坐标
longy,//在hdc上的垂直坐标
longcx,//图像宽度
longcy,//图像高度
OLE_XPOS_HIMETRICxSrc,//在源图像上的水平偏移
OLE_YPOS_HIMETRICySrc,//在源图像上的垂直偏移
OLE_XSIZE_HIMETRICcxSrc,//在源图像上水平拷贝的数量
OLE_YSIZE_HIMETRICcySrc,//在源图像上垂直拷贝的数量
LPCRECTprcWBounds//指向目标图元设备环境句柄的指针);

怎么使用C语言完成图片中要求的编程(尽量使用一维数组)

按照你的要求,都用一维数组。不过学生信息建议使用结构体来定义。

题目要求函数参数用到数组和指针,而数组传参本来就可用数组和指针两种方式。

下面是代码:

#include

#define MJ 5//课程最大数量

#define MT 30//学生最大人数

#define FM 100//满分

#define PS 60//及格

int init(int ss[],int sid[],int *p_slen);//通过初始化数组。成功返回总分,失败返回0

int contFStudents(int ss[],int sid[],int slen);//统计不及格人数并打印名单,返回人数

int contAAvg(int ss[],int sid[],int slen,float avg);//avg表示平均分数,如未知传-1 返回人数

int contMax(int ss[],int slen,int *sid);//统计最高分及学号

int main()

{

int ss[MT],sid[MT],sum;

int slen=0;// 实际输入的学生人数

int fn,an;

sum=init(ss,sid,&slen);

fn=contFStudents(ss,sid,slen);

an=contAAvg(ss,sid,slen,(sum*1.0)/slen);

printf("不及格占比%.0f%%\n",(fn*1.0)/slen*100);

printf("高于等于平均分占比%.0f%%\n",(an*1.0)/slen*100);

contMax(ss,slen,sid);

return 0;

}

int init(int ss[],int sid[],int *p_slen)

{

int i=0,n,sum=0;

if(!p_slen) return 0;

*p_slen=0;

printf("该班级所有学生某课程成绩(人数不超过%d):\n",MT);

for(i=0;i

i=0;

while(*p_slen<=MT)

{


printf("请输入学号%d的成绩:",sid[i]),scanf("%d",&n);

if(n>FM)

{

printf("%d输入无效,不能大于满分上限%d\n",n,FM);

continue;

}

if(n<0) break;

ss[i++]=n;

sum+=n;

}

*p_slen=i;

return sum;

}

int contFStudents(int ss[],int sid[],int slen)

{

int i,cnt=0;

for(i=0;i

if(ss[i]

printf("不及格人数共:%d人\n",cnt);

return cnt;

}

int contAAvg(int ss[],int sid[],int slen,float avg)

{

int i,cnt=0,sum=0;

if(avg==-1)

{

for(i=0;i

avg=(sum*1.0)/slen;

}

for(i=0,printf("平均分(%f)及平均分以上的学生有:\n",avg);i

if(ss[i]>=avg)cnt++,printf("学号%d,分数:%d\n",sid[i],ss[i]);

printf("平均分及平均分以上人数共:%d人\n",cnt);

return cnt;

}

int contMax(int ss[],int slen,int *sid)

{

int i,max=ss[0];

if(!sid) return 0;

for(i=0;i

if(ss[i]>max) max=ss[i];

for(i=0,printf("最高分(%d)的学生学号有:\n",max);i

if(ss[i]==max) printf("%d\n",sid[i]);

return 1;

}

求大佬们怎么用c语言输出以下内容(图一) 使用查找删除形式?

#include

#define N 10

void main() { int a[N]={45,58,62,71,77,80,88,93},n=8,i,k,b;

printf("原始成绩记录为: "); for ( i=0;i

k=77;

for ( i=b=0;i

if ( a[i]==k ) b=1;

if ( b ) a[i]=a[i+1];

}

if ( b ) n--;

printf("删除后成绩记录为: "); for ( i=0;i

k=70; for ( i=0;ik ) a[n-i]=a[n-i-1]; else break;

a[n-i]=k; n++;

printf("插入后成绩记录为: "); for ( i=0;i

}


标签:编程语言 编程 CC++ 信息技术 C(编程语言)

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18