您的位置:

牛人c语言,c语言大牛

本文目录一览:

求助C语言牛人

冒泡排序是:相邻两数两两比较,进行相邻大小的交换,共进行N-1次,每轮 进行N-1-i次.核心程序段为:

for(i=0;iN-1;i++)

{

for(j=0;jN-i-1;j++)

if(a[j]a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp}

}

选折排序是:首数与后数进行两两相比,按大小进行交换,共进行N-1次,每轮进行N-1次,每轮进行从i+1开始N-1为止。核心程序段为:

for(i=0;iN-1;i++)

{

for(j=i+1;jN-1;j++)

if(a[i]a[j])

{temp=a[i];a[i]=a[j];a[j]=temp}

}

注意了与冒泡排序的核心段的区别在于:

(1)交换的两个对象:冒泡是 a[j]a[j+1]

选折是 a[i]a[j]

(2)轮次的变化: 冒泡是 for(j=0;jN-i-1;j++)

选折是 for(j=i+1;jN-1;j++)

冒泡的形式是:a[n]与啊a[n+1]比较交换

选折的形式则是:

第一次 a[0]与以后的比较交换

第二次 a[1]与以后的比较交换

........

第n次是a[n]与以后的比较交换

C语言牛人请进

# include stdio.h

# include math.h

int main (void)

{

double a,b;

double j,k;

printf("请输入 a = ");

scanf("%lf", a);

printf("请输入 b = ");

scanf("%lf", b);

j = sin(a);

k = sin(b);

printf("b的正弦值为:%lf\n", j);

printf("b的正弦值为:%lf\n", k);

if(j k)

printf("a的正弦值大,值为:%lf\n", j);

else

printf("b的正弦值大,值为:%lf\n", k);

return 0;

}

求助C语言牛人···很简单的作业

首先,我要说的是这是很基础的问题,需要努力啊!

我给你提供了两种交换排序方法,在程序中选择其中一个即可。另外给你提供了选择排序方法。程序运行无误。

#includestdio.h

void bubble_sort(int a[],int len)

{

int i=0,j=0;

int temp=0,flag=0; //flag 为交换标志,对代码优化

for(i=0;ilen;i++)

{

flag=0;

for(j=len-2;j=i;j--)

{

if(a[j+1]a[j])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

flag=1;

}

}

if(flag!=1)

return;

}

}

void quick_sort(int a[],int low,int high)

{

int i,j,m;

if(lowhigh)

{

m=a[low];

i=low;

j=high;

while(ij)

{

while(ija[j]=m)

j--;

if(ij)

a[i++]=a[j];

while(ija[i]=m)

i++;

if(ij)

a[j--]=a[i];

}

a[i]=m;

quick_sort(a,low,i-1);

quick_sort(a,i+1,high);

}

}

void select_sort(int a[],int len)

{

int i,j,x,l;

for(i=0;ilen;i++)

{

x=a[i];

l=i;

for(j=i;jlen;j++)

{

if(a[j]x)

{

x=a[j];

l=j;

}

}

a[l]=a[i];

a[i]=x;

}

}

void main()

{

int a[10],i;

printf("请输入10个整数\n");

for(i=0;i10;i++)

scanf("%d",a[i]);

bubble_sort(a,10);//交换排序方法一:冒泡法

// quick_sort(a,0,9);//交换排序方法二:快速排序

select_sort(a,10);//选择排序

printf("排序后:\n");

for(i=0;i10;i++)

printf("%d ",a[i]);

printf("\n");

}

不用急了,别忘了悬赏啊!哈哈。

那位牛人,用C语言写一个二进制转化为十进制的程序!!??

一下两个程序均在VC在编译通过。

/*

如果这个二进制数比较大的话, 大到只能用数组储存这个二进制数,

当然如果大到转化成10进制int存不下的情况那另当别论

*/

#includestdio.h

#includestring.h

int main()

