C语言上机实验题目解题思路.docx
- 文档编号:10982472
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:12
- 大小:18.91KB
C语言上机实验题目解题思路.docx
《C语言上机实验题目解题思路.docx》由会员分享,可在线阅读,更多相关《C语言上机实验题目解题思路.docx(12页珍藏版)》请在冰豆网上搜索。
C语言上机实验题目解题思路
上机实验题目解题思路
第十三次实验:
指针之一
2453:
步骤:
1)定义两数交换的函数voidswap(int*p1,int*p2),交换两指针所指向的值。
.
2)main函数:
多组输入a、b,调用交换函数交换两变量值。
代码框架:
voidswap(int*p1,int*p2)
{
……
}
intmain()
{inta,b;
Int*pointer_1,*pointer_2;
while(scanf("%d%d",&a,&b)!
=EOF)//输入a、b值
{
Pointer_1=….;
Pointer_2=…..;
If(a
Swap(…..);
printf(“%d%d\n”,a,b);
}
return0;
}
2454:
步骤:
1)定义同2453相同的函数voidswap(int*p1,int*p2),交换两指针所指向的值。
2)定义main函数,多组输入三个数,从大到小输出。
intmain()
{inta,b,c;
while(scanf("%d%d",&a,&b)!
=EOF)//输入a、b值
{If(a
Swap(&a,&b);
If(a Swap(&a,&c); If(b Swap(&b,&c); printf(“%d%d%d\n”,a,b,c); } return0;} 3575: 步骤: 方法同2454 3576: 步骤: 1)定义类同2453函数voidswap(float*p1,float*p2),交换两指针所指向的值。 2)定义main函数,多组输入五个数,从小到大输出。 intmain() {inta[5],i,temp; while(scanf("%f",&a[0])! =EOF)//输入a、b值 { for(i=1;i<5;i++) scanf(“%f”,&a[i]); 选择排序完成5个数的排序,其中交换通过 Swap(&a[],&a[])完成; 循环输出a的所有元素; } return0; } 3580: 步骤: 1)自定义函数input(inta[],intn),output(inta[],intn); Voidinput(inta[],intn)//函数无返回值,等效于void(int*a,intn) {inti; For(i=0;i Scanf(“%d”,&a[i]); } 2)在main函数中,调用它,完成对数组n个元素的输入输出。 Intmain() {intarray[100],n; While(scanf(“%d”,&n)! =EOF) { Input(array,n); Output(array,n); } Return0; } 3582: 步骤: 1)定义一个计算两个数和、差的函数sumDiff(intop1,intop2,int*pSum,int*pDiff),功能是求两个数op1、op2的和、差,其中*psum和*pdiff是计算得出的和与差,代替return返回值,故函数不需要返回任何值了。 VoidsumDiff(intop1,intop2,int*pSum,int*pDiff) {//op1、op2是要计算的两数 *pSum=op1+op2;//pSum是main()函数中变量的地址,故修改的是main()函数中变量的值 …… } 2)在main函数中,调用它,计算输入的任意两个数的和与差。 Intmain() {inta,b,s,d; While(scanf(“%d%d”,&a,&b)! =EOF) { sumDiff(a,b,&s,&d); printf(“sum=%d,diff=%d\n”,s,d); } Return0; } 第十二次实验: 函数之二 2452: 步骤: 3)定义判断素数函数intprime(intx): 当x是素数时,函数返回1,否则返回0. 4)main函数: 多组输入n、m,对n-m间的每一个数i,调用函数prime(x)判断是否是素数,若是就输出。 代码框架: intprime(intx)//(循环从2到sqrt(x),不能从2到x-1) { …… } intmain() {intm,n,i; while(scanf("%d%d",&n,&m)! =EOF)//输入n、m值 { for(i=n;i<=m;i++) { If() Printf(“%d”,i);.....//输出素数 } printf(“\n”); } return0; } 2482: 步骤: 3)定义递归函数intage(intn,intm,intk),功能是求第n个人的岁数,并返回此岁数。 函数: intage(intn,intm,intk) {intresult; if(n==1) result=k; else result=age(n-1,m,k)+m; returnresult; } 4)定义main函数,多组输入,输出第n个人的岁数。 3574: 步骤: 1)定义函数intreverse(intn),功能返回n的逆序数。 函数: intreverse(intn) {intresult=0; do{…… ……………… }while(….! =0); returnresult; } 2)定义main函数,多组输入n,输出结果。 3571: 步骤: 1)定义递归函数intfib(intn),,功能是求返回第n项Fibonacci数。 函数: intfib(intn) {inti,f1,f2,item,result; if(n==1||n==2) result=1; else result=fib(n-1)+fib(n-2) returnresult; } 2)定义main函数,多组输入,输出结果。 intmain() {int…. while(scanf(……)! =EOF) { for(i=m;i<=n;i++) printf(“%5d“,fib(i)) printf(“\n”); } 第十一次实验: 函数之一 3565: 步骤: 1)定义符号函数sign(intn) 2)main函数: 输入x,调用函数sign(x)。 代码框架: intsign(intn) {intm; ........ returnm; } intmain() {intx,y; while(scanf("%d",&x)! =EOF)//输入x值 { y=sign(x); .....//输出y的值 } return0; } 3566: 步骤: 1)定义函数max(intx,inty),功能是求两个数x、y中最大数的,并返回最大数。 函数: intmax(intx,inty) {intz; if(x>y)z=x; elsez=y; returnz; } 2)main函数: 定义三个变量a、b、c和m、多组测试输入三个整数;两次调用函数,就可得到最大数了。 3567: 步骤: 1)定义判断素数的函数intprime(intx),若是素数返回1,否则返回0。 2)主函数: 从100-200每个数都通过调用函数prime(i)来判断是否素数。 intmain() {inti; For(I=100;I<200;i++) If(prime(i)==1) Printf(“%5d”,i); }(以上代码未处理换行) 3568: 步骤: 1)定义求n! 函数intfact(intn),函数返回n! 值。 (既可用整数表阶乘也可用浮点表阶乘) 2)主函数: 从1-10每个数都通过调用函数fact(i)来求i! ,并累加求和。 由于阶乘和较大,故用浮点表示和。 intmain() {inti;floatsum; For(I=1;I<=10;i++) Sum+=fact(i); Printf(“%f\n”,sum); } 3569: 步骤: 1)定义函数intfn(inta,intn),返回a…a(n个a)。 2)主函数核心语句: 循环i=1到n,s+=fn(a,i)。 3570: 步骤: 1)定义函数intcountdigit(intnumber,intdigit),返回number中数字digit的个数 关键算法: 取出number的每一位,若等于digit,则计数count加1,最后返回count。 2)主函数核心语句: 输入x,个数n=countdigit(x,2)。 3571: 步骤: 1)定义函数intfactorsum(intnumber),返回number的因子和。 关键算法: i从1到number-1,若i是number的因子,则累加和sum;最后返回sum。 2)主函数main(),核心语句: i从m到n,若I==fact(i),则输出i。 3573: 步骤: 1)定义函数intis(intnumber),若数字立方和等于本身,返回1,否则返回0。 关键算法: 累加number的每一位数字,若和等于number,则返回1,否则返0。 2)主函数main(),核心语句: i从m到n,若I==is(i),则输出i。 第十次实验: 数组 3552: 步骤: 1)定义数组a[10][10],s[10]及相关变量 2)多组测试: 输入m,n;二重for循环输入数组a的每一个元素(scanf(“%d”,&a[i][j]),注意%d后不加空格)。 3)对于第一行a[0]的每个元素a[0][j](j=0-n-1)都和第m-1行对应元素交换。 4)对每一行(i=0---m-1),计算元素和并存入数组s[i]中 5)输出数组a的每一行(i=0----m-1)元素及s[i],并换行。 3553: 步骤: 1)定义数组a[10][10]及相关变量 2)多组测试: 输入n;二重for循环输入数组a的每一个元素(scanf(“%d”,&a[i][j]),注意%d后不加空格)。 3)主对角线元素: a[i][i],副对角线a[i][n-1-i]。 3555: 步骤: 1)定义数组a[6][6]、标记是否上三角变量flag、及相关变量 2)多组测试: 输入n;flag=1;二重for循环输入数组a的每一个元素 3)对于主对角线以下每个元素进行判断,如果不为零的,则flag=0同时跳出循环。 4)循环结束后判断flag值,若为1输出“YES”否则“No” 3556: 步骤: 1)定义数组a[6][6]、是否鞍点标记flag及相关变量 2)多组测试: 输入n;二重for循环输入数组a的每一个元素 3)对于每一行i: flag=1,找最大值max并记下其列下标cols,行下标lines;接着对于cols列所有其它元素,若小于max则{flag=0,break;},退出内层循环;当cols列数都判断完毕后,若flag还为1则退出循环变量为i的外层循环。 4)若flag为1,输出lines、cols,否则输出”No” 3561: 步骤: 1)定义字符数组str[80]、是否回文标记flag、字符长度len及相关变量 2)多组测试: 输入字符串、flag=1; 3)计算输入字符串长度len, 4)i从0到len/2: 若str[i]! =str[len-1-i],则flag=0; 5)循环结束后,判断flag值,若为1输出“Yes\n”,否则”No\n” 3893: 步骤: 1)定义整型数组a[20]及相关变量 2)多组测试: 输入n和n个整数; 3)先temp变量临时保存a[0]的值, 4)i从0到n-2: 后面的元素往前移,a[i]=a[i+1]; 5)循环结束后,把temp值存入a[n-1]中 3895: 步骤: 1)定义整型数组a[20]及相关变量 2)多组测试: 输入n和m 3)二维数组每个元素a[i][j]值为: i*4+j+1]; 4)输出数组的每一个元素 3900: 步骤: 1)定义字符数组a[100]及相关变量 2)多组测试: 输入字符串a 3)对数组每个元素a[i],若是字母,字母计数加1……. 4)输出统计结果。 3905: 步骤: 1)定义字符数组str[100]及相关变量 2)多组测试: 输入字符串str 3)若str[0]为小写字母,则变大写 4)从str[1]开始,每个字符,判断是否是单词第一个字母(当前是小写字母且前一个是空格,即str[i]是字母&&str[i-1]==’‘ 5)输出字符串str.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 实验 题目 解题 思路
![提示](https://static.bdocx.com/images/bang_tan.gif)