目录
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;
}