C语言常见编程题(3)

1.用指针变量输出结构体数组元素

struct student
{
	int num ;
	char * name;
	char sex;
	int age;
}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou",'F',19},
{1005,"Wangming",'M',18}};

void fun()
{
	int i;
	struct student *ps;
	 /*用指针变量输出结构体数组元素。*/
	for(ps=stu;ps<stu+5;ps++)
	{
		printf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);
	}

	/*用数组下标法输出结构体数组元素学号和年龄。*/
	for(i=0;i<5;i++)
	{
		printf("%d\t%d\t\n",stu[i].num,stu[i].age);
	}
}

2.打印以字母组成的三角形

//n表示要打印的行数
void fun(int n)
{
	char ch='A';
	int i,j;
	if(n<11)
	{
		for()i=0;i<n;i++)
		{
			for(j=0;j<n-i;j++)
			{
				printf("%2c",ch);
                ch++;
			}
		}
	}
}

C语言常见编程题(3)_第1张图片

3.一个球从 100m 高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第 10 次落地时,共经过多少米,第 10 次反弹多高

void fun()
{
	int sn=100,hn=sn/2,n;
	for(n=2;n<11;n++)
	{
		sn=sn+hn*2;
		hn/=2;
	}
	printf(" 第 10 次落地时共经过 %d 米\n",sn);
    printf(" 第 10 次反弹 %d 米\n",hn);
}

4.字符串求子串函数以及BF算法简单的匹配模式

typedef struct
{
	char * ch;
	int length;
}Str,*pStr;

//求子串的方法,从字符串str规定的位置pos开始1取出len长度的字符串返回给sub,sub就是str的子串
void subString(pStr sub,Str str,int pos,int len)
{
	int i;
	if(pos<1||len>str.length||len<0)
	{
		printf("pos小于1||截取长度大于主串长度||截取长度小于0||截取长度大于主串从pos开始到结束的长度");
        exit(-1);
	}
	if(sub->ch)
		free(sub->ch);
	//返回的是空字符串
	if(len==0)
	{
		sub->ch=NULL;
		sub->length=0;
	}
	sub->ch=(char*)malloc(sizeof(char*len));
	for(i=0;i<len;i++)
		sub->ch[i]=str.ch[pos+i-1];
	sub->length=len;
}

int BfString(Str str,Str sub)
{
	int i=1,j=1,k=i;
	while(i<str.length&&j<sub.length)
	{
		if(str.ch[i]==sub.ch[j])
		{
			i++;
			j++;
		}
		else
		{
			j=1;
			i=++k;
		}
	}

	if(j==sub.length)
		return k;
	else
		return 0;
}

5.求正整数各位数字的和eg:123=1+2+3=6

void fun()
{
	  int n,num,sum,tmp;
	  printf("请输入要计算的那个数字");
	  scanf("%d",&num);
	  while(num)
	  {
		tmp=num%10;
		sum+=tmp;
		sum/=10;
		}
	 printf("num=%d,sum=%d",num,sum);
}

你可能感兴趣的:(C语言编程题)