当前位置:   article > 正文

郑州轻工业大学OJ(指针专题)_正在轻工业大学oj

正在轻工业大学oj

题目列表

1161.字符串长度

  1. #include<stdio.h> //字符串长度
  2. #include<string.h>
  3. int len(char *sp){
  4. int m,n=0,i,j;
  5. m=strlen(sp); //首字母就代表这个地址
  6. for(i=0;i<m;i++){
  7. if(sp[i]==' '){
  8. n++;
  9. }
  10. }
  11. return m-n;
  12. }
  13. int main(){
  14. char sp[100];
  15. gets(sp);
  16. int t=len(sp); //不需要加&,因为数组字母就代表字符串地址
  17. printf("%d",t);
  18. }

1162.循环移动 

  1. #include<stdio.h> //循环移动
  2. #include<stdlib.h>
  3. void ringShift(int *a,int n,int k){
  4. int i,j,b[n],c[n];
  5. for(i=0;i<n-k;i++){
  6. b[i]=a[i];
  7. }for(i=n-k;i<n;i++){
  8. c[i]=a[i];
  9. }
  10. for(i=n-k;i<n;i++){
  11. printf("%d ",c[i]);
  12. }for(i=0;i<n-k;i++){
  13. printf("%d ",b[i]);
  14. }
  15. }
  16. int main(){
  17. int n,k,i,j;
  18. scanf("%d",&n);
  19. int *p=(int *)malloc(n*sizeof(int));
  20. for(i=0;i<n;i++){
  21. scanf("%d",p+i);
  22. }
  23. scanf("%d",&k);
  24. ringShift(p,n,k);
  25. }

1165.实数的小数部分 

  1. #include<stdio.h> //实数的小数
  2. #include<string.h>
  3. #include<stdlib.h>
  4. char *decimal(char *p){
  5. int i,j=0,t=strlen(p),f=0;
  6. char *pa=(char *)malloc(110*sizeof(char));
  7. for(i=0;i<t;i++){
  8. if(p[i]=='.')
  9. f=1;
  10. if(f)
  11. pa[j++]=p[i];
  12. }
  13. pa[j]='\0';
  14. while(j--){
  15. if(pa[j]=='0')
  16. pa[j]='\0';
  17. else break;
  18. }
  19. if(pa[j]=='.')
  20. return NULL;
  21. return pa;
  22. }
  23. int main(){
  24. char a[110],*p=NULL;
  25. scanf("%s",a);
  26. int t=strlen(a);
  27. p=decimal(a);
  28. if(p==NULL)
  29. printf("No decimal part");
  30. else printf("0%s",p);
  31. }

1166.实数取整 

  1. #include<stdio.h> //实数取整
  2. #include<string.h>
  3. #include<stdlib.h>
  4. char *rounding(char *p){
  5. int i,j,t=strlen(p),k;
  6. char *pa=(char*)malloc(110*sizeof(char));
  7. for(i=0;i<t;i++){
  8. if(p[i]=='.')
  9. break;
  10. else pa[i]=p[i];
  11. }
  12. pa[i]='\0';
  13. for(j=0;j<i;j++){
  14. if(pa[0]=='0'&&pa[1]!='\0'){
  15. for(k=0;k<i;k++){
  16. pa[k]=pa[k+1];
  17. }
  18. }else if(pa[0]=='0'&&pa[1]=='\0'){
  19. return pa;
  20. }
  21. else break;
  22. }
  23. return pa;
  24. }
  25. int main(){
  26. char a[110],*p=NULL;
  27. scanf("%s",a);
  28. p=rounding(a);
  29. printf("%s",p);
  30. }

1167.逆序数 

  1. #include<stdio.h> //逆序数
  2. #include<string.h>
  3. #include<stdlib.h>
  4. void reverse(char *str){
  5. int i,j,t=strlen(str),k;
  6. char *p;
  7. p=(char *)malloc(110*sizeof(char));
  8. for(i=t-1;i>=0;i--){
  9. if(str[i]!='0')
  10. break;
  11. }
  12. int n=i;
  13. if(str[0]=='-'){
  14. p[0]='-';
  15. k=1;
  16. for(i;i>=1;i--){
  17. p[k++]=str[i];
  18. }
  19. for(j=n+1;j<t;j++){
  20. p[k++]=str[j];
  21. }
  22. p[k]='\0';
  23. }else{
  24. k=0;
  25. for(i;i>=0;i--){
  26. p[k++]=str[i];
  27. }
  28. for(j=n+1;j<t;j++){
  29. p[k++]=str[j];
  30. }
  31. p[k]='\0';
  32. }
  33. puts(p);
  34. }
  35. int main(){
  36. char *a;
  37. a=(char*)malloc(sizeof(char)*110);
  38. gets(a);
  39. reverse(a);
  40. }

1168.账单 

  1. #include<stdio.h> //账单
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int main(){
  5. int n;
  6. scanf("%d",&n);
  7. while(n--){
  8. int m,i,j;
  9. double sum=0,b;
  10. char *p=NULL,*a=(char*)malloc(sizeof(char)*200);
  11. scanf("%d",&m);
  12. for(i=0;i<m;i++){
  13. getchar();
  14. gets(a);
  15. p=strrchr(a,' ');
  16. sscanf(p,"%lf",&b);
  17. sum+=b;
  18. }
  19. printf("%.1f\n",sum);
  20. }
  21. }

