1.将自己编写好的strlen strcpy strcmp strcat 打包成函数。
a.mystrlen , mystrcpy mystrcmp mystrcat.
b.mystrcpy mystrcmp mystrcat不需要返回值,因为指针没讲,无法返回数组
#include<stdio.h>
int myStrlen(char str[]);
void myStrcpy(char str1[], char str2[]);
int myStrcmp(char str1[], char str2[]);
void myStrcat(char str1[], char str2[]);
int main()
{
char str1[100] = "abcdef";
char str2[50] = "1234567890";
prntf("str2 的有效长度为:%d\n", myStrlen(str2));
myStrcpy(str1, str2);
prntf("str1与str2的大小,即str1与str2的差值为:%d\n", myStrcmp(str1,str2));
myStrcat(str1, str2);
return 0;
}
int myStrlen(char str[])
{
long len;
for(len=0; str[len]!=0; len++);
return len;
}
void myStrcpy(char str1[], char str2[])
{
int i;
for(i=0; (str1[i] = str2[i])!=0; i++);
printf("%s\n", str1);
}
int myStrcmp(char* str1, char* str2)
{
int res=0;
for(int i=0; 0==(res=(str1[i]-str2[i]) && 0!=str1[i]); i++);
return res;
}
void myStrcat(char str1[], char str2[])
{
int len1=0;
for(len1=0; str1[len1]!=0; len1++);
for(int i=0; 0!=(str1[len1++] = str2[i]); i++);
printf("%s\n", str1);
}
2.求斐波那契数列的第n项。
1、1、2、3、5、8、13、21、34、…,第一项和第二项 时候都是输出1
公式:f(n) = f(n-1)+f(n-2); 例如第20项,6765
#include<stdio.h>
int myFibonacci(int item);
int main()
{
int item;
printf("请输入需要求斐波那契数列的前多少项的和:\n");
scanf("%d", &item);
printf("前%d项的和为:%d\n", item, myFibonacci(item));
return 0;
}
int myFibonacci(int item)
{
if(1==item || 2==item)
return 1;
else
return myFibonacci(item-1) + myFibonacci(item-2);
}
3.输出一个十行的杨辉三角。
提示:当前数据 = 上一行的当前列 + 上一行的前一列
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
#include<stdio.h>
void print_yanghui(int line);//用排列组合
int main()
{
int arr[10][10]={0};
//方法一,按行输入数组
for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
for(int j=0; j<=i; j++)
if(0==j)
arr[i][j] = 1;
else
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
//方法二,按列输入数组
for(int i=0; i<sizeof(arr[0])/sizeof(arr[0][0]); i++)
for(int j=i; j<sizeof(arr)/sizeof(arr[0]); j++)
if(i==0)
arr[j][i] = 1;
else
arr[j][i] = arr[j-1][i-1] + arr[j-1][i];
for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
{
for(int j=0; j<=i; j++)
printf("%d\t", arr[i][j]);
printf("\n");
}
*/
int line;
printf("请输入需要打印杨辉三角形的行数:\n");
scanf("%d", &line);
print_yanghui(line);
return 0;
}
void print_yanghui(int line)
{
for(int i=0; i<line; i++)
{
for(int j=0; j<=i; j++)
{
int n=1,m=1;
for(int k=i-j+1; k<=i; k++)
n *= k;
for(int k=2; k<=j; k++)
m *= k;
printf("%d\t", n/m);
}
putchar(10);
}
}