c语言作业代码

第一题

如果用cpp的话要用string 类

c++代码实现:

​
#include<iostream>

using namespace std;

string a[21] = { "zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven", "tweleve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"}
;
//建立数字与英文形式的映射
int main()
{
    string b,c;
    while (cin >> b >> c)
    {
        int b1,c1;
        for (int i = 0; i <= 10; i++)
        {
            if (a[i] == b)
            {
                b1 = i;
            }
            if (a[i] == c)
            {
                c1 = i;
            }
        }
        cout << a[c1 + b1] << "\n";
    }
    return 0;
}

​

如果要用c语言的话可以用指针数组来完成可以起到和string异曲同工的效果

c语言代码实现学了指针当然要用指针了。

#include<stdio.h>
#include<string.h>
char  *a[21]={
    "zero","one","two","three","four","five","six"

    ,"seven","eight","nine","ten","eleven","twelve","thirteen"

,"fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"}

;

//建立数字与英文形式的映射

int main ()

{
    char b[100],c[100];
    while(~scanf("%s",b))

    {
        scanf("%s",c);
        int b1,c1;

        for(int i=0;i<=10;i++)

        {
            if(!strcmp(a[i],b))

            {
                b1=i;

            }
            if(!strcmp(a[i],c))

            {
                c1=i;

            }

        }
        printf("%s\n",a[b1+c1]);
    }

    return 0;

}

不用指针数组也可以使用二维字符数组来实现字符数组来实现(其实没啥区别和字符数组)。

代码如下:

#include<stdio.h>

#include<string.h>

char a[21][10]={

    "zero","one","two","three","four","five","six"



    ,"seven","eight","nine","ten","eleven","twelve","thirteen"



,"fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"}



;   

//建立数字与英文形式的映射



int main ()



{

    char b[100],c[100];

    while(~scanf("%s",b))



    {

        scanf("%s",c);

        int b1,c1;



        for(int i=0;i<=10;i++)



        {

            if(strcmp(a[i],b)==0)



            {

                b1=i;



            }

            if(strcmp(a[i],c)==0)



            {

                c1=i;



            }



        }

        printf("%s\n",a[b1+c1]);

    }

    return 0;

}

第二题 

c++

#include<iostream>

#include<algorithm>

#include<cmath>

using namespace std;

const int N=110;

struct node

{

    int x;

    int s;

}

a[N];//结构体存储

int cmp1(int a)

{

    int s=0;

    while (a)

    {

        s+=pow(a%10,2);

        a/=10;

    }

    return s;

}

bool cmp(node &a,node &b)

{

    if (a.s!=b.s)

    return a.s<b.s;

    else return a.x<b.x;

}//对结构体用bool捆绑排序

int main ()

{

    int n;

    int t=0;

    while(cin>>n)

    {

        if(t>=1) cout<<"\n";

        t++;

        for (int i=1;i<=n;i++)

        {

            cin>>a[i].x;

            a[i].s=cmp1(a[i].x);

        }

        sort (a+1,a+n+1,cmp);

        //排序函数

//也可以用c语言的的排序函数qsort

//qsort(a+1,n,sizeof(a[0]),cmp);//CMP要重写

        for (int i=1;i<n;i++)

        cout<<a[i].x<<' ';

        if(n>=1)

        cout<<a[n].x;

    }

}

c语言不用结构体

#include<stdio.h>
#include<math.h> 
#define MAX 110
int a[MAX],s[MAX];
int cmp1(int a)
{
    int s = 0;
    while (a)
    {
        s += pow(a % 10, 2);
        a /= 10;
    }
    return s;
}
int main()
{
    int n;
    int t = 0;
    while (~scanf("%d",&n)&&n != 0)
    {
        if (t >= 1) puts("");
        t++;
        for (int i = 1; i <= n; i++)
        {

            scanf("%d", &a[i]);
            s[i] = cmp1(a[i]);
        }
        for (int i = 1; i <= n; i++)
        {
            for (int j = i + 1; j <= n; j++)
            {    
                if (s[i] > s[j])
                {
                    int t1 = a[i];
                    int t2 = s[i];
                    a[i]=a[j];
                    s[i] = s[j];
                    a[j] = t1;
                    s[j] = t2;
                }
                if(s[i]==s[j]&&a[i]>a[j])
                {
                    int t1 = a[i];
                     a[i]=a[j];
                       a[j] = t1;
                }
            }
        }
        for (int i = 1; i < n; i++)
        {
            printf("%d ", a[i]);
        }
        printf("%d", a[n]);
    }
}

c语言用结构体

#include<stdio.h>
#include<math.h>
#define MAX 110
struct node
{
    int x;
 