1169.大整数

  1. #include<stdio.h> //大整数
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int cmp(char *a,char *b){
  5. if(strlen(a)>strlen(b))
  6. return 1;
  7. else if(strlen(a)<strlen(b))
  8. return -1;
  9. else{
  10. for(int i=0;i<strlen(a);i++){
  11. if(a[i]>b[i])
  12. return 1;
  13. else if(a[i]<b[i])
  14. return -1;
  15. }
  16. }
  17. return 0;
  18. }
  19. int main(){
  20. char a[110],b[110],c[110];
  21. gets(a);
  22. gets(b);
  23. gets(c);
  24. char *d;
  25. d=(char*)malloc(110*sizeof(char));
  26. if(cmp(a,b)==1){
  27. strcpy(d,a);
  28. strcpy(a,b);
  29. strcpy(b,d);
  30. }
  31. if(cmp(a,c)==1){
  32. strcpy(d,a);
  33. strcpy(a,c);
  34. strcpy(c,d);
  35. }
  36. if(cmp(b,c)==1){
  37. strcpy(d,b);
  38. strcpy(b,c);
  39. strcpy(c,d);
  40. }
  41. puts(a);
  42. puts(b);
  43. puts(c);
  44. }

1170.最长字符串

  1. #include<stdio.h> //最长字符串
  2. #include<string.h>
  3. #include<stdlib.h>
  4. void maxLenStr(char*str[],int n,int *max){
  5. int i,j,m=0;
  6. for(i=0;i<n;i++){
  7. if(strlen(str[i])>strlen(str[m])){
  8. m=i;
  9. }
  10. }*max=m;
  11. }
  12. int main(){
  13. char *str[110];
  14. char a[90];
  15. int i,j;
  16. for(i=0;;i++){
  17. gets(a);
  18. if(strcmp(a,"****")==0)
  19. break;
  20. str[i]=(char*)malloc(sizeof(char)*(strlen(a)+1));
  21. strcpy(str[i],a);
  22. }
  23. int max;
  24. maxLenStr(str,i,&max);
  25. printf("%s",str[max]);
  26. }

1171.加密 

  1. #include<stdio.h> //加密
  2. #include<string.h>
  3. #include<stdlib.h>
  4. void encrypt(char *plain,char *cipher){
  5. int i,j=0,t=strlen(plain);
  6. for(i=0;i<t;i++){
  7. cipher[j++]=plain[i]-24;
  8. }
  9. int n=strlen(cipher);
  10. for(i=n-1;i>=0;i--){
  11. printf("%d%d",cipher[i]%10,cipher[i]/10);
  12. }
  13. }
  14. int main(){
  15. char *p=(char*)malloc(sizeof(char)*200);
  16. char *a=(char*)malloc(sizeof(char)*500);
  17. gets(p);
  18. encrypt(p,a);
  19. }

1172.矩阵边界和 

  1. #include<stdio.h> //矩阵边界和
  2. #include<stdlib.h>
  3. int main(){
  4. int m,n,i,j;
  5. scanf("%d%d",&m,&n);
  6. int *p=(int*)malloc(sizeof(int)*m*n);
  7. for(i=0;i<m;i++){
  8. for(j=0;j<n;j++){
  9. scanf("%d",&p[i*n+j]);
  10. }
  11. }
  12. long long sum=0;
  13. // for(i=0;i<m;i++){
  14. // sum+=p[i*n+0]+p[i*n+n-1];
  15. // }
  16. // for(j=1;j<n-1;j++){
  17. // sum+=p[0*n+j]+p[(m-1)*n+j];
  18. // }
  19. for(i=0;i<m;i++){
  20. for(j=0;j<n;j++){
  21. if((i==0||i==m-1)||(j==0||j==n-1))
  22. sum+=p[i*n+j];
  23. }
  24. }
  25. printf("%lld",sum);
  26. }

1173.密码解密 

  1. #include<stdio.h> //密码解密
  2. #include<string.h>
  3. #include<stdlib.h>
  4. void decrypt(char*cipher,char*plain){
  5. int i,j=0,t=strlen(cipher);
  6. for(i=0;i<=t-1;i=i+2){
  7. plain[j++]=(cipher[i]-'0')*10+(cipher[i+1]-'0')+24;
  8. }
  9. printf("%s",plain);
  10. }
  11. int main(){
  12. char *a=(char*)malloc(sizeof(char)*200);
  13. char b[200];
  14. scanf("%s",a);
  15. decrypt(a,b);
  16. }

1175.矩阵转置 

  1. #include<stdio.h> //矩阵转置
  2. #include<stdlib.h>
  3. int main(){
  4. int m,n,i,j;
  5. scanf("%d%d",&m,&n);
  6. int *a=(int*)malloc(sizeof(int)*m*n);
  7. for(i=0;i<m;i++){
  8. for(j=0;j<n;j++){
  9. scanf("%d",&a[i*n+j]);
  10. }
  11. }
  12. for(j=0;j<n;j++){
  13. for(i=0;i<m;i++){
  14. printf("%d ",a[i*n+j]);
  15. }printf("\n");
  16. }
  17. }

1176.查找最大字符串 

  1. #include<stdio.h> //查找最大字符串
  2. #include<string.h>
  3. #include<stdlib.h>
  4. void find(char*name[],int n,int *p){
  5. int i=0;
  6. *p=0;
  7. for(i=0;i<n;i++){
  8. if(strcmp(name[*p],name[i])<0){
  9. *p=i;
  10. }
  11. }
  12. }
  13. int main(){
  14. int *p=NULL,max;
  15. char a[10],*name[100];
  16. int i=0,j;
  17. while(gets(a)){
  18. if(strcmp(a,"*****")==0)
  19. break;
  20. name[i]=(char*)malloc(sizeof(char)*(strlen(a)+1));
  21. strcpy(name[i],a);
  22. i++;
  23. }
  24. p=&max; //不能省略
  25. find(name,i,p);
  26. printf("%s",name[*p]);
  27. for(j=0;j<i;j++){
  28. free(name[j]);
  29. }
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/928864
推荐阅读
相关标签
  

闽ICP备14008679号