C语言/C++常见习题问答集锦(三十九) 之一石二鸟

C语言/C++常见习题问答集锦(三十九) 之一石二鸟

程序之美

在这里插入图片描述

1、C语言中实现“17进制”转“10进制”实例代码

C++版:

#include <iostream> 
#include <string> 
using namespace std; 
  
int main() 
{ 
  string s; 
  int len,factor=17,num; 
  bool sign;//用来标志输入字符串是否非法 
  while(cin>>s) 
  { 
    len = s.size(); 
    sign =1; 
    num=0; 
  
    for(int i=0;i<len;i++) 
    { 
      if(s[i]>='0'&&s[i]<='9')      
        num=num*factor+(s[i]-'0'); 
  
      else if(s[i]>='A'&&s[i]<='H') 
        num=num*factor+(s[i]-'A'+10); 
  
      else
      { 
        sign=0; 
        break; 
      } 
    } 
  
    if (sign) 
      cout<<num<<endl; 
    else
      cout<<"Error Input!"<<endl; 
  } 
  return 0; 
} 

C语言版:

#include <stdio.h>
#include <stdlib.h>
/*
================================================
功能:十七机制转换为十进制 
输入:十七进制数
输出:十进制数 
作者:龙行江湖
时间:2.13.8.16. 
================================================
*/

int convert(char str[])     //转换函数 
{
  int sum=0,n=0,i;
  for(i=0;i<strlen(str);i++) //从高位到低位一位一位读取 
  {
    if(str[i]>='0'&&str[i]<='9') 
    n=str[i]-'0';                   //0-9可以用-‘0’的方法隐式转换为int类型 
    else n=str[i]-55;              //A-G可以用-55的方法隐式转换为int类型 
    sum=sum*17+n;                 //累加计算结果 
    //printf("%d,%d,%d\n",i,n,sum);  //验证结果过程 
  }
  return sum;
}
main()
{
    char str[20];
    gets(str);
    int a=convert(str);//实现转换 
    printf("%d",a);
    getchar();
}

在这里插入图片描述

2、分别用指针和数组两种方式,实现随机输入一组字符串,然后按字母顺序排列。
要求:两个函数均为独立函数,可输入任意长度字符串(<1024),非法输入要提示错误信息。

#include<stdio.h>
#include<string.h>
void sort(char number[],int n); //这里直接用 char number[] 就行了
void sortPtr(char* number,int n);
void main()
{
    char a[100],*number;
    int n;
    printf("请输入一串字符串:\n");
    gets(a);
    number=a;
    printf("排序后得:%d\n",n=strlen(a));
    sortPtr(number,n);
    puts(a);
    getchar();
}
void sort(char number[],int n) //这里也要改成 char number[]
{
    char temp; //这里直接用temp
    int i,j,k;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            k=i;
            for(j=i+1;j<n;j++)
                if(number[k]>number[j]) //你是当个字符比较 直接用munber[k]>number[j]就行了
                    k=j;
            if(k!=i)
            {
                temp=number[i];
                number[i]=number[k];
                number[k]=temp;
            }
        }
    }
}
 
void sortPtr(char* number,int n) //这里也要改成 char number[]
{
    char temp; //这里直接用temp
    int i,j,k;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            k=i;
            for(j=i+1;j<n;j++)
                if(*(number+k)>*(number+j)) //你是当个字符比较 直接用munber[k]>number[j]就行了
                    k=j;
            if(k!=i)
            {
                temp=*(number+i);
                *(number+i)=*(number+k);
                *(number+k)=temp;
            }
        }
    }
}

3、泰勒级数sin(x)=x-x3/3!+x5/5!-x7/7!+x9/9!-… 计算sin(x)的值。要求最后一项的绝对值小于10^(-5)

#include <stdio.h>
#include <math.h>
/* 利用泰勒级数sin(x)=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-...
    计算sin(x)的值。要求最后一项的绝对值小于10^(-5)*/
void  main(){
  double sum,item;
  int i=0,count=0;
  float x;
  printf("Input x: ");
  scanf("%f",&x);
  sum=x;
  item=x;//初始化赋值 item存放每一项的值
  do{
    i++;
	item = -item*x*x/((2*i)*(2*i+1));//第一項为-x^3/3! item=-x*x*x/(2*3) 
	//第二项为x^5/5! 直接对第一項取负,-item*x*x/(4*5),后面以此类推 
	sum+=item;
	count++;
  }while(fabs(item)>=1e-5);
  printf("sin(%f)=%6.6lf,count=%d\n",x,sum,count);
 
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C/C++期末复习资料大汇总 一、内容概述 在本次上传中,我们为您精心整理了关于C/C++的期末复习资料。这些资料涵盖了从基础知识到进阶概念,旨在帮助您全面复习C/C++的相关内容。无论是准备期末考试还是为大作业做准备,这份资料都将为您的学习提供有力的支持。 二、资料详解 基础知识篇:针对C/C++的语法、数据类型、运算符等内容进行了详细的梳理,帮助您打好扎实的基础。 进阶概念篇:深入探讨了指针、函数、文件操作等进阶知识点,为您进一步提升编程能力提供指导。 期末复习题及答案:包含各类期末考试的经典题目及详细答案,让您熟悉考试题型,把握考试重点。 期末大作业指南:针对C/C++的期末大作业,提供了从选题到实现的全程指导,帮助您顺利完成作业。 实战案例集锦:收录了一些经典案例,让您在实践中掌握C/C++的应用技巧。 三、适用人群 这份复习资料适用于学习C/C++的各类人群,无论是初学者还是有一定编程基础的学生,都能从中获得收益。 四、使用建议 我们建议您先从基础知识开始复习,逐步深入到进阶概念。在掌握基本知识点后,结合复习题进行巩固练习,最后通过大作业和实战案例进一步提升自己的编程能力。 五、特别提示 为了更好地掌握C/C++的知识点,除了复习资料外,实际操作和练习也是非常关键的。希望这份资料能帮助您取得优异的成绩,也欢迎您在学习过程中提出宝贵的意见和建议。 最后,感谢您选择我们的复习资料,祝您学习顺利!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五一编程

程序之路有我与你同行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值