C语言100题进阶(11~20)
11.13个人围成一圈,从第一个人开始顺序报数,1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用循环链表处理。
不会
12.拆分实数的整数与小数部分:要求自定义一个函数void splitfloat(float x, int *intpart, float *fracpart),其中x是被拆分的实数,intpart和fracpart分别是将实数x拆分出来的整数部分与小数部分。编写主函数,并在其中调用函数splitfloat()。
//12.拆分实数的整数与小数部分:要求自定义一个函数
//void splitfloat(float x, int *intpart, float *fracpart)
//其中x是被拆分的实数,*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分
//编写主函数,并在其中调用函数splitfloat()。
#include<stdio.h>
void splitfloat(float x, int *intpart, float *fracpart)
{
*intpart=x/1;
*fracpart=x-*intpart;
}
main()
{
float x,xiao;
float *fracpart=&xiao;
int zheng;
int *intpart=&zheng;
scanf("%f",&x);
splitfloat(x,intpart,fracpart);
printf("%d,%f",*intpart,*fracpart);
}
13.动态内存分配的方法实现冒泡排序
//13.动态内存分配的方法实现冒泡排序
#include<stdio.h>
#include<stdlib.h>
main()
{
int n,i,j,temp;
int *a;
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
if(a==NULL)
printf("kong");
for(i=0;i<n;i++)
scanf("%d",a+i);
for(i=0;i<n-1;i++)
for(j=0;j<=i;j++)
{
if(*(a+j)>*(a+j+1))
{
temp=*(a+j);
*(a+j)=*(a+j+1);
*(a+j+1)=temp;
}
}
for(i=0;i<n;i++