这个哪错了c语言学了有什么用言

懂C语言的帮忙看看这个汉字显示代码的错误在哪,谢了_百度知道
懂C语言的帮忙看看这个汉字显示代码的错误在哪,谢了
#include &Conio.h&#include &graphics.h&#define closegr closegraphvoid initgr(void)
/* BGI初始化 */{
int gd=DETECT, gm=0;
/* 和gd=VGA,gm=VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);
/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, &&);}void drawmat(char *mat,int matsize,int x,int y,int color)/*依次:字模指针点阵大小起始坐标(x,y)、颜色*/{
int i,j,k,n;
n=(matsize-1)/8+1;
for(j=0;j&j++)for(i=0;i&n;i++)
for(k=0;k&8;k++)
if(mat[j*n+i]&(0x80&&k))
/*测试为1的位则显示*/
putpixel(x+i*8+k,y+j,color);}char zi24[]={
/* 以下是 '字' 的 24点阵隶书 字模72byte*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x08,0x1C,0x10,0x1F,0xFF,0xF0,0x18,0x00,0x30,0x18,0xFF,0x10,0x09,0xC3,0x90,0x00,0x3C,0x00,0x00,0x1C,0x00,0x3F,0xFF,0xFE,0x7E,0x0C,0xFE,0x00,0x1C,0x04,0x00,0x1C,0x00,0x04,0x3C,0x00,0x03,0xF8,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}char mo24[]={
/* 以下是 '模' 的 24点阵楷体_GB2312 字模,72 byte*/0x00,0x00,0x00,0x00,0x00,0x60,0x02,0x00,0x30,0x03,0x0C,0x20,0x03,0x04,0x3C,0x02,0x07,0xE0,0x02,0x1C,0x40,0x02,0x00,0x40,0x03,0xC0,0x70,0x7E,0x1F,0x98,0x02,0x08,0x10,0x06,0x0F,0x90,0x07,0x88,0x10,0x0A,0xCB,0xE0,0x1A,0x05,0x00,0x12,0x01,0x1E,0x22,0x0F,0xFE,0x42,0x32,0x80,0x02,0x02,0x40,0x02,0x04,0x60,0x02,0x0C,0x30,0x02,0x18,0x1C,0x02,0x20,0x0F,0x02,0x00,0x00,}}int main(void){
/* BGI初始化 */
drawmat(yi12,12,100,125,WHITE);
drawmat(er12,12,115,125,WHITE);
drawmat(dian12,12,130,125,WHITE);
drawmat(zhen12,12,145,125,WHITE);
drawmat(song16,16,160,123,YELLOW);
drawmat(ti16,16,180,123,YELLOW);
drawmat(zi24, 24, 200, 119, CYAN);
drawmat(mo24, 24, 230, 117, GREEN);
drawmat(guan48, 48, 350, 110, RED);
drawmat(guan64, 64, 410, 100, YELLOW);for(i=0;i&15;i++)
drawmat(matarray16k+i*32,16,200+i*15,200,WHITE);
drawmat(matarray16k+8*32,16,200+i*15,200,WHITE);
drawmat(matarray16k+9*32,16,200+(++i)*15,200,WHITE); drawmat(matarray16k+10*32,16,200+(++i)*15,200,WHITE);
for(i=18;i&25;i++)
drawmat(matarray16k+(i-3)*32,16,200+i*15,200,WHITE);
/* 暂停一下,看看前面绘图代码的运行结果 */
closegr();
/* 恢复TEXT屏幕模式 */
return 0;}
错在哪,怎么改麻烦详细点说说
提问者采纳
这个是你没有理解字模和函数的意思。void&drawmat(char&*mat,int&matsize,int&x,int&y,int&color)这个函数要和char&zi24[]={&&/*&以下是&'字'&的&24点阵隶书&字模72byte*/搭配着用。也就是说,你要用字模转换工具把汉字转化成&char&**88[]。然后在把这个放在函数里。你看你的drawmat(yi12,12,100,125,WHITE);&yi12是没有定义的。而你看示例程序char&zi24[]={&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&以下是&'字'&的&24点阵隶书&字模72byte*/char&mo24[]={&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&以下是&'模'&的&24点阵楷体_GB2312&字模定义了“字”“模”两个字。所以函数drawmat(zi24,24,100,125,white)就是正确的。-----------------------------------------------------------------这样说可能你不是很明白,你可以参考一段我写的程序,下面是链接:-------------------------------------------------------------------另外字模转换工具在win-tc下就有。如图。在超级工具集里面。如果还有问题,可以在我的博客下留言。本人非大牛,但是可以一起讨论。&----------------------------------------------------------------------如果你还不明白的,可以看一下这个程序,然后对比一下你的程序。就知道了。*************************************************************#include&&Conio.h&#include&&graphics.h&#define&closegr&closegraphvoid&initgr(void)&/*&BGI初始化&*/{&&int&gd&=&DETECT,&gm&=&0;&/*&和gd=VGA,gm=VGAHI是同样效果&*/&&registerbgidriver(EGAVGA_driver);/*&注册BGI驱动后可以不需要.BGI文件的支持运行&*/&&initgraph(&gd,&&gm,&&&);}void&drawmat(char&*mat,int&matsize,int&x,int&y,int&color)/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/{&&int&i,&j,&k,&n;&&n&=&(matsize&-&1)&/&8&+&1;&&for(j&=&0;&j&&&&j++)&&&&for(i&=&0;&i&&&n;&i++)&&&&&&for(k&=&0;k&&&8;&k++)&&&&&&&&if(mat[j&*&n&+&i]&&&(0x80&&&&k))&&/*测试为1的位则显示*/&&&&&&&&&&putpixel(x&+&i&*&8&+&k,&y&+&j,&color);}char&yang12S[]={/*&以下是&'阳'&的&12点阵宋体&字模,24&byte&*/&&0xF7,0xC0,0x94,0x40,0x94,0x40,0xA4,0x40,&&0xA7,0xC0,0x94,0x40,0x94,0x40,0xF4,0x40,&&0x84,0x40,0x87,0xC0,0x84,0x40,0x00,0x00,};char&guang12S[]={/*&以下是&'光'&的&12点阵宋体&字模,24&byte&*/&&0x04,0x00,0x44,0x40,0x24,0x80,0x15,0x00,&&0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x00,&&0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,};int&main(void){&&int&i,&j;&&initgr();&/*&BGI初始化&*/&&setcolor(10);&&/*我定义的是&阳光&两个字,所以,要在主函数前,把阳光这两个字的字模计算出来。在上面,看到了吗。*/&&drawmat(yang12S,12,100,100,10);/*就是“阳”*/&&drawmat(guang12S,12,200,200,10);/*就是&光&*/&&getch();&/*&暂停一下,看看前面绘图代码的运行结果&*/&&closegr();&/*&恢复TEXT屏幕模式&*/&&return&0;}*****************************************************************
提问者评价
其他类似问题
c语言的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁这个C语言程序哪里错了_百度知道
这个C语言程序哪里错了
#include&stdio.h&int f(int);int g(int);main(){
scanf(&%d&,a); s=f(a); printf(&%d&,s);}int g(int x){ int t,i; t=1; for(i=1,1&=x;i++) {t*=t++; } }int f(int x){ int f,h,b; f=0; for(h=1;h&=x;h++) {
f=g(b)+f; } }我想用嵌套函数式求数列求找问题哪,高手能讲顺便讲讲两函数参数关系谢谢
我看我犯低级错误,,,逻辑问题输答案谁能说说
f(x)变量b啥没初始化递归函数般要终止判断求阶乘算:int fn(int n){if(n==1)
r=1;elser=fn(n-1)*n; //变量值逐渐减直等于1返}
额。。f()中b好像的确没有像a那样有个值,但应该改成什么样呢?我这个是要求阶乘的和,例如:1!+2!+3!+4!+5!+。。。+x!
直接用你的改#include&stdio.h&int f(int);int g(int);main(){
scanf(&%d&,a); s=f(a); printf(&%d&,s);}int g(int x){ int t,i; t=1; for(i=1,1&=x;i++) {t*=i; } }int f(int x){ int f,h; f=0; for(h=1;h&=x;h++) {
f+=g(h); } }
其他类似问题
c语言程序的相关知识
按默认排序
其他1条回答
知道要做结参数应啊
我要求的就是阶乘的和,例如:1!2!3!4!5!....20!的和
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言这个程序哪里出错了_百度知道
c语言这个程序哪里出错了
#include&stdio.h&void main(){ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; void transpose(int b[3][4]); void max_value(*p); transpose(a[3][4]); max_value(*a);}void transpose(int b[3][4]){ int m[4][3]={0}; for (int j=0;j&3;j++)
for(int i=0;i&4;i++)
m[i][j]=b[j][i];
printf(&倒置%d&,m);}哪错
提问者采纳
#include&stdio.h& void transpose(int a[3][4],int b[4][3]);void main(){
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3]; transpose(a,b);
printf(&倒置\n&); for(i=0;i&4;i++) {
for(j=0;j&3;j++)
printf(&%d &,b[i][j]);
printf(&\n&); } getchar();}void transpose(int a[3][4],int b[4][3]){
int i,j; for (int j=0;j&3;j++)
for(int i=0;i&4;i++)
b[i][j]=a[j][i];}帮改执行
c:\documents and settings\founder\桌面\zuoye10.c(23) : error C2146: syntax error : missing ';' before identifier 'b'
看一下23行是哪一行?我这里可以执行,VS2012
b[i][j]=a[j][i];
我是OK呢。你那里是用哪个编译器啊?wintc 可以执行的版本#include&stdio.h&&void transpose(int a[3][4],int b[4][3]);void main(){&&& int i,j;&&& int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};&&& int b[4][3];&transpose(a,b);& printf(&倒置后为\n&);&for(i=0;i&4;i++)&{&&&& for(j=0;j&3;j++)&&&&&&&& printf(&%d &,b[i][j]);&&&& printf(&\n&);&}&getchar();}void transpose(int a[3][4],int b[4][3]){&&& int i,j;&for ( j=0;j&3;j++)& for(i=0;i&4;i++)&& b[i][j]=a[j][i];}
其他类似问题
c语言的相关知识
按默认排序
其他2条回答
第行错吧二维数组写吧
那怎么写?
呃,是我看错了,你把代码贴全一点吧,这样一段东西是在是云里雾里,错误无处不在
就是将数组转置。
前面网友已经回答啦
几乎就没对的有。
那怎么将一个三行四列的数组转置
#include&stdio.h&#define&N&3#define&M&4int&main(){&&&&int&num[99][99];&&&&int&i,&j;&&&&for(i=0;&i&N;&i++)&&&&&&&&for(j=0;&j&M;&j++)&&&&&&&&&&&&scanf(&%d&,&num[i][j]);&&&&int&count=0;&&&&for(i=0;&i&M;&i++)&&&&{&&&&&&&&for(j=0;&j&N;&j++)&&&&&&&&{&&&&&&&&&&&&count++;&&&&&&&&&&&&if(count==N)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&printf(&%d\n&,num[j][i]);&&&&&&&&&&&&&&&&count=0;&&&&&&&&&&&&}&&&&&&&&&&&&else&&&&&&&&&&&&&&&&printf(&%d&&,num[j][i]);&&&&&&&&}&&&&}&&&&return&0;}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言问题 下面这个程序哪儿错了?求高手解答_百度知道
c语言问题 下面这个程序哪儿错了?求高手解答
#include&stdio.h&main(){
int i,j,k;
for(i=1;i&=9;i++){
for(j=1;j&=i;j++){
printf(&%d*%d=%3d&,i,j,k);
printf(&\n&)}}
提问者采纳
按照题目意思,应该是:k=i*j,而不是k=i*k吧如下: #include&stdio.h&main(){
int i,j,k;
for(i=1;i&=9;i++)
for(j=1;j&=i;j++)
printf(&%d*%d=%-3d&,i,j,k);
printf(&\n&) ;
提问者评价
其他类似问题
c语言的相关知识
其他5条回答
k没有初始化就使用,导致出现难以预料的情况产生。所以在定义变量的时候最好给其赋初始值,以后工作中都需要这么做2
printf(&\n&) 缺少分好,编译不过3 如果使用的是C++编译器, 需要定义int main()并且renturn 0; 或者直接定义void main()
少了个结果号printf(&\n&);
1.printf(&\n&)后面要加
。2.你的K没有赋初值,所以k=i*k;不行。(你把i*j打成i*k了)正确的代码:#include&stdio.h&#include&conio.h&//getch()的头文件main(){
int i,j,k;
for(i=1;i&=9;i++)
for(j=1;j&=i;j++)
printf(&%d*%d=%d
printf(&\n&);
getch();//让程序停一会,直到你按任意键}
printf函数后没有加分号;还有你的k没有赋初值所以运行结果是错误的 -------------------------------------------------补充下,你的那个输出对齐位置也不好,我这里给你一个你看看#include &stdio.h&int main(void){ int i,j; for(i=1;i&=9;i++) {
for(j=1;j&=i;j++)
printf(&%d*%d=%-3d&,j,i,i*j);
printf(&\n&); } return 0;}
#include&stdio.h&int main(){
int i,j,k;
for(i=1;i&=9;i++){
for(j=1;j&=i;j++){
printf(&%d*%d=%3d&,i,j,k);
printf(&\n&);} return 0;}比较一下,
你这犯的是语法错误,但是运行起来也是错误的,也有逻辑错误,现在不知道你的的意图,所以只能帮到这些了
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁帮我再看看这个C语言程序哪错了,求三角形的面积和周长_百度知道
帮我再看看这个C语言程序哪错了,求三角形的面积和周长
#include&stdio.h&#include&math.h&int main(void){ double a,b,c,s,area, printf(&Enter 3 sides of the triangle:&); scanf(&%lf%lf%lf\n&,&a,&b,&c); s=(a+b+c)/2; if((a+b&c)&&(a+c&b)&&(b+c&a)) {area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf(&area=%.2f;perimeter=%.2f\n&,&area,&perimeter);} else
printf(&Three sides do not correspond to a valid triangle\n&); return 0;
提问者采纳
#include&stdio.h&#include&math.h&int main(){ double a,b,c,s,area, printf(&Enter 3 sides of the triangle:&); scanf(&%lf%lf%lf&,&a,&b,&c); s=(a+b+c)/2; if((a+b&c)&&(a+c&b)&&(b+c&a)) {
area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf(&area=%.2f;perimeter=%.2f\n&,area,perimeter); } else
printf(&Three sides do not correspond to a valid triangle\n&); return 0;
}两错误首先输入候错误scanf(&%lf%lf%lf&,&a,&b,&c);面用加\n旧书输候错误要再前面加&
其他类似问题
按默认排序
其他5条回答
改面scanf(&%lf %lf %lf&,&a,&b,&c);//注意输入格式与 应printf(&area=%.2f;perimeter=%.2f\n&,area,perimeter);//printf 需要写要输变量名行 看看语规则基础
#include&stdio.h&#include&math.h&int main(void){ double a,b,c,s,area, printf(&Enter 3 sides of the triangle:&); scanf(&%lf%lf%lf&,&a,&b,&c); s=(a+b+c)/2.0; if((a+b&c)&&(a+c&b)&&(b+c&a)) {
area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf(&area=%.2perimeter=%.2lf\n&,area,perimeter); } else
printf(&Three sides do not correspond to a valid triangle\n&); return 0; }你的错误是在输出了area和perimeter的地址。
你好!朋友,你的程序是出了点小问题.要把scanf函数中\n的去掉和倒数第二个printf函数中的两个&去掉.就可以啦~我也是刚学c语言这些都是小问题以后要细心一点哦,很愿意能帮助你#include&math.h&int main(void){ double a,b,c,s,area, printf(&Enter 3 sides of the triangle:&); scanf(&%lf%lf%lf&,&a,&b,&c); s=(a+b+c)/2; if((a+b&c)&&(a+c&b)&&(b+c&a)) {area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf(&area=%.2f;perimeter=%.2f\n&,area,perimeter);} else
printf(&Three sides do not correspond to a valid triangle\n&); return 0;
printf(&area=%.2f;perimeter=%.2f\n&,&area,&perimeter);
area与perimeter前的地址符号“&”去掉
在 scanf(&%lf%lf%lf\n&,&a,&b,&c);中输入三个数要用回车键间隔
建议用 scanf(&%lf,%lf,%lf&,&a,&b,&c);
倒数第二个printf错了,把area和perimeter前的取地址符号去掉就行了
c语言程序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 c语言学了有什么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信