C语言上机实验题目解题思路.docx

上传人:b****8 文档编号:10982472 上传时间:2023-02-24 格式:DOCX 页数:12 大小:18.91KB
下载 相关 举报
C语言上机实验题目解题思路.docx_第1页
第1页 / 共12页
C语言上机实验题目解题思路.docx_第2页
第2页 / 共12页
C语言上机实验题目解题思路.docx_第3页
第3页 / 共12页
C语言上机实验题目解题思路.docx_第4页
第4页 / 共12页
C语言上机实验题目解题思路.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C语言上机实验题目解题思路.docx

《C语言上机实验题目解题思路.docx》由会员分享,可在线阅读,更多相关《C语言上机实验题目解题思路.docx(12页珍藏版)》请在冰豆网上搜索。

C语言上机实验题目解题思路.docx

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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1