㈠ c语言作业题目:编程打印如下图形
#include<stdio.h>
void main()
{
int i,j;
for(i=1;i<=5;i++)
for(j=1;j<=2;j++)
{
if(i==1&&j==2||i==5&&j==2)printf(" ");
else printf("* ");
if(j==2)printf("芹桥耐穗\n");
}
}
/*运行结果:嫌亩猛
*
* *
* *
* *
*
*/
㈡ c语言打印沙漏
#include<stdio.h>
int main()
{
int i=0;
int j=0;
int n;
printf("请输入行数:");
scanf("%d",&n);
for(;i<n;i++)
{
printf("* * * * * *\n");
}
printf(" * * * *\n");
printf(" * * \n");
printf(" * * * *\n");
for(;j<n;j++)
{
printf("* * * * * *\n");
}
return 0;
}
㈢ C语言辅导:VC数据库编程中的打印控制
VC数据库编程中的打印控制比较复杂,但它也给程序员的灵活搭卜性,而这种灵活性正是我们需要的。因为各行业、部门的报表一般都不太规整,特别是表头部分,二、三重嵌套的情况很常见。下面我们就开发中碰到的一些问题与同行们探讨。
Document/View框架之外的打印
熟悉VC的程序员都知道Microsoft 的AppWizard生成的应用程序框架中,可以选择免费的打印及打印预览功能,但前提是必须选择Document/View结构。然而我们的数据库应用中一般都不需要一个文档类来保存文档,因为数据库(源)就是我们的文档,数据一般是在一知凯穗个对话框或视中与用户交互,我或修改结果直接通过数据库引擎写回数据库中。我们的程序主框架要么是基于对话框的、要么是基于无文档类的单视(或多视)结构,在这种情况下,AppWizard 在打印控制部分并不能给我们任何帮助,只能自己负责完成打印控制。
总结起来,一次打印操作要遵循以下步骤:
1.得到或生成打印设备场景,可通过显示打印对话框让用户选择打印机与纸张等设置,也可在程序中直接取系统缺省打印机设置,然后根据报表格式设置纸张大小和打印方向;
2.开始在该设备场景中的一次打印作业,实际打印报表内容,终止打印作业;
3.清除打印设备场景,完成本次打印操作。
在下面的例子中,我们在一个对话框中让用户选择打印某个报表,没有显示打印设置对话框,而是直接取系统缺省打印机设置,然后根据报表格式设置纸张大小和打印方向。之所以这样做是因为各行业、部门的报表格式一般都是至上而下的统一格式。函数DoPreparePrintDC()、DoPrint()和DoClearPrintDC()分别对应上述的三个步骤:
BOOL CMyDialog::DoPreparePrintDC()
// 准备打印场景
{
#defineFONTSIZE 14
// 获取打印机的设备属性
CPrintDialog dlgPrint( FALSE );
// 得到当前系统缺省打印机设置
if(!dlgPrint.GetDefaults()) return FALSE;
LPDEVMODE pDM=dlgPrint.GetDevMode();
if(pDM==NULL) return FALSE;
::GlobalUnlock(pDM);
// 联结打印DC,m—hDC是定义为HDC m—hDC的类成员变量
m—hDC=dlgPrint.CreatePrinterDC();
// m—DC是定义为CDC m—DC的类成员变量
if(!m—DC.Attach(m—hDC) return FALSE;
// 设置打印标志
m—DC.m—bPrinting=TRUE;
short cxInch=m—DC.GetDeviceCaps(LOGPIXELSX);
short cyInch=m—DC.GetDeviceCaps(LOGPIXELSY);
// 建立打印字体,m—fontPrint 是定义为CFont m_fontPrint的类成员变量
if(!m—fontPrint.CreateFont(MulDiv(FONTSIZE, -cyInch, 72),0,0,0, FW—NORMAL,0,0,0, GB2312—CHARSET, OUT—CHARACTER—PRECIS, CLIP—CHARACTER—PRECIS,DEFAULT—QUALITY, DEFAULT—PITCH|FF—DONTCARE, HFONTNAME)
return FALSE;
return TRUE;}
void CDlgDataPrint::DoClearPrintDC()
// 清除打印场景
{ m—fontPrint.DeleteObject();
m—DC.Detach();
::DeleteDC( m—hDC );}
void CDlgDataPrint::DoPrint()
// 实际打印输出
{ if(DoPreparePrintDC()==FALSE) return;
// 开始一次打印作业孙誉
CString str;
str.LoadString(AFX—IDS—APP—TITLE);
DOCINFO di;
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize=sizeof (DOCINFO);
di.lpszDocName=str;
m—DC.StartDoc(&di);
m—DC.StartPage();
// 将打印字体选进设备场景
CFont* pOldFont=m—DC.SelectObject(&m—fontPrint);
// 输出报表,建议用CDC::DrawText()函数便于控制打印范围
...
// 终止打印作业
m—DC.EndPage();
m—DC.EndDoc();
m—DC.SelectObject(pOldFont);
// 清除打印场景
DoClearPrintDC();}
表格问题
对格式固定或表头、表体比较复杂的情况,特别是有嵌套表格的情况下,我们认为先将打印结果以文本形式写入一临时文件,然后再对文件进行打印输出的方法会使事情简单一些。因为这样在程序中就可以只关心数据(表体)的输出,而表头则可以固定格式存入数据库。
但是,我们在对文本形式的报表进行打印输出时却发现一个有趣的现象,有时输出结果的相邻两行表格竖线不能对齐,而有时又可以。原来是 Windows 图形输出的问题,只要我们在建立打印字体时,字体的高度是偶数就可保证竖线对齐,如果是奇数则不能对齐。知道了原因,在建立打印字体时只需加入如下代码即可:
...
#defineFONTSIZE 14
#defineHFONTNAME ″微软雅黑″
// 建立打印字体,m—fontPrint是定义为CFont m—fontPrint的类成员变量
int nFontHeight=MulDiv(FONTSIZE,-cyInch, 72);
if(nFontHeight % 2) nFontHeight++;
if(!m—fontPrint.CreateFont(nFontHeight, 0, 0, 0, FW—NORMAL, 0, 0,0,GB2312—CHARSET, OUT—CHARACTER—PRECIS, CLIP—CHARACTER—PRECIS,DEFAULT—QUALITY, DEFAULT—PITCH | FF—DONTCARE, HFONTNAME))
return FALSE;
...
还有一点小技巧,输出文本形式的报表时,对报表的横线只需要输出其正常高度的二分之一或三分之一,这样报表看起来更紧凑美观。这也是我们在前面建议用CDC::DrawText()进行绘制输出的原因。
㈣ c语言打印沙漏
写一个函数a,用于打印一行, 弄几个参数, 分别控制前面的空格的数量和*的熟练
写个函数b, 在里面调用a, 传入不同的参数, 自己多练练, 没人会往你手里塞钱的, 需要自己探索
㈤ C语言编程问题
2、
#include<慧锋stdio.h>稿型
int main()
{
int j,k, n=4;
for( k=0;k<n;k++ )
{
for( j=0; j<n-k-1; j++ ) printf("键碧猜 ");
for( ; j<n; j++ ) printf("*");
printf("\n");
}
}
3、
int average(int a[][3], int n)
{
int k, sum = 0;
for( k=0; k<4; k++ )
sum += a[k][n];
return sum / 4;
}
4、
int isprime( int x )
{
int k;
if( x==2 ) return 1;
if( x<2 ) return 0;
for( k = 2; k < x; k++ )
if( !(x%k) ) return 0;
return 1;
}
㈥ 急啊,用c语言编程一个星号组成的沙漏图形,行数为n,如n=5是*****就要代码,快!!! *** * *** *****
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。
㈦ c语言编程星号输出沙漏从上到下依次星数为7,5,3,1谢谢
代码资料:
#include "stdio.h"
int main(int argc,char *argv[]){
char i,j;
for(i=4;i>0;i--){
for(j=4-i;j-->0;putchar(' '));
for(j=0;j++<i+i-1;putchar('*'));
putchar(' ');
}
return 0;
}
㈧ C语言 使用循环结构编程打印如下图形: * * * * * * * * * * * * * * * * * * * * * * * * *
如果你的代码是直接贴进来的,那么问题出在其中的分号为中文字符。
C语言程序中的中文字符只能出现在注释和字符串中。
把分号全部替换编译没问题的:
#include <stdio.h>
void main()
{
int i,j,n;
printf("\nPlease Enter n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
Please Enter n:5
*
***
*****
*******
*********
㈨ c语言 输出*形沙漏
#include <stdio.h >
void main ()
{
int i ,j, k, n;
scanf ("%d ",&n);
for (i =0 ;i<n;i++)
{
for (j =0 ;j <2*n;j++)
printf ("*");
printf ("\n");
}
for (i=1; i<=n-2;i++)
{for (j =1 ;j <=i;j++)
printf (" ");
for (k =1;k<=2*n-2*i;k++)
printf ("*");
printf ("\n");}
for (i =2;i<=n-2;i++)
{for(j =2;j>=i;j--)
{printf (" ");
}
for(k=1;k<=2*n-2*i;k++)
printf("*");
printf ("\n");}
for (i =0;i<n;i++)
{for (j=0;j<2*n;j++)
printf ("*");
printf ("\n");}
}
因电脑故障这个程序没有调试,若有错误请您见谅
㈩ C语言空心沙漏,求大佬帮忙码出来,已经给了一个模板了。
#include<stdio.h>
voidsand(intn,intc)
{inti,j;
for(i=n;i>0;i-=2)
{for(j=1;j<=(n-i)/2;j++)
printf("");
for(j=1;j<=i;j++)
putchar(c);
putchar(' ');
}
for(i=3;i<=n;i+=2)
{for(j=1;j<=(n-i)/2;j++)
printf("");
for(j=1;j<=i;j++)
putchar(c);
putchar(' ');
}
}
main()
{sand(9,'a');
}