几道c语言编程题

来源:百度知道 编辑:UC知道 时间:2024/06/09 07:10:21
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.
#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;