两道C语言考试题,在线等待,马上给分.(150分)

悟空1

Unregistered / Unconfirmed
GUEST, unregistred user!
1.用冒泡法都10个数由小到达排序.要求在mian函数中输入10个数,调用sort函数进行排序,
排序结果在main函数中输出,
2.在mian中输入10个数,在函数invert中将10个数按反序存放并在mian里输出结果.
很简单的,只是我对C语言已经陌生了.
 
有一百五十分!我先吃完饭,再来写的。
你等着。
 
我也和你一样,对C点淡忘了!真是有心没力呀!!
 
1.c的语法我已忘得差不多了,用delphi作答吧(知道方法就行了。已测试):
var arr:array[0..9] of integer;
i,j,a:integer;
begin
arr[0]:=12;arr[1]:=13;arr[2]:=35;arr[3]:=34;arr[4]:=36;
arr[5]:=15;arr[6]:=81;arr[7]:=72;arr[8]:=83;arr[9]:=92;
for i:=0 to 9do
//解法就在这个循环里
for j:=0 to i-1do
begin
a:=arr[j];
if a>arr[j+1] then
begin
arr[j]:=arr[j+1];
arr[j+1]:=a;
end;
end;
label1.caption:=inttostr(arr[0]);
for i:=1 to 9do
label1.Caption := label1.Caption +' '+inttostr(arr);
end;
稍候再给出第2题的解法。
 
第二个:
void main()
{
int i;
long aa[10];
printf("input 10 digits/n");
for (i = 0;i < 10;i ++)
{
scanf("%l",&amp;aa);
}
invert(aa);
for (i = 0;i < 10;i ++)
{
printf("aa[%d] = %l/n",aa);
}
}
invert(long aa[10])
{
int i;
long bb[10];
for (i = 0;i < 10;i ++)
{
bb = aa[9 - i];
}
for (i = 0;i < 10;i ++)
{
aa = bb;
}
}
 
现在给出第二题的解法:
var arr:array[0..9] of integer;
i,a:integer;
begin
arr[0]:=12;arr[1]:=13;arr[2]:=35;arr[3]:=34;arr[4]:=36;
arr[5]:=15;arr[6]:=81;arr[7]:=72;arr[8]:=83;arr[9]:=92;
label1.caption:=inttostr(arr[0]);
for i:=1 to 9do
label1.Caption := label1.Caption +' '+inttostr(arr);
for i:=0 to (length(arr) div 2)-1 do
begin
a:=arr;
arr:=arr[length(arr)-1-i];
arr[length(arr)-1-i]:=a;
end;
label2.caption:=inttostr(arr[0]);
for i:=1 to 9do
label2.Caption := label2.Caption +' '+inttostr(arr);
end;
 
sort(int num[10])
main()
{int x,num[10]={9,8,7, 6,5,4,3,2,1,0}
sort(num);
for (x=0;x<10;x++){
printf("%d ",num[x]);
}
}
sort(int num[10])
{int i,j,swap;
for (i=0;i<9;i++)
{for (j=0;j<9;j++)
{
if(num[j]>num[j+1])
{
swap=num[j];
num[j]=num[j+1];
num[j+1]=swap;}
}
}
}
先来第一道,因为没有TC,不知道能不能通过的。
 
喂,楼上的,我什么时候说我不会pascal了?
 
invert (int num[10])
{int i,swap;
for(i=0;i<5;i++)
{swap=num;
num=num[9-i];
num[9-i]=swap;
}}
 
to:dedema
sort(int num[10])
{int i,j,swap;
for (i=0;i<9;i++)
{for (j=0;j<9;j++) 这里应该是for(j=0;j<9-i;j++)
{
if(num[j]>num[j+1])
{
swap=num[j];
num[j]=num[j+1];
num[j+1]=swap;}
}
}
}
 
多人接受答案了。
 
1.
#include <stdio.h>
main()
{
int a[10],i;
for (i=0;i<10;i++)
scanf("%d",&amp;a);
sort(a);
for (i=0;i<10;i++)
printf("%d ",a);
}
sort(int b[])
{
int i,j,temp;
for (i=0;i<9;i++)
for (j=i+1;j<10;j++)
if (b>b[j])
{
temp=b;
b=b[j];
b[j]=temp;
}
}
2.
#include <stdio.h>
main()
{
int a[10],i;
for (i=0;i<10;i++)
scanf("%d",&amp;a);
invert(a);
for (i=0;i<10;i++)
printf("%d ",a);
}
invert(int b[])
{
int i,j,temp;
for (i=0;i<5;i++)
{
temp=b[9-i];
b[9-i]=b;
b=temp;
}
}
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
743
DelphiTeacher的专栏
D
D
回复
0
查看
719
DelphiTeacher的专栏
D
顶部