C语言编程题,10个元素,让其首尾相倒,主函数输入地址,调用子函数
悬赏分:5|解决时间:2009-3-29 15:03 |提问者:小大魔术师
急,各位哥哥姐姐们,帮帮忙啦,谢谢
最佳答案
//---------------------------------------------------------------------------
#include
typedef int datatype;
void rev(datatype *a,int len)
{
int i;
datatype temp;
for (i = 0; i temp=a[i]; a[i]=a[len-1-i]; a[len-1-i]=temp; } } int main(int argc, char* argv[]) { int i; datatype b[10]={1,2,3,4,5,6,7,8,9,10}; rev(b,10); for (i = 0; i<10; i++) { printf("%d\n",b[i]); } return 0; 实验六函数与多文件编程 C语言 2008-12-06 13:32:41 阅读119 评论1字号:大中小订阅 【实验目的】 1、掌握函数类型和参数的使用方法; 2、了解头文件的作用及编制方法。 【实验任务】 1、编写分配一块内存的程序init。 2、编写完成读进10个双精确度值的函数readin。该函数能将这些数据存入由init函数申请的存储块中。 3、编写数值求积的通用函数product。 4、编写一个sort函数,用于将存储块中的的数据读入数组a中,然后将a中的数据按由小到大的顺序排序。 5、在主程序中调用这些函数(它们所在文件如下表所示)。并输出:第一次申请的内存块中的内容、数组排序后的内容。 sort product readin init 声明 main sort.c product.c readin.c init.c s4.h s4.c 【操作步骤】 一、主菜单的设计: 二、readin函数的实现: 三、product函数的实现: 四、sort函数的实现: 【实验指导】 1、s4.h。预处理和函数及公共变量的声明。 2、init.c。实现init函数的功能。由于从键盘读取的数据需要存入申请的内存块中,因此,这个函数的返回值应为double类型的指针。 3、readin.c。主要定义readin函数读取10个double类型的数据。可以将init 函数的返回值作为该函数的形参。由于它是一个double类型的指针,这样,直接通过参数获得数据,该函数不需要返回值,可以声明为void类型。 4、product.c。主要定义product函数,用于返回存储块中的所有数据的积。它需要三个参数:存储区的地址、数据量、能够返回积的double类型的指针。函数本身无需返回值。 5、sort.c。主要定义sort函数,用于数组排序。也可以通过指针作为函数形参而无需函数返回值。排序方法有:直接选择排序、直接插入排序或冒泡排序、归并排序等。 6、注意主程序s4.c中必须包含s4.h文件。 7、如果A.c文件中定义了一个全局变量(如:int myc;),而B.c文件中需要使用该变量,则在B文件中需要声明(如:extern int myc;)。 ***参考源代码: #include "s4.h" const int SIZE=10; void iniscn() { clrscr();gotoxy(1,4); cputs("操作提示:d-数据录入;c-结果输出;x-退出。"); gotoxy(1,6); } void main(void) { double *x,*y,res,a[10]={0.0}; int i,c,flag=0; iniscn(); while(1) { c=(int)getch(); switch(c) { case 120:exit(0); /*按键x则退出*/ case 100: /*按键d请求数据录入*/ { if((x=init(SIZE))==NULL){puts("申请内存失败,操作取消!");return;} iniscn();readin(x);flag=1;break;} case 99:/*按键c输出结果*/ { if(flag==0){puts("请先录入数据!");break;} product(x,&res,SIZE); printf("以上数据的积为:%10.2f\n\tx:\n",res); for(i=0;i {if(i==5)printf("\n"); printf("%10.2f",*(x+i));} printf("\n\t递增排序结果:\n"); sort(x,a,SIZE); for(i=0;i {if(i==5)printf("\n");printf("%10.2f",*(a+i));} printf("\n\t排序数据乘10后反序输出结果:\n"); if((y=init(SIZE))==NULL){puts("申请内存失败,操作取消!");return;} for(i=SIZE-1;i>=0;i--) {*(y+SIZE-i-1)=a[i]*10; if(i==4)printf("\n"); printf("%10.2f",*(y+SIZE-i-1));} free(y);free(x);flag=0; } } } }