1.实现strlen、strcpy函数
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char arr[30]="";
int len;
gets(arr);
len=mystrlen(arr);
printf("该字符串的长度为%d\n",len);
return 0;
}
int mystrlen(char *str)
{
int len=0;
int i=0;
while(*str!=0)
{
len++;
str++;
}
return len;
}
#include <stdio.h>
#include <string.h>
char *mystrcpy(char *dest,const char *src);
int main(int argc, const char *argv[])
{
char arr[30]="";
gets(arr);
char brr[30]="";
gets(brr);
mystrcpy(arr,brr);
puts(arr);
return 0;
}
char *mystrcpy(char *dest,const char *src)
{
while(*dest++ = *src++)
{
;
}
return dest;
}
2.冒泡排序(要求:从终端获取十个数,升序排序);
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
int arr[10]={0};
for(int i=0;i<10;i++)
{
printf("请输入第%d个数>>>",i+1);
scanf("%d",&arr[i]);
}
for(int i=1;i<10;i++)
{
for(int j=0;j<=10-i;j++)
{
if(arr[j]>arr[j+1])
{
arr[j]=arr[j]^arr[j+1];
arr[j+1]=arr[j]^arr[j+1];
arr[j]=arr[j]^arr[j+1];
}
}
}
for(int i=0;i<10;i++)
{
printf("%3d",arr[i]);
}
putchar(10);
return 0;
}
3.编写strcpy函数:已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc);
strDest是目的字符串,strSrc是源串。(不调用C的字符串库函数,编写函数 strcpy,以char *mystrcpy(char *dest, char *src)作为函数声明。
#include <string.h>
char *mystrcpy(char *dest,char *src);
int main(int argc, const char *argv[])
{
char arr[30]="";
char brr[30]="";
gets(arr);
gets(brr);
mystrcpy(arr,brr);
puts(arr);
return 0;
}
char *mystrcpy(char *dest,char *src)
{
while(*dest++ = *src++);
return dest;
}
4.有一个3×4的矩阵,要求输出其最大值以及它的行号和列号。 int a[3][4] = {
{123, 94, -10, 218},{3, 9, 10, -83}, {45, 16, 44, -99}};
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
int a[3][4]={{123,94,-10,218},
{3,9,10,-83},
{45,16,44,-99},
};
int (*pa)[4] = a;
int max = a[0][0];
int idex1=0,idex2=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
if(max < *(*(pa+i)+j))
{
max = *(*(pa+i)+j);
idex1 = i;
idex2 = j;
}
}
}
printf("该二维数组的最大值为%d\n其所在位置为第%d行第%d列\n",max,idex1+1,idex2+1);
return 0;
}
5.写一个函数,统计一个unsigned int类型的值中有多少位为1
int func(unsigned int data)
{
int count=0,temp=data;
int i=0;
for(i=0;i<32;i++)
{
if(1 == (temp&1))
{
count++;
}
temp = temp>>1;
return count;
}
}
6.给定一个字符串“I love china”,编写程序完成以单词为单位的逆序,如“china love i”,并要求不允许使用第三方变量保存数据,但可以使用辅助指针变量等。
7.#include <stdio.h>
#include <string.h>
void swap(char *start,char *end)
{
for(;start<end;start++,end--)
{
*start = *start ^ *end;
*end = *start ^ *end;
*start = *start ^ *end;
}
}
int main(int argc, const char *argv[])
{
char arr[15]="I love china";
char *start = arr;
char *end = arr;
while(*end!=0)
{
end++;
}
swap(start,end-1);
start = arr;
end = arr;
for(;*end!=0;end++)
{
if(*end==' ')
{
swap(start,end-1);
start = end+1;
}
}
puts(arr);
return 0;
}