c语言编程在线 c语言在线编译器网页
大家好,今天来为大家解答c语言编程在线这个问题的一些问题点,包括c语言在线编译器网页也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
有什么好的C语言在线编程网站吗
要学C语言的话,其实不用计算机基础知识也可以,不过需要用到有数学的知识,因为C语言属于计算机方面的编程类而不像是一些理论性的东西,它要求动手能力要更强一点。假如你想快点学C语言的话就是经常上机写程序,程序写多了就自然懂了,有疑问的问题就上机去做个实验就明白了,实验中会让你快速成长。如果你想学得更精通的话,必须学习数据结构与算法。它需要一定的数学功底,特别是高中的一些知识。
3。注意的地方不多,再强一次,编程的东西不能只是纸上谈兵。现在一般很少在TURBRO2。0上写程序了,介绍你一些C语言编程的软件,VC6。0,DEVCPP等。
网站推荐 csdn,编程中国,
C语言编程问题!!高手救命,在线等答案
分析过程:
重新定义结构体:
typedef struct student{
float c;
float java;
} STU;
然后在for循环内仅使用:
scanf("%f",&stu[i].c);//或者&(stu[i].c)
scanf("%f",&stu[i].java);//或者&(stu[i].java)
问题依旧。
但如果此时已经定义了float fTmp;并在循环体内这样写:
scanf("%f",&fTmp);
stu[i].c= fTmp;
scanf("%f",&fTmp);
stu[i].java= fTmp;
则问题得到解决。
几经修改,最后改成最原先的代码,问题也不存在了,无语……
原因分析:
可能是C运行库的问题,代码方面理论上没有任何问题的。
另外,对于应该输入float的时候用户输入char导致跳过某些变量输入的情况,这和scanf内部实现的机制有关,因为它是靠类型指针来获取对应值的,那么如果对于普通类型(比如float,VC6中为4字节)变量,如果用户的录入有问题(比如char*),scanf会直接跳过当前变量的赋值。针对这种情况,如果非要用C语言而不是C++的话,那么目前还没有好的防止错误或者在输入错误时给出提示的方法。
以下是模拟错误的执行过程:
姓名:张三
C分数:12
JAVA分数:12
姓名:王
C分数:99
JAVA分数:66
姓名:刘
C分数:34
JAVA分数:56
姓名:陈
C分数:aa
JAVA分数:姓名:cc
C分数:bb
JAVA分数:
<01> [0x0013FEE4] 12.00 [0x0013FEE8] 12.00"张三"
<02> [0x0013FF04] 99.00 [0x0013FF08] 66.00"王"
<03> [0x0013FF24] 34.00 [0x0013FF28] 56.00"刘"
<04> [0x0013FF44]-107374176.00 [0x0013FF48]-107374176.00"陈"
<05> [0x0013FF64]-107374176.00 [0x0013FF68]-107374176.00"cc"
Press any key to continue
用于模拟该错误的代码如下:
#include"stdio.h"
#define n 5
struct student
{
int num;
float c;
float java;
char name[20];
};
void main()
{
struct student stu[n];
int i;
for(i=0;i<n;++i)
{
stu[i].num=i+1;
printf("姓名:");
fflush(stdin);
gets(stu[i].name);
printf(" C分数:");
scanf("%f",&stu[i].c);
// printf("[0x%08X] size:%3d\n",&(stu[i].c),sizeof(stu[i].c));
printf(" JAVA分数:");
scanf("%f",&(stu[i].java));
}
printf("\n\n");
for(i=0;i<n;++i)
{
printf("<%02d> [0x%08X]%.2f [0x%08X]%.2f\"%s\"\n",stu[i].num,&(stu[i].c),stu[i].c,&(stu[i].java),stu[i].java,stu[i].name);
}
}
求C语言编程
哦。难度不大,PS本人数学还可以啦。哈哈,就是逆时针旋转后,3个坐标点已经超出了屏幕的显示范围:
我给楼主详细解释下吧:
大学线性代数里有坐标系统转换的。有了这个公式剩下的就是C绘图了。
知识点1:平面上一点X1,Y1,绕一点P(x0,y0)旋转任意角度A后,新坐标(X2,Y2)的计算公式入下:
x2=(y1-y0)*sina°+(x1-x0)*cosa°
y2=(y1-y0)*cosa°-(x1-x0)*sina°
知识点2:如果C语言绘图模式无法显示你的坐标。屏幕做左上角是0,0,那么你可以讲你的坐标系移动到一个相对位置,这个就是moverel(x,y)函数。
我的代码移动了200,200,这样你旋转后的新三角形式可以显示的。
知识点3:sin函数和cos函数的应用。里面的参数要把角度换成弧度制
角度*3.1415926/180
花了点时间给你写了一个,代码敲的辛苦啊。很多年不用C了。
代码如下:
#include<graphics.h>
#include<math.h>
#define PI 3.1415926
void changZuoBiao(double x1,double y1,double px,double py,double angle,double a[2])
{
a[0]=(y1-py)*sin((double)(angle*PI/180.0))+(x1-px)*cos((double)(angle*PI/180.0));
a[1]=(y1-py)*cos((double)(angle*PI/180.0))-(x1-px)*sin((double)(angle*PI/180.0));
}
void main()
{
double aNew[2],bNew[2],cNew[2];/*¡ä?¡¤?D?¦Ì?¡Áa??o¨®¦Ì?¡Á?¡À¨º*/
double angle=-90;
int DetaX=200;
int driver,mode;
int i;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setcolor(2);
line(50+DetaX,50+DetaX,100+DetaX,50+DetaX);
line(50+DetaX,50+DetaX,50+DetaX,70+DetaX);
line(100+DetaX,50+DetaX,50+DetaX,70+DetaX);
changZuoBiao(50,50,20,30,angle,aNew);
changZuoBiao(50,70,20,30,angle,bNew);
changZuoBiao(100,50,20,30,angle,cNew);
line(aNew[0]+DetaX,aNew[1]+DetaX,bNew[0]+DetaX,bNew[1]+DetaX);
line(aNew[0]+DetaX,aNew[1]+DetaX,cNew[0]+DetaX,cNew[1]+DetaX);
line(bNew[0]+DetaX,bNew[1]+DetaX,cNew[0]+DetaX,cNew[1]+DetaX);
getch();
getch();
getch();
getch();
restorecrtmode();
}
代码的思路很清晰:
changZuoBiao(x1,y1,x2,y2,angle,a[2])
{
}
就是把x1,y1这一点绕x2,y2,旋转angle角度后的新坐标放在a[0]和a[1]中.
Dev-C++,TC2.0编译通过。
全屏模式不方便截图:图略
详细问题可以继续向我咨询。
代码敲的辛苦,楼主早日结题。祝福楼主好运!
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!