关于C语言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言相关的知识,希望对你有一定的参考价值。

从题1.3开始有错了

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()

int a,b,c,d;
float f,g;
printf("练习1\n");
printf("是否进入练习1.1\n1:是\t2:否\n");
scanf("%d",&a);
while((a!=1)&&(a!=2))

printf("请确认后再输入:\n\n");
scanf("%d",&a);

if(a==1)

printf("欢迎进入练习1.1\n\n\n\n");
system("pause");
printf("1.1:输出字符:\n i am a student\n i love china \n\n\n\n");
system("pause");

else

printf("请看下题\n");

printf("\n\n\n\n是否进入练习1.2\n1:是\t2:否\n");
scanf("%d",&a);
while((a!=1)&&(a!=2))

printf("请确认后再输入:\n\n");
scanf("%d",&a);

if(a==1)

printf("欢迎进入练习1.2\n\n\n\n1.2:两数相加:\n ");
printf("请输入两个数字\n");
scanf("%f%f",&g,&f);
printf("%f+%f=%f\n\n\n\n",g,f,g+f);

else

printf("请看下题\n\n\n\n");

printf("\n\n\n\n是否进入练习1.3\n1:是\t2:否\n");
scanf("%d",&a);
while((a!=1)&&(a!=2))

printf("请确认后再输入:\n\n");
scanf("%d",&a);

if(a==1)

printf("欢迎进入练习1.3\n\n\n\n1.3:求函数值:\n ");
system("pause");
printf("cos60=%f\n",cos(60));
printf("log10=%f\n",log10(10));
printf("2^3=%f\n",pow(2,3 ));

else

printf("请看下题\n\n\n\n");


system("pause");


为什么说有多个重载函数。pow和log10 都是的,还有cos为什么算的是错的
还有就是2^3=%f可以有正确答案 2^3=%d就是0啊

重载:函数名相同,参数个数或类型不同
你可以看下这个几个函数的声明,
pow返回值为浮点型,所以应该用%f或%lf;
cos函数里的参数为弧度值,不是度°,60° = 60° * π/180° = π/3:
参考技术A 我用VC6.0 没有错误 那个cos 的参数是实数 不是角度值
可以printf("2^3=%d\n",(int)pow(2,3 ));轻质砖换一下 pow的参数和返回值都是double的
练习1
是否进入练习1.1
1:是 2:否
1
欢迎进入练习1.1

1.1:输出字符:
i am a student
i love china

是否进入练习1.2
1:是 2:否
1
欢迎进入练习1.2

1.2:两数相加:
请输入两个数字
2 3
2.000000+3.000000=5.00000

是否进入练习1.3
1:是 2:否
1
欢迎进入练习1.3

1.3:求函数值:
cos60=-0.952413
log10=1.000000
2^3=8.000000
Press any key to continue追问

那为什么2^3不能等于%d啊,等于就是0

关于c语言宏定义

typedef unsigned char BYTE;
typedef unsigned short WORD;
意思是可以用BYTE替代unsigned char 对么
但是后面更不明白了
#define LOBYTE(w) ((BYTE)(WORD)(w))
#define HIBYTE(w) ((BYTE)((WORD)(w) >> 8))
w是哪里来的不需要事先定义么,LOBYTE(w)代表这什么意思
BYTE WORD为什么这么用

typedef unsigned char BYTE;
typedef unsigned short WORD;
意思是可以用BYTE替代unsigned char
是对的,BYTE,WORD是新的变量类型

#define LOBYTE(w) ((BYTE)(WORD)(w))

这里是宏定义。类似函数定义,w作为参数,是文本。在编译时把LOBYTE(w)变为 ((BYTE)(WORD)(w))。比如输入:
WORD dat;
BYTE b ;
b=LOBYTE(dat);
编译时会替换为b=((BYTE)(WORD)(dat));意思是得到低字节部分。
同理HIBYTE得到高字节部分
参考技术A ypedef unsigned char BYTE;
typedef unsigned short WORD;
意思是可以用BYTE替代unsigned char
是对的,BYTE,WORD是新的变量类
参考技术B LOBYTE(w) 是宏定义函数,w在函数体指明了。
LOBYTE(w)是取w的低八位, word是指明w是word类型。

以上是关于关于C语言的主要内容,如果未能解决你的问题,请参考以下文章

关于C语言指针的问题

关于C语言关闭窗口的问题

关于C语言的问题

C语言中 关于颜色的代码编写

关于c语言宏定义

关于C语言里面指针赋值的类型问题,还有一些关于指针的问题