编辑
简单就不写了.
编辑
#include<stdio.h> int main() { int m,i; while(scanf("%d",&m)!=EOF) { long a[m],sum=0; for(i=0;i<m;i++) { scanf("%ld",&a[i]); sum=sum+a[i]; } printf("%ld\n",sum); } return 0; } //与上一题一样注意定义类型就好,题还是简单.
编辑
#include <stdio.h> int fib(int n) { if(n<=1) return 1; if(n>=2) { return fib(n-1)+fib(n-2); } } int main() { int n; int sum=0; int i,c; while(~scanf("%d",&n)) { for(i=0;i<=n;i++) { c=fib(i); } if(i>n) { printf("%d\n",c); } } return 0; } //最基础的递归用法.
编辑
#include<stdio.h> int main() { int m,n,r,p; int temp; scanf("%d %d",&m,&n); if(m<n) { temp=m; m=n; n=temp; } while((r=m%n)!=0) { m=n; n=r; } printf("%d\n",n); return 0; } //简单题,课本有,必须训练至纯属.
编辑
#include <stdio.h> int yuefen(int fenzi,int fenmu) { int n=fenzi,m=fenmu; int r,p; int temp; if(m<n) { temp=m; m=n; n=temp; } p=m*n; while((r=m%n)!=0) { m=n; n=r; } return n; } int main() { char s[7]; int a,b,c,d; while(scanf("%s",s)!=EOF) { a=s[0]-48; b=s[2]-48; c=s[4]-48; d=s[6]-48; if(s[3]=='+') { if(a==0&&c==0) { printf("0\n"); } else { int fenzi=a*d+c*b; int fenmu=b*d; int gongyueshu=yuefen(fenzi,fenmu); fenzi=fenzi/gongyueshu; fenmu=fenmu/gongyueshu; if(fenmu==1) { printf("%d\n",fenzi); } else { printf("%d/%d\n",fenzi,fenmu); } } } if(s[3]=='-') { if((double)a/b<(double)c/d) { int fenmu=b*d; int fenzi=b*c-a*d; int gongyueshu=yuefen(fenzi,fenmu); fenzi=fenzi/gongyueshu; fenmu=fenmu/gongyueshu; if(fenmu==1) { printf("-%d\n",fenzi); } else { printf("-%d/%d\n",fenzi,fenmu); } } else { if((a==c&&b==d)||(a==0&&c==0)) { printf("0\n"); } else { int fenmu=b*d; int fenzi=a*d-b*c; int gongyueshu=yuefen(fenzi,fenmu); fenzi=fenzi/gongyueshu; fenmu=fenmu/gongyueshu; if(fenmu==1) { printf("%d\n",fenzi); } else { printf("%d/%d\n",fenzi,fenmu); } } } } } return 0; } //咋说呢开始也不会看了csdn才有的思路,说明自己还是太菜了.
编辑
#include<stdio.h> int main() { int n; scanf("%d",&n); int a,b,c,i; while(n>0) { scanf("%d %d %d",&a,&b,&c); if((a+b==c)||(a+c==b)||(b+c==a)) { printf("YES\n"); } else { printf("NO\n"); } n--; } return 0; } //这题不难,理解题意就好.
编辑
#include<stdio.h> int main() { long long n,i,q; scanf("%d",&n); long long arr[n]; for(i=0;i<n;i++) { scanf("%lld",&arr[i]); } scanf("%lld",&q); long long a[q]; for(i=0;i<q;i++) { scanf("%lld",&a[i]); } for(i=0;i<q;i++) { long long l=0; long long r=n-1; while(l<=r) { int mid=(l + r)/2; if(a[i]>arr[mid]) { l=mid+1; } else if(a[i]<arr[mid]) { r=mid-1; } else { printf("Yes\n"); break; } } if(l>r) { printf("No\n"); } } return 0; } //第一次写没思想然后超时了自己的代码,不过学了学长的模板,自己添加一点会了.给自己的建议就是思想会了,但是做和做到其实还是不一样的,需要加强印象和多敲几次.
编辑
#include<stdio.h> void bulle_sort(int arr[],int n) { int i=0; for(i=0;i<n-1;i++) { int j=0; for(j=0;j<n-i-1;j++) { if(arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } int main() { int n,i; int arr[2000]={0}; scanf("%d",&n); if(n<=0) { return 0; } for(i=0;i<n;i++) { scanf("%d",&arr[i]); } bulle_sort(arr,n); for(i=0;i<n;i++) { printf("%d ",arr[i]); } } //简单的冒泡排序其实不写也可.
编辑
#include<stdio.h> #include<string.h> int main() { char arr[100010]; char ch,c; scanf("%s %c %c",&arr,&ch,&c); int len=strlen(arr); int i; for(i=0;i<len;i++) { if(arr[i]==ch) { arr[i]=c; } else continue; } if(len==i) { printf("%s",arr); } return 0; } //注意现在注意是一行输入.这里还是需要提醒的,自己在这里卡了几次.
编辑
#include<stdio.h> void bubbl_sort(int arr[],int n) { int i,j; for(i=0;i<n-1;i++) { for(j=0;j<n-1-i;j++) { if(arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } int main() { int n,i,m; scanf("%d",&n); int arr[1000]; while(n>0) { int flag=0;//标记是否严格单增或单减. scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d",&arr[i]); } bubbl_sort(arr,m); for(i=0;i<m-1;i++) { if(arr[i]>=arr[i+1]) { flag=1; } } if(m==1) { flag=0; } if(flag==1) { printf("NO\n"); } else printf("YES\n"); n--; } return 0; } //方法:先冒泡排序,后面用flag标记看是否严格单增最后输出 //这种输出两种情况的其实标记法非常适合 //注意总结.
编辑
*#include<stdio.h> int main() { int a[20],b[10],c[10],i,j=0,k=0,t,m,n; for(i=0;i<10;i++) { scanf("%d",&a[i]); if(a[i]%2==0) b[j++]=a[i]; if(a[i]%2==1) c[k++]=a[i]; } m=j,n=k; for(j=0;j<m;j++) { for(i=1;i<m;i++) { if(b[i-1]>b[i]) t=b[i-1],b[i-1]=b[i],b[i]=t; } } for(j=0;j<n;j++) { for(i=1;i<n;i++) { if(c[i-1]>c[i]) { t=c[i-1] c[i-1]=c[i] c[i]=t; } } } for(i=0;i<n;i++) printf("%d ",c[i]); for(i=0;i<m-1;i++) printf("%d ",b[i]); printf("%d\n",b[m-1]); return 0; } //这个题思想就是开三个数组,一个用于输入,2个用来记录奇数和偶数 //然后对俩数组进行冒泡排序后打印.————简单题
编辑
#include<stdio.h> #include<string.h> int main() { int len,i,j; char arr[100010]; gets(arr); len=strlen(arr); for(i=2;i<len;i++)//字符串的长度比如33 表示两位 444 表示3位 { for(j=0;j<len;j++) { int l=j,r=i+j-1,flag=0; while(l<=r) { if(arr[r]!=arr[l]) { flag=1; break; } else { l++; r--; } } if(flag==0) { for(int k=j;k<=i+j-1;k++) { printf("%c",arr[k]); } printf("\n"); } } } return 0; }
编辑
#include <stdio.h> #include <stdlib.h> #include <string.h> void my_panduan(char* str1,char* str2) { while(*str1!='\0'&&*str2!='\0') { if(*str1==*str2) { str1++; str2++; } } if(*str1=='\0'&&*str2=='\0') { printf("Yes\n"); } else { printf("No\n"); } } int main() { char a[1000],a1[1000],b[1000],b1[1000]; int i,j=0; gets(a); gets(b); int n1=strlen(a),n2=strlen(b); for (i=0;i<n1;i++) { if (a[i]>='A'&&a[i]<='Z') a1[j++]=a[i]+32; else if (a[i]>='a'&&a[i]<='z') a1[j++]=a[i]; } a1[j]='\0'; j=0; for (i=0;i<n2;i++) { if (b[i]>='A'&&b[i]<='Z') b1[j++]=b[i]+32; else if (b[i]>='a'&&b[i]<='z') b1[j++]=b[i]; } b1[j]='\0'; my_panduan(a1,b1); return 0; } //这些是我自己写的超时了,我肝了很长时间并且用了指针后面发现自己多蠢真的很蠢. //下面讲一下我在csdn某个大佬文章学的方法. #include<stdio.h> #include<string.h> void play(char *s,char *k){ //用char *k,可以在函数中改变k[]的值,也改变了main函数中此数组数值 int j=0; for(int i=0;s[i]!=0;i++){ // '\0'ASCII码就是0,等价 if(s[i]>='a'&&s[i]<='z')//若为小写字母则转大写字母,并存在数组k[]中 k[j++]=s[i]-'a'+'A'; else if(s[i]!=' ')//若不为空格,即大写字母时直接存入数组K k[j++]=s[i]; } k[j]='\0';//最后给K存入结束符\0 } int main(){ char a[100],b[100],c[100]; gets(a); gets(b); play(a,c);//把数组a删去空格,小写换大写存入数组c play(b,a);//把数组b删去空格,小写换大写存入数组a if(!strcmp(c,a))//判断俩数组是否相等 printf("YES"); else printf("NO"); return 0; } //https://blog.csdn.net/weixin_43727125/article/details/84529785 大佬网站自己想看去看看.
编辑
/* 空格数 字符数 EDCBAABCD 0 5+4 DCBAABC 1 4+3 CBAAB 2 3+2 BAA 3 2+1 A 4 1+0*/ #include<stdio.h> int main() { char c[1]; scanf("%c",&c); int i,j; int sz=c[0]-'A'; for(i=0;i<sz+1;i++) { for(j=0;j<i;j++) { printf(" "); } for(j=0;j<sz+1-i;j++) { printf("%c",c[0]-j-i); } for(j=0;j<sz-i;j++) { printf("%c",c[0]-sz+j); } printf("\n"); } return 0; } //这个题还算基础,一次ac了
编辑
太基础不写
编辑
我现在还是不会的状态.同上一个回文,学完就发评论。