第一题
如果用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;
}