几道c语言编程题

1.从指定的自然数n0开始,按以下公式生成一个数列,直到ni+1为1,计算数列的长度(数列中数的个数)。i=0,1,2,…例如:当n0=7时生成的数列为:7,22,11,... 1.从指定的自然数n0开始,按以下公式生成一个数列,直到ni+1为1,计算数列的长度(数列中数的个数)。

i=0,1,2,…
例如:当n0=7时生成的数列为:7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1。该数列的长度为17
要求:
1) 编写函数 int linkrun(int a , int b , int *p),以[a,b]中所有自然数作为n0可以生成b-a+1个满足上述特性的数列,求出这些数列的长度并依次保存到p指向的数组中,函数返回p数组中的最大值。
2) 在main()中,声明变量a,b和p作为实参调用linkrun函数,输出各数列的长度和最大值。
2.按要求合并两个字符串。
1)编写函数void inv(char b[]),其功能是先将b指向的字符串逆序存放,而void merage(char a[],char b[],char c[]);按a[0],b[0],a[1],b[1],…的顺序合并a字符串和b字符串到c指向的数组中,将a或b中剩余的字符拼接在c数组的尾部。
2)在main()函数中,声明三个一维数组s1、s2和s,接收键盘输入的两个字符串并保存到数组s1和s2中,调用inv函数对s2字符串做逆序变换,再调用merage函数合并s1字符串和s2字符串到s数组中,将合并后的数组s中的字符在屏幕上输出。
3.求正整数的所有因子
1)编写函数double fun(int n,int a[]),其功能是求正整数的所有因子(不包括1 与自身)并按从小到大的顺序存放在数组a中,所有因子的倒数之和再通过函数返回。规定n的大小不大于100
2)在main()中,从键盘输入测试数据n,调用fun函数,将所有因子的倒数和所得的因子输出在屏幕上。
4.求最大值和最小值
1)编写函数int fun(int *a,int n),其功能是求出数组a中的最大值和最小值,并将最大值和最小值交换。
2)在main()中,从键盘输入数组a的元素值,调用fun函数,并将结果输出到屏幕。
5.移动字符串中的内容
移动的规则如下:把第1到第m个字符平移到字符串的最后,把第m+1到最后的字符串移到字符串的前部。例如:字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABC
6.学生信息排序
1)编写函数fun(),其功能是:把学生数据按姓名从大到小的顺序(字母顺序)进行排列,若姓名相同,则按年龄从大到小的顺序进行排列并返回。其中,学生数据由学号、姓名、年龄组成。
2)在main()函数中,调用fun()函数,将返回的学生数据输出到屏幕。
展开
 我来答
风中飞舞cc
2009-06-30
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
1.
#include<stdio.h>
#define N 100
void main()
{
int a,b,*p,maxLen,temp,i,k,arr[N]={0};
int linkrun(int a,int b,int *p);
printf("please input two integer:\n");
scanf("%d %d",&a,&b);
if (a>b) { temp=a; a=b; b=temp; }
p=arr;
maxLen=linkrun(a,b,p);
printf("sequence length is \n");

for (i=0;i<b-a+1;i++)
printf("%d \n",p[i]);

printf("\nMax Length is %d\n",maxLen);
}
int linkrun(int a,int b,int *p)
{
int i,j,n,max=0;
for (i=a;i<=b;i++)
{
n=i; j=1; //printf("---%d ",n);
while(n>1)
{
if (n%2==0)
n=n/2;
else
n=3*n+1;
j++; //printf("---%d ",n);
}
p[i-a]=j;
//printf("\n");
if (j>max) max=j;
}
return max;
}

2.
#include <stdio.h>
#include <string.h>
#define N 80

void main()
{
char s[N],s1[N],s2[N];
void inv(char b[]);
void merage(char a[],char b[],char c[]);
printf("please input the first string: ");
gets(s1);
printf("please input the second string: ");
gets(s2);
inv(s1);
printf("\nThe first string after inverting:\n");
printf("%s",s1);
merage(s1,s2,s);
printf("\nThe string after meraging:\n");
printf("%s",s);
}