    int s;
}a[MAX],*p;//结构体存储
int cmp1(int a)
{
    int s=0;
 
    while (a)
    {
        s+=pow(a%10,2);
 
        a/=10;
    }
    return s;
}
int main ()
{
    int n;
    int t=0;
    while(~scanf("%d",&n)&&n!=0)
    {
        if(t>=1) puts("");
        t++;
        for (int i=1;i<=n;i++)
        {
            scanf("%d",&a[i].x);
            a[i].s=cmp1(a[i].x);
        }
         for (int i = 1; i <= n; i++)
        {
            for (int j = i + 1; j <= n; j++)
            {    
                if (a[i].s>a[j].s)
                {  
                  struct node t=a[i];
                  a[i]=a[j];
                  a[j]=t;
                }
              if(a[i].s==a[j].s&&a[i].x>a[j].x)
              {
               struct node t=a[i];
                  a[i]=a[j];
                  a[j]=t;
              }
            }
            
        }
        for (int i=1;i<n;i++)
        printf("%d ",a[i].x);
        printf("%d",a[n].x);
    }
}


第三题

#include<iostream>

#include<algorithm>

#include<cmath>

using namespace std;

const int N=10010;

int a[N];

bool check(int a)

{

    int s=1;// 默认1已经放在了s里

    for (int i=2;i<=a/i;i++)//所以从2开始

    {

        if(a%i==0&&i*i!=a)

        s+=i+a/i;

    }

    return s==a;

}

int main ()

{

    int n;

    int t=0;

    while (cin>>n)

    {

        if(t>=1) cout<<'\n';

        t++;

        int k=0;

        for (int i=2;i<=n;i++)

        {

            if(check(i))

            {

                a[++k]=i;

            }

        }

        if(k==0)cout<<n<<':'<<" NULL";

        else cout<<n<<":"<<' ';

        for (int i=1;i<k;i++)

        {

            cout<<a[i]<<' ';

        }

        if(k>=1)

        cout<<a[k];

    }

}

第4题

c语言

cpp

#include<stdio.h>
#define MAX 110
int a[MAX];
int main()
{
	int n;
	int t = 0;
	while (~scanf("%d",&n))
	{
		if (t >= 1)puts("");
		t++;
		for (int i = 1; i <= n; i++)
		{
          scanf("%d",&a[i]);
		}
	for(int i=1;i<=n;i++)
	{
		for (int j=i+1;j<=n;j++)
		{
			if(a[i]>a[j])
			{
				int t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
		}
	}
		for (int i = 1; i < n; i++)
		{
		printf("%d ",a[i]);
		}
	   printf("%d\n",a[n]);
	}
}
#include<iostream>

#include<algorithm>

#include<cmath>

using namespace std;

const int N=10010;

int a[N];

int main ()

{

    int n;

    int t=0;

    while (cin>>n)

    {

        if(t>=1)cout<<"\n";

        t++;

        for(int i=1;i<=n;i++)

        {

            cin>>a[i];

        }

        sort(a+1,a+n+1);//调用sort函数,偷懒

        for (int i=1;i<n;i++)

        {

            cout<<a[i]<<' ';

        }

        if(n>=1)

        cout<<a[n]<<'\n';//pta有严重的格式问题真恶心

    }

}

第五题

c语言写法:

#include<stdio.h>
#include<string.h>
const int N = 1010;
int count_sp(const char* s)
{
	int cnt = 0;
	for (int i = 0; *(s + i); i++)
	{
		if (*(s + i) == ' ')
			cnt++;
	}
	return cnt;
}
int main()
{
	char b[81];
	gets(b);
	int cnt = count_sp(b);
	printf("%s\n%d\n", b, cnt);
}

第六题

#include<iostream>
#include<algorithm> 
#include<string.h>
using namespace std;
const int N=10010;
int a[N]; 
void Swap(int *x, int *y)
{
	int t;
	t=*x;
	*x=*y;
	*y=t;
}
int main ()
{  
int a,b;
cin>>a>>b;
Swap(&a,&b);
cout<<a<<' '<<b<<endl;
}

第七题

#include<stdio.h>
int main()
{
	char a[100], b[45];
	char* p, * q;
	gets(a);
	gets(b);
	p = a;
	q = b;
	while (*p)
	{
		p++;
	}
	while (*q)
	{
		*p++ = *q++;//先赋值然后++
	}
	*p = '\0';//最后要补0不然格式错误
	printf("%s", a);
}

第八题

#include<iostream>
using namespace std;
char a[100], b[100];
void delect(char * c, char * d)

{
	while (1)

	{
		if (*c != 'a')
			*d++ = *c;//d赋值后再增加
		c++;//c一直增加
		if (*c == '\0')
			break;
	}
	*d = '\0';
}
int main()
{
	scanf("%s",a);
	delect(a, b);
	cout << b;
}

第九题

c语言

cpp

#include<stdio.h>
int main()
{
    int  * p,* q;
    int x,a,b;
    p=&a;
    q=&b;
    for (int i = 1; i <= 10; i++)
    {    
        scanf("%d", &x);
        if(i==1)
        {
            a=x;
            b=x;
        }
        if (*p < x)
        {
            *p = x;
        }
        if (*q > x)
        {
            *q = x;
        }
    }
    printf("%d",*p-*q);
}
#include<bits/stdc++.h>

using namespace std;

int a[11];

int main ()

{ 

for (int i=1;i<=10;i++)

{

 cin>>a[i];

}

int *x=min_element(a+1,a+10+1);

int *y=max_element(a+1,a+11);//用了最大最小函数又偷懒了;

cout<<*y-*x;

}

第十题

改了


#include<iostream>
using namespace std;
int a[11];
int search(int* list, int n, int x)
{
    for (int i = 0;i<n; i++)
    {
        if (*(list+i) == x)
        {
            return i;
        }
    }
    return -1;
}
int main()
{
    int k;
    cin >> k;
    while (k--)
    {
        int cnt = 0;
        int n;
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            cin >> a[i];
        }
        int x;
        cin >> x;
        int t = search(a, n, x);
        if (t >= 0)
            cout << "index = " << t << '\n';
        else cout << "Not found\n";
    }
}

