zzulioj(1131~1140)

目录

1131最常用字符

1132数字字符统计

1133单词个数统计

1134字符串转换

1135算菜价

1136首字母变大写

1137查找最大元素

1138c语言合法标识符      

1139输出最短字符串

1140小数点后n位多实例


1131最常用字符

#include <stdio.h>
#include <string.h>

//大小写转换,统计各个小写字母出现次数,用max寻找次数最多的字母 
int main()
{
	int i,n,s[26]={0};
	char x,str[101];
	int max=-1;
	gets(str);//输入str
	n=strlen(str);//计算str长度 
	for(i=0;i<n;i++){//全部转换为小写字母 
		if(str[i]>='A'&&str[i]<='Z'){
//			str[i]=tolower(str[i]);
			str[i]=(char)str[i]+32; 
		} 
	} 
	//循环遍历,对各个字母出现次数进行计数
	for(i=0;i<n;i++){
		if(str[i]>='a'&&str[i]<='z'){
			s[str[i]-'a']++;//-a,将字符转换成数字位数 
		}
	}
	for(i=0;i<26;i++){
		if(s[i]>max){
			max=s[i];
			x=i+'a';
		}
	}
	printf("%c",x);
	
	return 0;
}

1132数字字符统计

处理一个 输出一个

#include <stdio.h>
#include <string.h>
int main()
{
	int i,n,x,c;
	char a[1001];
	scanf("%d",&n);
	while(n--);
	{
		c=0;
		scanf("%s",a);
		x=strlen(a);
		for(i=0;i<x;i++){
			if(a[i]>='0'&&a[i]<='9'){
				c++;
			}
		}
		printf("%d\n",c);
	}
	return 0;
}

1133单词个数统计

#include <stdio.h>
#include <string.h>

int main(){
	int i,n,sum=0;
	char str[1001];
	gets(str);//不能用scanf 遇到空格会停止输入
	
	for(i=0;str[i]!='\0';i++){//循环遍历 
		if(str[i]!=' '&&str[i+1]==' '){//该位置不为空格,但是后一个为空格 
			sum++;//计数加一 
		} 
	} 
	n=strlen(str);//字符串 有几个字符 
	if(str[n-1]!=' '){//最后一个字符不是空格 则加一 
		sum++;
	} 
	printf("%d",sum);
	return 0; 
}

1134字符串转换

此版本 提交上去答案错误 

#include <stdio.h>
#include <string.h>
/*
	因为ASC码48就是'0',也就是说'0'的值是48,而后依次是'1'到'9'。
	这样正好是char型减去48就是它对应的int值
	不过这样写不好理解,直接写成str[i]-'0'就好。
*/
int main(){
	int i,m,sum=0,t=0,a[1001];
	int x=1;
	char str[1001];
	gets(str);//不能用scanf 遇到空格会停止输入
	m=strlen(str);//字符串 有几个字符 
	for(i=0;i<m;i++){//循环遍历 
		if(str[i]>='0'&&str[i]<='9'){//该位置不为空格,但是后一个为空格 
			a[t]=str[i]-48;
			t++;//得到数字有几个 
		} 
	} 
	for(i=0;i<t;i++){//算位数 7位 即1000000 
		x=x*10;
	}
	for(i=0;i<t;i++){
		sum=sum+a[i]*x;
		x=x/10;
		
	}
	sum=sum/10*2;
	printf("%d",sum);
	return 0; 
}

正确代码如下

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n=0,t=0,m,a[100],j;
    char str[100];
    gets(str);
    m=strlen(str);
    for(i=0;i<m;i++)
    {
        if(str[i]>='0'&&str[i]<='9')
        {
            a[t]=str[i]-48;
            t++;
        }
    }
    for(i=0;i<t;i++)
    {
        j=a[i];
        n+=j;
        n*=10;
    }
    n=n/10*2;
    printf("%d",n);
    return 0;
}

1135算菜价

#include <stdio.h>
int main()
{
	//使用%*s,跳过读取前面的字符串
    double w,p,sum=0;//数量w,单价p 
    while(scanf("%*s %lf %lf", &w, &p)!=EOF)
    {
        sum=sum+w*p;
    }
    printf("%.1f\n", sum);
    return 0;
 
}

1136首字母变大写

#include<stdio.h>
#include<string.h>
int main(){
    char a[100];
    int i;
    gets(a);
    int len = strlen(a);
    for (i = 0; i < len - 1; i++){
        if (a[0] <= 'z'&&a[0] >= 'a')         //首字母
            a[0] = a[0] - 32;
        if (a[i] == ' '&&a[i + 1] >= 'a'&&a[i + 1] <= 'z')
            a[i + 1] = a[i + 1] - 32;
    }
    for (i = 0; i < len; i++)
        printf("%c", a[i]);
    return 0;
}
 

1137查找最大元素

#include <stdio.h>
#include <string.h>
#define N 201
int main()
{
	int i,n,max;
	char str[N];
	gets(str);
	n=strlen(str);
	max=str[0];
	for(i=0;i<n;i++){
 		if(str[i]>max){
 			max=str[i];
		}
	}
	for(i=0;i<n;i++){
		if(str[i]==max){
			printf("%c(max)",str[i]);
		}else{
			printf("%c",str[i]);
		}
	}
	
    return 0;
}

1138c语言合法标识符     

#include<stdio.h>
int main()
{
	char a[55];
	int i=0;
	gets(a);
	if(a[0]>='0' && a[0]<='9')//首元素不符合
			printf("no\n");
	else{
		while((a[i]=='_'||(a[i]>='0' && a[i]<='9')||(a[i]>='a' && a[i]<='z')||(a[i]>='A' && a[i]<='Z'))&&a[i]!='\0')
			i++;
		if(a[i]=='\0')
			printf("yes\n");
		else
			printf("no\n");
	}
	return 0;
}

1139输出最短字符串

#include<stdio.h>
#include<string.h>
#define N 1001
/*
	`gets`函数能够从标准输入流中读取一行文本,包括空格和制表符,
			直到遇到换行符为止。它将读取到的内容存储在指定的字符数组中,并自动删除换行符。
	`getchar`函数每次只读取一个字符,并返回这个字符的ASCII码值。
			如果需要读取多个字符,需要多次调用`getchar`。
*/
int main(){
	char a[N],b[N];
	int i,t,n;
	scanf("%d",&n);
	getchar(); //吸收回车符号
	gets(b);//先输入第一个 
	for(i=1;i<n;i++){
		gets(a);//输入下一个 
		if(strlen(b)>strlen(a)){
			strcpy(b,a);//a拷贝到b ,短的把长的覆盖 ,b在与下一次输入的字符串进行比较 
		}
	}
	puts(b);
	return 0;
}


1140小数点后n位多实例

#include<stdio.h>
#include<string.h>
#define N 101
int main(){
	int i,j,n,t,flag,dot;
	char str[N]; 
	scanf("%d",&n);//n组数据 
	for(i=0;i<n;i++){
		flag=0;
		scanf("%s %d",str,&t);
		for(j=0;str[j]!='\0';j++){
			if(str[j]=='.'){
				dot=j;//小数点所在位置 
				break;
			}
		}
		for(j=dot;str[j]!='\0';j++) {
			if(j==(dot+t))   //说明是小数点后第n位 
			{
				printf("%c\n",str[j]);
				flag=1;
				break;	
			}	
		}
		//考虑n比数的小数部分长的情况
		if(flag==0){
			printf("0\n");	
		}
	}
	
	return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值