{

char a[33];

int i, num = 0;

scanf("%s", a);

for(i=strlen(a)-1; i=0; i--)

{

num*=2; /*如果用位运算的话,速度会更快*/

num+=a[i]-'0';

}

printf("%d\n", num);

return 0;

}

/*

如果这个二进制数的位数不超过10位的话

可用这个程序

*/

#includestdio.h

int main()

{

int num = 0, a, j=1;

scanf("%d", a);

while(a)

{

num += (a%10) * j;

a /= 10;

j *= 2;

}

printf("%d\n", num);

return 0;

}

C语言牛人:代码求修改?跪谢!

主要问题有4个,小问题也不少:

(1)输入输出没有按照题目的格式。

(2)找最大最小的时候,只要记录位置,不用交换元素。

(3)t1,t2根本就没有声明。

(4)数组最大是a[9],不是a[10]

改正后的程序为:

# includestdio.h

# includeconio.h

# define N 10

int main()

{

    int N = 10;

    int i, a[10], *p, *pmin, *pmax, t;

    for (i = 0; i  N; i++)

    scanf("%d,", a[i]);

    p = a[0]; pmax = a[0]; pmin = a[0];

    for (i = 0; i  N; i++)

    {

        if (*(p + i)  *pmax)

        {  pmax = (p + i); }

        else if (*(p + i)  *pmin)

        { pmin = (p + i);  }

    }//找出最大和最小的数值 

    t = *pmin; *pmin = a[0]; a[0] = t;

    t = *pmax; *pmax = a[9]; a[9] = t;

    //交换 

    for (i = 0; i  N; i++)

        printf("%d,", *(p + i));

    printf("\n");

    return 0;

}

结果为:

求C语言牛人解释一下

V飘渺V上次那个解释里面有个地方有问题,又改写了一下。有邮箱的话留下我重新传给你。

#includegraphics.h

#includemath.h

#includedos.h

#define pi 3.1415926

#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;

#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;

#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)

void init()/* 画图函数 */

{int i,l,x1,x2,y1,y2;

setbkcolor(0); /* 设置背景色为黑色(颜色数值为0) */

circle(300,240,200);/* 画圆,圆中心(300,240),半径200,之所以如此是因为屏幕尺寸为640x480,这样设置坐标可以使圆靠近屏幕中心 */

circle(300,240,205); /* 再画一个同心圆,半径205,产生具有立体感的时钟表盘 */

circle(300,240,5); /* 画中心的两个小圆,半径分别为5,10 */

circle(300,240,10); /* 本来画出的圆变成了椭圆,这是因为显示器不是正方形(640x480),x,y方向不同有压缩比,有时可设比例因子k=480/640变换成接近圆形输出 */

line(295,60,300,80);/*以下画图形'XII',均为用小线段绘制,下同 */

line(295,80,300,60);

line(302,60,302,80);

line(304,60,304,80);

line(301,60,305,60);

line(301,80,305,80);

line(468,230,468,250);/*以下画图形'III' */

line(473,230,473,250);

line(478,230,478,250);

line(467,230,479,230);

line(467,250,479,250);

line(294,400,297,420);/*以下画图形'VI' */

line(297,420,300,400);

line(303,400,303,420);

line(302,400,304,400);

line(302,420,304,420);

line(125,230,135,250);/*以下画图形'IX' */

line(125,250,135,230);

line(122,230,122,250);

line(121,230,123,230);

line(121,250,123,250);

for(i=0;i60;i++)/* 画表盘上上的60个小刻度,长度为5,每个刻度代表1分钟 */

{if(i%5==0) l=15;/* 每第5个刻度代表整点小时,长度为1 */

else l=5;

x1=200*cos(i*6*pi/180)+300;/* 利用圆的参数方程形式确定各刻度的起点坐标 */

y1=200*sin(i*6*pi/180)+240;

x2=(200-l)*cos(i*6*pi/180)+300;/* 同理确定终点坐标 */

y2=(200-l)*sin(i*6*pi/180)+240;

line(x1,y1,x2,y2);/* 从起点到终点画线,表示各个刻度 */

}

}