第十一题

#include<bits/stdc++.h>
 
using namespace std;
 
int a[11];
 
int main ()
 
{
    for (int i=1;i<=10;i++)
 
    {
 
        cin>>a[i];
    }
 
  int *x=min_element(a+1,a+11);
 
  int *y=max_element(a+1,a+11);//偷懒偷懒
 
cout<<"difference value = "<<*y-*x<<'\n';
}

第十二题

#include<bits/stdc++.h>

using namespace std;

int a[11];

int main ()

{

    int n;

    cin>>n;

    int jc=1;

    for (int i=1;i<=n;i++)

    {

        jc*=i;

    }

    cout<<jc;

}

第十三题


#include<bits/stdc++.h>

using namespace std;

int a[11];

int sum(int n)

{

    int s=0;

    for (int i=1;i<=n;i++)

    {

        s+=pow(2,i);

    }

    return s;

}

int main ()

{

    int n;

    cin>>n;

    cout<<"result = "<<sum(n);

}

第十四题

#include<bits/stdc++.h>

using namespace std;

int a[11];

int main ()

{

    double x;

    cin>>x;

    if(x<=-2.0)

    {

      printf("y=%.6lf",-exp(2*x+1)+3);//exp函数

    }

    if(x>-2&&x<=3)

    {

        printf("y=%.6lf",2*x-1);

    }

    if(x>3)

    {

        printf("y=%.6lf",2*log10(3*x+5)-11);//log函数

    }

}

第十五题

c语言

手写快速排序

#include<iostream>
#include<algorithm> 
#include<cmath>
using namespace std;
const int N = 50010;
int a[N];
int n;
void Swap(int &a,int &b) 
{
	  int t=a;
	  a=b;
      b=t;
}
int partition(int low,int high)
{
    int pivot=a[low];
	while (low<high)
	{
	while (low<high&&a[high]>=pivot)high--;
	a[low]=a[high];
	while(low<high&&a[low]<=pivot) low++;
	a[high]=a[low];
	}
	a[low]=pivot;
	return low;
}
void qsort(int low,int high)
{
	if(low<high)
	{
		int pivotpos=partition(low,high);
		qsort(low,pivotpos-1);
		qsort(pivotpos+1,high);
	}
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    qsort(1,n);
    for (int i = 1; i < n; i++)
    {
        cout << a[i] << ' ';
    }
    cout << a[n] << ' ';
}

c++

sort函数

#include<iostream>

#include<algorithm>

#include<cmath>

using namespace std;

const int N=50010;

int a[N];

int main ()

{

    int n;

    cin>>n;

    for(int i=1;i<=n;i++)

    {

        cin>>a[i];

    }

    sort(a+1,a+n+1);//排序函数偷懒

    for (int i=1;i<n;i++)

    {

        cout<<a[i]<<' ';

    }

    if(n>=1)

    cout<<a[n]<<' ';//又是恶心的格式问题

}

第十六题

#include<bits/stdc++.h>

using namespace std;

int a[11];

int main ()

{

    int n;

    cin>>n;

    for (int i=1;i<=n;i++)

    {

        cin>>a[i];

    }

    int s=0;

    for (int i=1;i<=n;i++)

    {

        for (int j=i+1;j<=n;j++)

        {

            if(a[i]!=a[j])//相等时只要加一次

            {

                s+=a[i]*10+a[j];

                s+=a[i]+a[j]*10;

            }

            else s+=a[i]*10+a[j];

        }

    }

    cout<<s;

}

第十七题

#include<bits/stdc++.h>

using namespace std;

int a[11];

int main ()

{

    int n=10;

    for (int i=1;i<=n;i++)

    {

        cin>>a[i];

    }

    int s=0;

    int k;

    cin>>k;

    for(int i=1;i<=n;i++)

    {

        if(a[i]==k)

        s++;

    }

    cout<<s;

}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值