C语言上机题及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言程序设计上机题1.编写函数实现从键盘输入一个字符串,再将其逆序输出。#includestdio.h//宏定义#includestring.h//调用string库函数voidmain(){inti,n;chara[30];//定义字符型数组gets(a);//输入字符串n=strlen(a);//调用strlen函数,测量字符串长度for(i=n;i=0;i--)//通过for循环倒序输出printf(%c,a[i]);printf(\n);}2.编写函数求出10!的值并输出。#includestdio.h//宏定义voidmain(){unsignedinta,num=1;for(a=1;a=10;a++)//for循环求出10的阶乘num=num*a;printf(%d\n,num);//输出所求值}3.编写函数实现10个元素数组的平均值,并在主函数输出。#includestdio.h//宏定义floatdy(int*a,intn)//子函数,{floatsum=0,p;inti;for(i=0;i10;i++)//for循环求数组和sum=*(a+i)+sum;//数组指针p=sum/10.0;//求平均数returnp;//返回平均数P的值}voidmain(){inti,a[10];for(i=0;i10;i++)//for循环输入数组的十个数字scanf(%d,&a[i]);printf(%f\n,dy(a,10));//输出子函数返回的平均值}4.编写函数实现圆度面积计算,并在主函数中输出结果。#includestdio.h//宏定义doubledy(floatr)//子函数{doublepi=3.1415926;//定义π的值doubles;s=pi*r*r;//求出面积returns;//函数返回值}voidmain(){floatr;doubles;printf(请输入所求圆半径r:);scanf(%f,&r);//输入半径值s=dy(r);//调用子函数,求出面积赋值给sprintf(圆柱体积为:%f\n,s);}5.编写函数实现圆柱体积计算,并在主函数输出结果。#includestdio.h//宏定义floatdy(floatr,floath)//子函数{floatpi=3.1415926;//定义π的值floatv;v=pi*r*r*h;//求出体积returnv;//函数返回值}voidmain(){floatr,h,v;printf(请输入所求圆柱底面半径r和高h:);scanf(%f,%f,&r,&h);v=dy(r,h);//调用子函数,求出体积赋值给vprintf(圆的面积为:%f\n,v);}6.编写子函数,用冒泡法对数组中10个整数按由小到大排序。(子函数形参用一维数组)。#includestdio.h//宏定义voiddy(inta[],intt)//子函数{inti,j,h;for(i=0;it-1;i++)//两个for包含的内容就是冒泡法排序for(j=0;jt-1;j++)if(a[j]=a[j+1]){h=a[j];a[j]=a[j+1];a[j+1]=h;}//排序结束for(i=0;it;i++)//for循环输出排序后的数组printf(%d,a[i]);printf(\n);//换行}voidmain(){inta[10]={3,1,2,0,4,6,5,9,7,8};//定义一个整数数组dy(a,10);//调用子函数,对数组排序并输出}7.编写子函数,用冒泡法对数组中10个整数按由小到大排序。(子函数形参用指针变量)。#includestdio.h//宏定义voiddy(int*a,intt)//子函数{inti,j,h;for(i=0;it-1;i++)//两个for包含的内容就是冒泡法排序for(j=0;jt-1;j++)if((*(a+j))=(*(a+j+1))){h=*(a+j);*(a+j)=*(a+j+1);*(a+j+1)=h;}//排序结束for(i=0;it;i++)//for循环输出排序后的数组printf(%d,a[i]);printf(\n);//换行}voidmain(){inta[10]={3,1,2,0,4,6,5,9,7,8};//定义一个整数数组dy(a,10);//调用子函数,对数组排序并输出}8.编写函数实现两个数据交换,要求采用指针作为函数参数实现。#includestdio.hvoidjh(int*a,int*b){intt;t=*a;*a=*b;*b=t;//交换顺序}voidmain(){inta=100;intb=50;printf(交换前:\n);printf(a=%d,a=%d\n,a,b);//输出交换前的数值jh(&a,&b);//调用子函数,交换数值printf(交换后:\n);printf(a=%d,a=%d\n,a,b);//输出交换后的数字}9.编写函数实现3×3数组的最大值与最小值查找,并在主函数中输出。提示采用全局变量。#includestdio.hinti,j,max,min;//定义全局变量voiddy(inta[][3])//调用函数{max=a[0][0];for(i=0;i3;i++)//二维数组,通过两个for,求出最大值,赋值给maxfor(j=0;j3;j++)if(maxa[i][j])max=a[i][j];min=a[0][0];for(i=0;i3;i++)//同上,求出最小值,赋值给minfor(j=0;j3;j++)if(mina[i][j])min=a[i][j];}voidmain(){inta[3][3]={{1,2,3},{4,8,6},{9,7,3}};dy(a);//因为是全局变量,所以直接可以输出,不用函数返回值printf(max=%d,min=%d\n,max,min);//输出max和min}10.编写一个函数,实现对a、b、c3个整数按大小顺序,在主函数输出排序后的结果。提示采用指针作为参数。#includestdio.hvoidjh(int*a,int*b,int*c){intt;if(*a*b)//比较a与b的大小,若ab,则交换顺序{t=*b;*b=*a;*a=t;}if(*a*c)//同上{t=*c;*c=*a;*a=t;}if(*b*c)//同上{t=*b;*b=*c;*c=t;}}voidmain(){inta,b,c;printf(请输入三个数:a,b,c\n);scanf(%d,%d,%d,&a,&b,&c);//任意输入三个整数jh(&a,&b,&c);//调用子函数,交换大小顺序printf(交换后的顺序为:\n);printf(%d,%d,%d\n,a,b,c);//输出交换后的值}11.编写函数,用选择法对10个数排序,按由小到大输出。(子函数形参用指针变量)。#includestdio.hvoiddy(int*a,intn)//n为数组元素个数{inti,j,k,t;//i为基准位置,j为当前被扫描元素位置,k用于暂存出现的较小的元素的位置for(i=0;in-1;i++){k=i;//初始化为基准位置for(j=i+1;jn;j++){if((*(a+j))(*(a+k)))k=j;//k始终指示出现的较小的元素的位置}if(k!=i){t=*(a+i);*(a+i)=*(a+k);*(a+k)=t;//将此趟扫描得到的最小元素与基准互换位置}}}voidmain(){inti;inta[10];for(i=0;i10;i++)//输入一个整型数组scanf(%d,&a[i]);dy(a,10);for(i=0;i10;i++){printf(%d,a[i]);}printf(\n);}12.编写一个程序,计算1至50之间的偶数之和。#includestdio.hvoidmain(){inta,sum=0;for(a=0;a=50;a++)if(a%2==0)//a对2求余等于0,则a为偶数,sum则加asum=sum+a;//sum则为0~50内的偶数之和printf(sum=%d\n,sum);}13.编写一个程序,计算1至50之间的奇数之和。#includestdio.h//编写一个程序,计算1至50之间的奇数之和。voidmain(){inta,sum=0;for(a=0;a=50;a++)if(a%2!=0)//a对2求余不等于0,则a为奇数,sum则加asum=sum+a;//sum则为0~50内的奇数之和printf(奇数和sum=%d\n,sum);}14.将一个二维数组a的行和列元素互换,存到另一个二维数组b中。123456a,142536b#includestdio.hvoidmain(){inta[2][3]={{1,2,3},{4,5,6}};//定义并赋值一个两行三列的数组aintb[3][2];//定义一个三行两列的数组binti,j;for(i=0;i2;i++)//通过行列变换,将元素互换for(j=0;j3;j++)b[j][i]=a[i][j];for(i=0;i3;i++)//输出数列b的值{for(j=0;j2;j++)printf(%d,b[i][j]);printf(\n);//这个printf必须在第一个for循环以内,才能每输出一行,都自动换行}}15.对于3×3的二维数组,可以在同一数组进行矩阵转置操作,即实现数组的行和列元素互换。123456789a转置操作后为147258369a#includestdio.hvoidmain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};//定义并赋值inti,j,t;for(i=0;i3;i++)for(j=0;ji;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;//将a数组,通过自己转置}printf(转置后:\n);for(i=0;i3;i++)//输出转置后的数组a{for(j=0;j3;j++)printf(%5d,a[i][j]);printf(\n);//这儿的printf只能在第一个for循环中,用于在每一行的开头自动换行}}

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功