本文目录一览:
- 1、求助C语言牛人
- 2、C语言牛人请进
- 3、求助C语言牛人···很简单的作业
- 4、那位牛人,用C语言写一个二进制转化为十进制的程序!!??
- 5、C语言牛人:代码求修改?跪谢!
- 6、求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();
}