C语言的问题~~~

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:33:10
1。输入正整数M、N,将M分成N个正整数的和,并且N个正整数各不相同,在屏幕上打印出分法个数。例如:M=5,N=2,那么,结果应该为2(有两种分法:5 = 1 + 4或者5 = 2 + 3)。

2。编程计算给定的整数在用二进制来表示时含有多少个1。
例:十进制整数13用二进制表示为1101,含有3个1。

3。编程求整数区间[a,b]和[c,d]的交集
例如:从键盘输入1,10,5,15这四个数表示[1,10],[5,15],输出结果:[5,10]

4。请编写一个字符串处理函数,其功能为:
把字符串中的所有的字母A都移动到字符串末尾,处理完后字符串的长度应保持不变,新字符串保存与在原字符串相同的内存空间中。

5。给定一个介于0与1之间的小数,以及分母的最大位数(1-6位)。请构造一个程序,寻找分母在指定位数之内,与给定小数最接近的分子——分母对(显然,分子、分母须为整数)。例如,黄金分割比0.618...,分母限定为2位时,最接近的分数为55/89;分母限定为3位时,为 610/987。

/*先写第二三四五个, 第一个再想想,有难度*/
/*2*/
#include <stdio.h>

int main()
{
int n;
printf("enter a integer:");
scanf("%d", &n);

printf("the number'1' the integer is: %d \n", dtob(n));

return 0;
}

int dtob(int n)
{
int count = 0;

while (n != 0)
{
if (n % 2 == 1)
{
count++;
}
n /= 2;
}

return count;
}

/*3*/
#include <stdio.h>

int main(int argc, char *argv[])
{
int a, b, c, d, i;
printf("enter a:");
scanf("%d", &a);
printf("enter b:");
scanf("%d", &b);
printf("enter c:");
scanf("%d", &c);
printf("enter d:");
scanf("%d", &d);

if (a > b || c > d)
{
printf("input error");