哪位好心的大伯大妈GGMM帮忙做考试题啊
哪位好心的大伯大妈爷爷奶奶哥哥姐姐给小弟做出这4道题目啊???!!最好有注释的,只能用c语言,不能用C++。谢谢了!!!
1.编制一个自定义函数,函数的形参为字符数组s1和s2,函数功能是将字符串s1中的所有数字字符取出,存入另一字符数组s2中,使s2成为一个新的字符串,并在函数中将字符串s2输出。
2.不使用库函数,实现strlen函数的编写:形参类型为字符数组或字符串,要求统计字符串str中字符的个数。返回字符个数。函数原型为:unsigned int strlen (char *str)。
3.实现任意输入数值,建立一个单向链表,并按反向进行输出。
4.已知某数列前两项分别为2和3,其后继项根据数列最后两项的乘积,按下列规则生成:
(1)若乘积为一位数,则该乘积即为数列的后继项;
(2)若乘积为二位数,则该乘积的十位数字和个位数字依次作为数列的两个后继项。
编制程序计算数列前20 项之和并输出数列中的各项(要求将数列前20项保存在数组中且不可多存)。
(例如,数列前10项为:2,3,6,1,8,8,6,4,2,4)
----------------解决方案--------------------------------------------------------
第1题
#include "stdio.h"
#include "string.h"
void fun(char s1[],char s2[])
{
char s1[300],s2[300];
int i,j=0;
gets(s1);
for(i=0;i<strlen(s1);i++)
if(s1[i]>='0'&&s1[i]<='9')
s2[j++]=s1[i];
s2[j]='\0';
puts(s2);
}
----------------解决方案--------------------------------------------------------
改下第1题是
#include "stdio.h"
#include "string.h"
void fun(char s1[],char s2[])
{
int i,j=0;
gets(s1);
for(i=0;i<strlen(s1);i++)
if(s1[i]>='0'&&s1[i]<='9')
s2[j++]=s1[i];
s2[j]='\0';
puts(s2);
}
----------------解决方案--------------------------------------------------------
这个是第2题目
#include "stdio.h"
unsigned int strlen (char *str)
{
int i=0,length=0;
while(str[i]!=256&&str[i]!='\0')
{
length++;
i++;
}
printf("%d\n",length);
}
----------------解决方案--------------------------------------------------------
谢谢这位大侠了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
----------------解决方案--------------------------------------------------------
程序代码:
/*******************************************************************************
已知某数列前两项分别为2和3,其后继项根据数列最后两项的乘积,按下列规则生成:
(1)若乘积为一位数,则该乘积即为数列的后继项;
(2)若乘积为二位数,则该乘积的十位数字和个位数字依次作为数列的两个后继项。
编制程序计算数列前20 项之和并输出数列中的各项(要求将数列前20项保存在数组中且
不可多存)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
作一程序,不太成熟,谨作参考。
这是第4题。
*******************************************************************************/
#include<stdio.h>
#define N 20
int main(void)
{
int i,sum=0;
int a[N]={2,3,0};
for(i=0;i<N-2;i++)
{
a[i+2]=a[i]*a[i+1];
if(a[i+2]>9)
{
a[i+3]=a[i+2]%10;
a[i+2]=a[i+2]/10;
i++;
}
}
for(i=0;i<N;sum+=a[i],i++)
printf("%2d",a[i]);
printf("\n%d\n",sum);
getch();
}
已知某数列前两项分别为2和3,其后继项根据数列最后两项的乘积,按下列规则生成:
(1)若乘积为一位数,则该乘积即为数列的后继项;
(2)若乘积为二位数,则该乘积的十位数字和个位数字依次作为数列的两个后继项。
编制程序计算数列前20 项之和并输出数列中的各项(要求将数列前20项保存在数组中且
不可多存)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
作一程序,不太成熟,谨作参考。
这是第4题。
*******************************************************************************/
#include<stdio.h>
#define N 20
int main(void)
{
int i,sum=0;
int a[N]={2,3,0};
for(i=0;i<N-2;i++)
{
a[i+2]=a[i]*a[i+1];
if(a[i+2]>9)
{
a[i+3]=a[i+2]%10;
a[i+2]=a[i+2]/10;
i++;
}
}
for(i=0;i<N;sum+=a[i],i++)
printf("%2d",a[i]);
printf("\n%d\n",sum);
getch();
}
----------------解决方案--------------------------------------------------------
程序代码:
/*******************************************************************************
这是第一题的变异,呵,作着玩儿的,谨作参考。
*******************************************************************************/
#include<stdio.h>
void x(char a[])
{
int i=0,j;
puts(a);
while(a[i])
{
if(a[i]<'0'||a[i]>'9')
{
j=i;
while(a[j])
{
a[j]=a[j+1];
j++;
}
i--;
}
i++;
}
puts(a);
}
void main(void)
{
char a[100];
gets(a);
x(a);
getch();
}
这是第一题的变异,呵,作着玩儿的,谨作参考。
*******************************************************************************/
#include<stdio.h>
void x(char a[])
{
int i=0,j;
puts(a);
while(a[i])
{
if(a[i]<'0'||a[i]>'9')
{
j=i;
while(a[j])
{
a[j]=a[j+1];
j++;
}
i--;
}
i++;
}
puts(a);
}
void main(void)
{
char a[100];
gets(a);
x(a);
getch();
}
----------------解决方案--------------------------------------------------------
这是第4题
#include "stdio.h"
void main()
{
int a[20]={2,3},i=0,k;
while(i<20)
{
if((a[i]*a[i+1])/10==0)
{
a[i+2]=(a[i]*a[i+1]);
i++;
}
else {
a[i+2]=((a[i]*a[i+1])/10);
a[i+3]=((a[i]*a[i+1])%10);
i=i+2;
}
}
for(i=0;i<20;i++)
printf(" %d",a[i]);
}
----------------解决方案--------------------------------------------------------