C语言编程题

2024-05-10

1. C语言编程题

long fun(int k)
{
if(i<2)
return 1L;
return k*fun(k-1);
}
或:
#include "stdio.h"
main()
{
double h,c;
//printf("Input h\n");
scanf("%lf",&h);
c=5.0/9*(h-32);
printf("c=%lf",c);
}

扩展资料:
C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
参考资料来源:百度百科-c语言

C语言编程题

2. C语言编程题?

思路:循环100次,每次用num接收0~9的随机数,每个数字出现一次就把累加次数保存在nums[10]数组中对应位置(num0~9刚好对应下标)。
最后输出打印。

#include 
#include 
#include 
int main()
{
    int i,num,n=100;
    float nums[10]={0};
    srand(time(NULL));
    while(n--)
    {
        num=rand()%10;
        nums[num]++;
    }
    printf("0~9各个数出现频率为:\n");
    for(i=0;i<10;i++)
        printf("%d:%.1f%%\n",i,nums[i]/100*100);
    return 0;
}

3. C语言编程题

两种思路,一种设计过程比较简单,就是直接用程序模拟所有可能的路径,把合题意的走法全部计数。这种算法的时间复杂度大约在O(2^N)左右,比较慢。另一种是建立一个数学模型,采用组合数的思想解这个问题,这样设计出程序只是一个数学计算过程,组合数计算最快的算法是O(N),在加上求和,算法时间复杂度为O(N^2)左右。
一种简单的递归模拟方法:
void decision::make_decision(int step, int restlevel) { //走法:走一步或两步    if(restlevel == 0){                                 //路径走完        if(step % 2 == 0){                              //是偶数步            decision_count ++;                          //可作为一种走法        }    }    else {                                              //路径未走完        step ++;        for (int i = 0 ; i  i ){                make_decision(step, restlevel - i - 1); //下一步走法            }        }    }}该问题的数学解法是:由于需要走偶数步,而楼梯数是奇数,那么必然有奇数步走了两个台阶。假设2n-1步走两个台阶,则一共走了39-2i+1步,最多有floor(39/2)=19步(此时n=10)是两步。面就是简单组合问题。可以得出 
Count = Σ(i=1...10)C(39-2i+1, 2i-1)
Σ为求和符号,C(n,k)为组合数符号。

C语言编程题

4. C语言编程题?

Cmn是一个数学上的公式,其中m是其的下角标,n是其的上角标。计算方法是
m×(m-1)×(m-2)×……共有n项的乘积,然后除以n的阶乘用C语言做这个计算的编程,步骤如下:
1、首先需要读取m和n的值,然后在读取的同时进行判断是否满足m>0、n>0、m>=n的条件,如果不满足要求重新输入。
2、然后可以构建两个函数fun1和fun2,其中fun1的参数有两个m和n,利用循环控制求出m×(m-1)×(m-2)×······;fun2的参数只有一个,用来求n的阶乘。
3、返回值,有两种方法:(1)fun1和fun2返回整型值到主函数,强制转换成float型;(2)直接在fun1和fun2函数中将返回值强制转换成float型,然后返回到主函数进行计算。
4、在主函数中计算两个返回值的差,最后输出。
具体代码如下:(精度不够请把 int 换成 long long)
#include int fun1(int m, int n){    int i, result;    for(result = m, i = 1; i  2; ){        result *= --n;    }    return result;} int main(){    int m, n, result, x, y;    printf("请输入大于零的整数m:");    while( 1 ){        scanf( "%d", &m );        if(m > 0)            break;        printf("\n输入有误,请重新输入大于零的整数m:");    }         printf("\n请输入大于零且小于等于%d的整数n:", m);    while(1){        scanf( "%d", &n );        if(n > 0 && n <= m )            break;        printf("\n输入有误,请重新输入大于零且小于等于%d的整数n:", m);    }         x = fun1( m, n );    y = fun2( n );    result = x / y;         printf("\n结果是:%d\n", result);    return 0;}

5. C语言编程题

根据题意:题目1:函数参数是除数(这里传值8),返回满足条件的数字和。题目2:函数参数是要找的项目数(这里传值10),返回对应项的值。

#include
#define MIN 50
#define MAX 1000
int fa(int a);//对应题目1的函数,参数:要除的数,返回可以被整除的数之和
int getByIndex(int n);//对应题目2,返回数列第n项,错误返回-1
int main()
{
printf("1、%d~%d之间能被%d整除的数字之和为:%d\n",MIN,MAX,8,fa(8));
printf("2、数列头三个数为4,5,6,以后的每个数为前三数和,求此数列第%d项:%d\n",10,getByIndex(10));
return 0;
}
int fa(int a)//对应题目1的函数,参数:要除的数,返回可以被整除的数之和
{
int i,sum=0;
for(i=MIN;i<=MAX;i++)
if(i%a==0)
sum+=i;
return sum;
}
int getByIndex(int n)//对应题目2,返回数列第n项,错误返回-1
{
if(n<1)
return -1;
int i,nums[n];
nums[0]=4,nums[1]=5,nums[2]=6;
for(i=3;i<n;i++)
nums[i]=nums[i-1]+nums[i-2]+nums[i-3];
return nums[n-1];
}

C语言编程题

6. C语言编程题

你的计算方法是有问题的。例如:AAABBBBA这个序列,有4个A和4个B,但是其实它并不是任何一个序列的镜像产生,所以它的经过求解得到的长度就应该为8,而你的算法最终会得到2的结果。把A的个数和B的个数分开计算是错误的,甚至可以说用字符个数来寻求解答是错误的。我这里提供一个算法思路:

    步骤一,如果字符串长度N%2!=0,则该问题的结果为N。如果N%2==0,采用首位指针,首指针*P指向字符串首,尾指针*Q指向字符串尾。比较(*P==*Q)是否成立,如果不成立,则该问题结果即N。如果成立,则P++,Q--,一直如此比较至P>=Q为止;

    步骤二,保持Q不变,将P重置为行首。此时指针P和Q之间的长度为N/2。令N=N/2;

    步骤三,重复步骤一和步骤二,直至得出结果。

 

    这只是一种算法思路,是否有更优的算法有待考究(例如递归),上班没时间继续研究。

    还有就是你的scanf("%d",&a[i][j]);的确有问题,应该为scanf("%c",&a[i][j]);

7. C语言编程题?

第90个小时末,病毒的数量会超过1亿个:

#include
int main()
{ int s=1,n=0;
  while(s<=1000000000)
    s+=s,n++;
  printf("%d\n",n*3);
  return 0;
}

C语言编程题?

8. C语言编程题?

分析关键点:
1、根据字符的输入,检测sizeof执行的类型,这个要分类,所以需要用到分支结构,多个分类的还是switch会比较清楚一些
2、根据输入的数量进行计算,考虑基础单位是字节,所以数值可能比较大,计算记过应该使用long等大一些的类型。
3、根据总的字节数进行换算。这里最多就到兆字节,所以就图个省事,算穷举一下了。其实也可以利用递归的思路,一直到更高的单位的。

代码和测试结果如图,我这里是C++环境就没有贴出来引用的库,所以还请根据自己的环境引用库,比如stdio等:



目前测试与用例一致。注意我这里每一个输出有个'\n',如果是网络教室之类的需要注意下系统要求有没有要求换行。