c语言程序

c语言程序,第1张

#include<stdio.h>

void sort(float *a, int n){

int i,j

float t

for (i=0i<n-1i++)

for (j=i+1j<nj++)

if (a[j]>饥团a[i]) {t=a[i]a[i]=a[j]a[j]=t}

}

void insert(float *a,float x,int n)

{

int i,m

if (x<=a[n-1]){a[n]=x}

else if (x>=a[0]){

for (i=ni>0i--) a[i]=a[i-1]a[0]=x

} else {

for (i=0i<n-1i++) if (x<=a[i] &&x>=a[i+1]){ m=ibreak}

for (i=n-1i>mi--) a[i+1]=a[i]a[m+1]=x

}

}

int find(float *a,float y,int n){

int flag= -99,i

for (i=0i<ni++) if (a[i]==y){flag=ibreak}

return flag //让罩找到则返回下标号,没找到为负值

}

void save(float *a, int n){

FILE *fp

int i

fp=fopen("student_score.txt","w")

for (i=0i<ni++) fprintf(fp,"%g\n",a[i])

fclose(fp)

printf("saved in student_score.txt\n")

}

int main() {

float s[101],x,y

int i,n,fd

printf("input n: ")scanf("%d",&n)

printf("\ninput %d scores: ",n)

for (i=0i<ni++) scanf("%f",&s[i])

printf("\ninput one extra score x: ")

scanf("%f",&x)

sort(s,n)

insert(s,x,n)

printf("input score y which you want to find:\n")

scanf("%f",&y)

fd=find(s,y,n+1)

if ( fd<0 ) printf("Not find\n")else printf("find at %d\n",fd)

save(s,n+1)

//烂滑橘for (i=0i<n+1i++) printf("%g\n",s[i])

return 0

}

#include <stdio.h>

/**

float变量内部编码16进制:0xbd600000

等价于:

floatb变量内部编码2进制:10111101011000000000000000000000

该二进制每位的含义为:

1 01111010 11000000000000000000000

S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM

其中:

S:1位,符号档岩漏位,0表示正数,行烂1表示负数

E:8位,指数加上127后的值的二进制数

M:23位,24位底数去掉最高位1后的二进制数

由此得到:

这个浮点数是:负数

这个浮点数的指数枣郑部分是:

01111010(2进制) - 127(10进制) = 122(10进制)- 127(10进制) = -5(10进制)

这个浮点数的底数部分是:

11000000000000000000000(2进制) + 最高位1 = 1.11000000000000000000000(2进制)

现在通过指数部分的值,来调整底数部分值。调整方法为:

如果指数为负数,底数的小数点向左移,如果指数E为正数,底数的小数点向右移。

这里指数是-5,底数小数点向左移动5位,得到:

0.0000111000000000000000000000(2进制)

上面这个二进制就是浮点数的值,转换为10进制是:

1/2^5 + 1/2^6 + 1/2^7 = 1/32 + 1/64 + 1/128 = 0.0546875(10进制)

下面是验证的代码

**/

#include <stdio.h>

int main(void) { 

    int i= 0xbd600000

    float *pf=(float*)(&i)

    //输出:-0.05468750

printf("%.8f",*pf)

return 0

}

1、★编写程序,输入两个整数:1500和350,求出它们的商和余数并输出。

main()

{int

a

int

b

scanf("%d%d",a,b)

printf("商:%d\n余数:%d",a/b,a%b)

}

2、★编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,b中原来的值给c,

c中原来的值给a,且输出改变后的a,b,c的值

main()

{int

a

int

b

int

c

int

tmp

scanf("%d%d%d",a,b,c)

printf("a:%d

b:%d

c:%d",a,b,c)

tmp=c

c=b

b=a

a=c

printf("a:%d

b:%d

c:%d",a,b,c)

}

3、★输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。

main()

{int

a

int

b

scanf("%d%d",a,b)

printf("a+b=%d\na-b=%d\na*b=%d\na/b=%d\n(float)a/b=%f\na%b=%d",a+b,a-b,a*b,a/b,(float)a/b,a%b)

}

4、★输入一个非负数,计算以这个数为半径的圆周长和面积。

main()

{float

a

scanf("%f",a)

printf("周长=%f\n面积=%f",2*a*3.14,3.14*a*a)

}

5、★输入任意一个三位数,将其各位数字反序输卖腔出(例如输入123,输出321).

main()

{int

a

int

b

scanf("%d",a)

printf("%d",a%10)

a=a%100

printf("%d",a%10)

a=a%10

printf("%d",a%10)

}

6、★输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT”

(要求用条件表达式进行判断,不使用if语句)

main()

{int

a

int

b

int

c

int

n=0

scanf("%d%d%d",a,b,c)

a%2==1?n++:a

b%2==1?n++:b

c%2==1?n++:c

if

n==2

printf("YES")

else

printf("NOT")

}

7、★求前驱字符和后继字符。输入一中拍衫个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的贺毕ASCII码值。

main()

{char

a

scanf("%c",a)

printf("%c%c%c"a-1,a,a+1)

}

累啊


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12414178.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存