第二周暑假作业
作者:互联网
二级题库
double fun(double *x)
{ int i, j; double s, av, y[N];
s=0;
for(i=0; i<N; i++) s=s+x[i];
/**********found**********/
av=s/N;
for(i=j=0; i<N; i++)
if( x[i]>av ){
/**********found**********/
y[j++]=x[i];
x[i]=-1;}
for(i=0; i<N; i++)
/**********found**********/
if( x[i]!= -1) y[j++]=x[i];
for(i=0; i<N; i++)x[i] = y[i];
return av;
}
/*************found**************/
void upfst(char *p)
{
int k=0;
for ( ;*p;p++)
if (k)
{
if (*p==' ')
k=0;
}
else
{
if (*p!=' ')
{
k=1;
*p=toupper(*p);
}
}
}
double fun (int w[][N])
{
int i,j,k=0;
double sum=0.0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i==0||i==N-1||j==0||j==N-1)
{
sum+=w[i][j];
k++;
}
return sum/k;
}
c语言十题
1.13个人围成一圈,从第一个人开始顺序报数,1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用循环链表处理。
#include <stdio.h>
#include <stdlib.h>
#define N 13
struct per
{
int number;
int next;
}link[N+1];
int main(int argc, char *argv[])
{
int i;
for(i=1;i<=N;++i)
{
if(i==N)
link[i].next=1;
else
link[i].next=i+1;
link[i].number=i;
}
int j=N;
i=0;
int count=0;
while(count<N-1)
{
while(i<3)
{
j=link[j].next;
if(link[j].number)
{
i++;
}
}
if(i==3)
{
printf("出圈=%d\n",link[j].number);
link[j].number=0;
count++;
i=0;
}
}
for(i=1;i<=N;i++)
{
if(link[i].number)
printf("%d",link[i].number);
}
printf("\n");
return 0;
}
2.拆分实数的整数与小数部分:要求自定义一个函数void splitfloat(float x, int *intpart, float *fracpart),其中x是被拆分的实数,*intpar
#include<stdio.h>
void splitfloat(float x,int *intpart,float *fracpart);
int main(void)
{
float x,fracpart;
int intpart;
scanf("%f",&x);
splitfloat(x,&intpart,&fracpart);
printf("intpart=%d\n",intpart);
printf("fracpart=%f\n",fracpart);
}
void splitfloat(float x,int *intpart,float *fracpart)
{
*intpart=(int)x;
*fracpart=x-*intpart;
}
3.动态内存分配的方法实现冒泡排序
#include<stdio.h>
#include<stdlib.h>
void bubble(int a[], int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
int N,*num,i;
scanf("%d", &N);
num=(int*)calloc(N, sizeof(int));
for(i=0;i<N;i++)
{
scanf("%d", &num[i]);
}
bubble(num,N);
for(i=0;i<N;i++)
printf("%d\t",num[i]);
printf("\n");
return 0;
}
4.编写一个函数New,对n个字符开设连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。New(n)表示分配n个字节的内存空间。
#include <stdio.h>
#include <stdlib.h>
char *news(int n);
int main()
{
int num;
char *n;
scanf("%d",&num);
n=news(num);
printf("%d\n",*n);
return 0;
}
char *news(int n)
{
char *p;
p=(char *)malloc(n*sizeof(char));
return p;
}
5.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃年一半,又多吃一个。以后每天早上都吃了前一天剩下的一半多一个。
#include<stdio.h>
int main()
{
int a=1,b=1,i;
for(i=9;i>0;i--)
{
a=2*(a+1);
b+=a;
}
printf("第一天一共摘了%d\n",a);
return 0;
}
6.输入一个任意长(>2)的字符串和一个长度为2 的字符串,用函数编程统计长度为2的字符串在任意长字符串中出现的次数。
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k,tl,pl,count=0;
char t[50],p[10];
gets(t);
gets(p);
tl=strlen(t);
pl=strlen(p);
for(i=0;i<=tl-pl;i++)
{
for(j=0,k=i;j<pl&&*(p+j)==*(t+k);j++,k++);
if(j==pl)
count++;
}
printf("子串%s出现次数%d\n",p,count);
}
7.建立简单的静态链表。
#include <stdio.h>
struct student
{
long num;
float score;
struct student *next;
};
void main( )
{
struct student a,b,c,*head,*p;
a.num=99101;
a.score=89.5;
b.num=99102;
b.score=90;
c.num=99103;
c.score=85;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
}
8.写递归函数: n+1 m=0 akm= akm(m-1,1)
#include <stdio.h>
int ack(int m,int n)
{
if(m==0)
return n+1;
else
{
if(m!=0&&n==0)
return ack(m-1,1);
else if(m!=0&&n!=0)
return ack(m-1,ack(m,n-1));
}
}
void main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",ack(a,b));
}
9.编写程序,求出n1至n2自然数之和。要求使用递归方法。
#include<stdio.h>
he(int n,int m)
{
int sum=0;
if(n==m)
return(n);
else
return(n+he(n+1,m));
}
main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("%d",he(n,m));
}
标签:num,int,第二周,link,printf,return,include,暑假作业 来源: https://blog.csdn.net/qq_53079169/article/details/118724911