C语言常见的编程题(1)

学习任何一种语言不能只停留在看的层面上,最后还是要自己写代码才能成长,下面就是一些C语言中经典的变成问题

1.年龄问题:*有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。最后问第1个人,他说他是10岁。编写程序,当输入第几个人时求出其对应的年龄。
//使用递归的思想解题
int age(int n)
{
	if(n==1return  10;
	else
		return age(n-1)+2;
}

2.字符串功能实现:请编写程序,实现以下功能:在字符串中的所有数字字符前加一个$字符。例如,输入 A1B23CD45,输出 A$1B$2$3CD$4$5。
int Insert(char *s)
{
	char t[80];
	int i,j;
	for(i=0;s[i]!='\0';i++)
	{
		t[i]=s[i];
	}
	t[i]='\0';
	for(i=0;j=0;t[i]!-'\0';i++;)
	{
		  /*对于数字字符先写一个$符号,再写该数字字符*/
        if(t[i]>='0' && t[i]<='9')
        {
            s[j++]='$';
            s[j++]=t[i];
        }
    /*对于非数字字符原样写入串s*/
        else
            s[j++]=t[i];
     }
    s[j]='\0';  /*在串s结尾加结束标志*/
    return 0;
	
}

3.顶塔层数问题:八层灯塔,每一层都是上一层的两倍,一共765盏灯,求最底层的灯有几盏

void fun()
{
	//first表示第一层的灯盏数,last表示最后一层灯盏数
	int count,first=1,last,sum,i;//这里假设第一层只有一盏灯
	while(1)
	{
		last=first;
		sum=0;
		for(i=1;i<s;i++)
		{
			last*=2;
			sum+=last;
		}
		sum+=first;
		if(sum==765)
		{
			printf("底层灯一共有%d盏",last);
		}
		first++;
	}
}

4.输入一句英文句子,计算这句话中有多少个单词(单词使用’ '隔开)

void fun()
{
	char ch[200];
	printf("请输入一句英文句子");
	gets(ch);
	int i,flag=0,sum=0;
	for(i=0;ch[i]!='\0';i++)
	{
		if(flag==0&&(((ch[i]>'a'&&ch[i]<'z'))||((ch[i]>'A'&&ch[i]<'Z')))
		{
			flag=1;
			sum++;
		}
		if(ch[i]=' ')
		{
			flag=0;
		}
	}
	printf("英文句子中一共有%d个单词",sum);
}

5.假定输入的字符串只包含字母和号,请编写函数fun,他的功能是:将字符串尾部的号全部删除,前面和中间的号不删除 eg:输入的字符串内容是ABCDEFG******,删除后,字符串的内容应该为:ABCDEFG,不能使用C语言提供的字符串函数

void fun(char *str)
{
	char *p,*q;
	p=q=str;
	int i=0;
	//将指针p移动到str字符串末尾的操作
	while(*p)
		p++;
	p--;
	//删除字符串str后面的*操作
	while(*p=='*')
		p--;
		
	while(q<p)
	{
		str[i]=*q;
		++i;
		++q;	
	}
	str[i]='\0';
}
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值