题目列表
1161.字符串长度
#include<stdio.h> //字符串长度
#include<string.h>
int len(char *sp){
int m,n=0,i,j;
m=strlen(sp); //首字母就代表这个地址
for(i=0;i<m;i++){
if(sp[i]==' '){
n++;
}
}
return m-n;
}
int main(){
char sp[100];
gets(sp);
int t=len(sp); //不需要加&,因为数组字母就代表字符串地址
printf("%d",t);
}
1162.循环移动
#include<stdio.h> //循环移动
#include<stdlib.h>
void ringShift(int *a,int n,int k){
int i,j,b[n],c[n];
for(i=0;i<n-k;i++){
b[i]=a[i];
}for(i=n-k;i<n;i++){
c[i]=a[i];
}
for(i=n-k;i<n;i++){
printf("%d ",c[i]);
}for(i=0;i<n-k;i++){
printf("%d ",b[i]);
}
}
int main(){
int n,k,i,j;
scanf("%d",&n);
int *p=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++){
scanf("%d",p+i);
}
scanf("%d",&k);
ringShift(p,n,k);
}
1165.实数的小数部分
#include<stdio.h> //实数的小数
#include<string.h>
#include<stdlib.h>
char *decimal(char *p){
int i,j=0,t=strlen(p),f=0;
char *pa=(char *)malloc(110*sizeof(char));
for(i=0;i<t;i++){
if(p[i]=='.')
f=1;
if(f)
pa[j++]=p[i];
}
pa[j]='\0';
while(j--){
if(pa[j]=='0')
pa[j]='\0';
else break;
}
if(pa[j]=='.')
return NULL;
return pa;
}
int main(){
char a[110],*p=NULL;
scanf("%s",a);
int t=strlen(a);
p=decimal(a);
if(p==NULL)
printf("No decimal part");
else printf("0%s",p);
}
1166.实数取整
#include<stdio.h> //实数取整
#include<string.h>
#include<stdlib.h>
char *rounding(char *p){
int i,j,t=strlen(p),k;
char *pa=(char*)malloc(110*sizeof(char));
for(i=0;i<t;i++){
if(p[i]=='.')
break;
else pa[i]=p[i];
}
pa[i]='\0';
for(j=0;j<i;j++){
if(pa[0]=='0'&&pa[1]!='\0'){
for(k=0;k<i;k++){
pa[k]=pa[k+1];
}
}else if(pa[0]=='0'&&pa[1]=='\0'){
return pa;
}
else break;
}
return pa;
}
int main(){
char a[110],*p=NULL;
scanf("%s",a);
p=rounding(a);
printf("%s",p);
}
1167.逆序数
#include<stdio.h> //逆序数
#include<string.h>
#include<stdlib.h>
void reverse(char *str){
int i,j,t=strlen(str),k;
char *p;
p=(char *)malloc(110*sizeof(char));
for(i=t-1;i>=0;i--){
if(str[i]!='0')
break;
}
int n=i;
if(str[0]=='-'){
p[0]='-';
k=1;
for(i;i>=1;i--){
p[k++]=str[i];
}
for(j=n+1;j<t;j++){
p[k++]=str[j];
}
p[k]='\0';
}else{
k=0;
for(i;i>=0;i--){
p[k++]=str[i];
}
for(j=n+1;j<t;j++){
p[k++]=str[j];
}
p[k]='\0';
}
puts(p);
}
int main(){
char *a;
a=(char*)malloc(sizeof(char)*110);
gets(a);
reverse(a);
}
1168.账单
#include<stdio.h> //账单
#include<string.h>
#include<stdlib.h>
int main(){
int n;
scanf("%d",&n);
while(n--){
int m,i,j;
double sum=0,b;
char *p=NULL,*a=(char*)malloc(sizeof(char)*200);
scanf("%d",&m);
for(i=0;i<m;i++){
getchar();
gets(a);
p=strrchr(a,' ');
sscanf(p,"%lf",&b);
sum+=b;
}
printf("%.1f\n",sum);
}
}
1169.大整数
#include<stdio.h> //大整数
#include<string.h>
#include<stdlib.h>
int cmp(char *a,char *b){
if(strlen(a)>strlen(b))
return 1;
else if(strlen(a)<strlen(b))
return -1;
else{
for(int i=0;i<strlen(a);i++){
if(a[i]>b[i])
return 1;
else if(a[i]<b[i])
return -1;
}
}
return 0;
}
int main(){
char a[110],b[110],c[110];
gets(a);
gets(b);
gets(c);
char *d;
d=(char*)malloc(110*sizeof(char));
if(cmp(a,b)==1){
strcpy(d,a);
strcpy(a,b);
strcpy(b,d);
}
if(cmp(a,c)==1){
strcpy(d,a);
strcpy(a,c);
strcpy(c,d);
}
if(cmp(b,c)==1){
strcpy(d,b);
strcpy(b,c);
strcpy(c,d);
}
puts(a);
puts(b);
puts(c);
}
1170.最长字符串
#include<stdio.h> //最长字符串
#include<string.h>
#include<stdlib.h>
void maxLenStr(char*str[],int n,int *max){
int i,j,m=0;
for(i=0;i<n;i++){
if(strlen(str[i])>strlen(str[m])){
m=i;
}
}*max=m;
}
int main(){
char *str[110];
char a[90];
int i,j;
for(i=0;;i++){
gets(a);
if(strcmp(a,"****")==0)
break;
str[i]=(char*)malloc(sizeof(char)*(strlen(a)+1));
strcpy(str[i],a);
}
int max;
maxLenStr(str,i,&max);
printf("%s",str[max]);
}
1171.加密
#include<stdio.h> //加密
#include<string.h>
#include<stdlib.h>
void encrypt(char *plain,char *cipher){
int i,j=0,t=strlen(plain);
for(i=0;i<t;i++){
cipher[j++]=plain[i]-24;
}
int n=strlen(cipher);
for(i=n-1;i>=0;i--){
printf("%d%d",cipher[i]%10,cipher[i]/10);
}
}
int main(){
char *p=(char*)malloc(sizeof(char)*200);
char *a=(char*)malloc(sizeof(char)*500);
gets(p);
encrypt(p,a);
}
1172.矩阵边界和
#include<stdio.h> //矩阵边界和
#include<stdlib.h>
int main(){
int m,n,i,j;
scanf("%d%d",&m,&n);
int *p=(int*)malloc(sizeof(int)*m*n);
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&p[i*n+j]);
}
}
long long sum=0;
// for(i=0;i<m;i++){
// sum+=p[i*n+0]+p[i*n+n-1];
// }
// for(j=1;j<n-1;j++){
// sum+=p[0*n+j]+p[(m-1)*n+j];
// }
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if((i==0||i==m-1)||(j==0||j==n-1))
sum+=p[i*n+j];
}
}
printf("%lld",sum);
}
1173.密码解密
#include<stdio.h> //密码解密
#include<string.h>
#include<stdlib.h>
void decrypt(char*cipher,char*plain){
int i,j=0,t=strlen(cipher);
for(i=0;i<=t-1;i=i+2){
plain[j++]=(cipher[i]-'0')*10+(cipher[i+1]-'0')+24;
}
printf("%s",plain);
}
int main(){
char *a=(char*)malloc(sizeof(char)*200);
char b[200];
scanf("%s",a);
decrypt(a,b);
}
1175.矩阵转置
#include<stdio.h> //矩阵转置
#include<stdlib.h>
int main(){
int m,n,i,j;
scanf("%d%d",&m,&n);
int *a=(int*)malloc(sizeof(int)*m*n);
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i*n+j]);
}
}
for(j=0;j<n;j++){
for(i=0;i<m;i++){
printf("%d ",a[i*n+j]);
}printf("\n");
}
}
1176.查找最大字符串
#include<stdio.h> //查找最大字符串
#include<string.h>
#include<stdlib.h>
void find(char*name[],int n,int *p){
int i=0;
*p=0;
for(i=0;i<n;i++){
if(strcmp(name[*p],name[i])<0){
*p=i;
}
}
}
int main(){
int *p=NULL,max;
char a[10],*name[100];
int i=0,j;
while(gets(a)){
if(strcmp(a,"*****")==0)
break;
name[i]=(char*)malloc(sizeof(char)*(strlen(a)+1));
strcpy(name[i],a);
i++;
}
p=&max; //不能省略
find(name,i,p);
printf("%s",name[*p]);
for(j=0;j<i;j++){
free(name[j]);
}
}