void inv(char b[]) //将b指向的字符串逆序存放
{
int i=0, len=strlen(b);
char temp;
while(i<len)
{
len--;
temp=b[i];
b[i]=b[len];
b[len]=temp;
i++;
}
}
void merage(char a[], char b[], char c[])//合并字符串
{
int lena=strlen(a),lenb=strlen(b), len=0;
int i=0,j=0,k=0;

while(i<lena && j<lenb)
{
c[k]=a[i]; i++; k++;

c[k]=b[j]; j++; k++;
}

if (i>=lena)
{
while(j<lenb)
{
c[k]=b[j];
j++;
k++;
}
}
else
{
while(i<lena)
{
c[k]=a[i];
i++;
k++;
}
}
c[k]='\0';
}

3.
#include <stdio.h>
#define N 100
double fun(int n,int a[])
{
int i,k;
double sum=0;
k=0;
for(i=2;i<n;i++)
{
if(n%i==0)
{
printf("%d,",i);
a[k]=i; k++;
}
}
for (i=0;i<k;i++)
sum=sum+1.0/a[i];

return (sum);

}

void main()
{
int n,arr[N]={0};
double d;
printf("please input a integer less than 100: ");
scanf("%d",&n);
while(n>=100)
{
printf("the integer less than 100: ");
scanf("%d",&n);
}
d=fun(n,arr);
printf("\nsum=%lf \n",d);
}

4.
#include <stdio.h>
#define N 10

int max,min;

int fun(int *a,int n)
{
int i,maxi,mini;

max=min=a[0];
maxi=mini=0;

for(i=1;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
maxi=i;
}
if(a[i]<min)
{
min=a[i];
mini=i;
}
}
a[maxi]=min;
a[mini]=max;
}

void main()
{
int i,n,arr[N]={0};

printf("please input the number of array elements: ");
scanf("%d",&n);

printf("\nplease input %d integers: ",n);

for(i=0;i<n;i++)
scanf("%d",&arr[i]);

printf("\n");

fun(arr,n);

for (i=0;i<n;i++)
printf("%d ",arr[i]);

printf("\nmax=%d min=%d\n",max,min);
}

5.
#include <stdio.h>
#include <string.h>
#define N 80
void main()
{
char a[N]= "ABCDEFGHIJK";
int m;
void fun(char *w,int m);
printf("please input a string: ");
gets(a);
printf("The original string:\n");
puts(a);
printf("Enter m: ");
scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving:\n");
puts(a);
}

void fun(char *w,int m)
{
char b[N];
int i,j=0;
for(i=0;i<m;i++)
{
b[j]=w[i];
j++;
}
for (i=0;i<strlen(w)-m;i++)
w[i]=w[i+m];

for(j=0;j<m;j++)
{
w[i]=b[j];
i++;
}
w[i]='\0';
}

6.
#include <stdio.h>
#include <string.h>
#define SIZE 5

struct student
{
char num[6];
char name[6];
int age;
}stu[SIZE];

main()
{
int i;
void fun();
/*输入*/
printf("please input %d students \n",SIZE);
for (i=0;i<SIZE;i++)
{
printf("学号: ");
scanf("%s",stu[i].num);
printf("姓名: ");
scanf("%s",stu[i].name);
printf("年龄: ");
scanf("%d",&stu[i].age);
}
fun();
for (i=0;i<SIZE;i++)
printf("学号:%s 姓名:%s 年龄:%d \n",stu[i].num,stu[i].name,stu[i].age);
printf("the result after sorting is:\n");
for (i=0;i<SIZE;i++)
printf("学号:%s 姓名:%s 年龄:%d \n",stu[i].num,stu[i].name,stu[i].age);
}

void fun()
{
int i,j;
struct student stu_temp;

for(i=0;i<SIZE;i++)
{
for (j=i+1;j<SIZE;j++)
if (strcmp(stu[i].name,stu[j].name)<0)
{
stu_temp=stu[i];
stu[i]=stu[j];
stu[j]=stu_temp;
}
if (strcmp(stu[i].name,stu[j].name)==0)
{
if (stu[i].age<stu[j].age)
{
stu_temp=stu[i];
stu[i]=stu[j];
stu[j]=stu_temp;
}
}
}
}

给我追加分数吧~~咱一个学校的应该!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友926cbaf28c
2009-06-22 · TA获得超过801个赞
知道答主
回答量:139
采纳率:100%
帮助的人:110万
展开全部
乾脆说是请枪手做作业算了,现在的人啊,自己不好好学,连个作业都要人帮忙,悲哀啊~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式