main()

{

int x,y;

int gd=VGA,gm=2;/* 采用VGA驱动方式,显示模式为2(VGAHI 分辨率640×480 16色) */

unsigned char h,m,s;/* 定义字符时,分,秒,个人感觉这里应该定义成int型而非char型 */

struct time t[1]; /* 定义t[1]为time结构体类型 */

initgraph(gd,gm,"d:\\tc"); /* 初始化,设置屏幕为图形工作模式,参数“d:\\tc”指定驱动程序存放的位置是d:\tc文件夹 */

init();/* 调用画图函数 */

setwritemode(1);/* 设置图形方式下画线的输出模式,这里为方式1(异或方式) */

gettime(t);/* 调用获得dos形式的当前时间并存入t所指向的结构体struct time中 */

h=t[0].ti_hour;/* 小时数给h */

m=t[0].ti_min; /* 分钟数给m */

s=t[0].ti_sec; /* 秒给s */

setcolor(7); /* 设置绘图色为淡灰色LIGHTGRAY(颜色数值为7) */

d(150,h,30);/* 用淡灰色画时钟的时针,h在变化故时针会随之变化位置,时针线段起点为表盘的中心(300,240) */

setcolor(14);/* 设置绘图色为黄色YELLOW(颜色数值为14) */

d(170,m,6); /* 用黄色画时钟的分针,m在变化故分针会随之变化位置,分针线段起点也为表盘的中心(300,240) */

setcolor(4);/* 设置绘图色为红色RED(颜色数值为4) */

d(190,s,6); /* 用红色画时钟的秒针,s在变化故秒针会随之变化位置,秒针线段起点也为表盘的中心(300,240) */

while(!kbhit())/* 按任一键结束如下循环 */

{while(t[0].ti_sec==s)/* 如果换算得到的时间秒等于整秒数s */

gettime(t);/* 重新调用函数gettime获得系统时间 */

sound(400);/* 调用发声函数使扬声器发频率400Hz(人耳听力范围20-20000Hz)声音 */

delay(70); /* 延时70毫秒 */

sound(200);/* 再发频率200Hz声音 */

delay(30);/* 延时30毫秒 */

nosound();/* 关闭扬声器 */

setcolor(4); /* 设置绘图色为红色RED(颜色数值为4) */

d(190,s,6); /* 重新画秒针 */

s=t[0].ti_sec;/* gettime获得系统时间经换算秒数给s */

d(190,s,6);/* 再画秒针,秒针每一秒位置变化一次 */

if (t[0].ti_min!=m)/* 如果gettime获得系统时间计算得出的时间分和前面的m不同,说明秒针已记满60,时间分应加1以和系统时间同步 */

{/* 分种数值增加位置必然变化 */

setcolor(14);/* 再设置画图颜色,画分针原来位置 */

d(170,m,6);

m=t[0].ti_min;/* 同时把当前实际时间分给m */

d(170,m,6); /* 画当前分针位置 */

}

if (t[0].ti_hour!=h)/* 如果gettime获得系统时间计算得出的时间小时和前面的h不同,说明分针已记满60,时间小时应加1以和系统时间同步 */

{ setcolor(7);/* 设置绘图色画时针原来位置 */

d(150,h,30);

h=t[0].ti_hour;/* 同时把当前实际时间小时给h */

d(150,h,30); /* 画时针当前位置 */

sound(1000);/* 发频率1000Hz声音 */

delay(240);/* 延时240毫秒 */

nosound(); /* 关闭扬声器 */

delay(140);/* 延时140毫秒 */

sound(2000);/* 发频率2000Hz声音 */

delay(240); /* 延时240毫秒 */

nosound(); /* 关闭扬声器 */

settextstyle(0,1,1);/* 图形方式下设置当前要显示的文本属性 */

outtextxy(300,420,"XII");/* 从坐标(300,420)开始输出显示文本XII,由于上面已经画出了XII,所以这句和上面一句均多余,应该去掉 */

}

}

getch();

closegraph();

}