数组和字符串(分数统计_stat,单词的长度,乘积的末3位,计算器,旋转_rotate,进制转换1_base1,进制转换2_base2,手机键盘)

本文主要是介绍数组和字符串(分数统计_stat,单词的长度,乘积的末3位,计算器,旋转_rotate,进制转换1_base1,进制转换2_base2,手机键盘),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于C语言字符串
  • 别人家的整理
  • scanf和gets的区别
字符串输入的方法
  • scanf(“%s”,in_buff);
  • gets(in_buff);
  • fgets(in_buff,BUFFER_SIZE + 1,stdin);

1.当使用scanf函数时,如果在数组范围内有空格,那么第一个空格之后的字符将被忽略,这通常不是我们想要的。另外,scanf函数也不提供对写入数组的数据是否越界的检查。
2.当使用gets函数时,由于gets不提供对写入数组的数据进行是否越界的检查,所以也不安全。
3.而使用fgets函数时,只要第二个参数正好等于第一个参数传给它的数组的字节个数,那么fgets函数不会写出数组边界。所以,fgets函数是最好的选择.

1 分数统计_stat

好像这个办法很笨,不知道有没有好主意==
疑问:当分数为非负实数时(保留两位小数)。嗯,乘以100..==
int main() {int a[101]={0};int i=0,u,max;while(scanf("%.2f",&u)!=EOF){a[u]++;}for(i=0;i<100;i++){if(a[i]>max) max=a[i];}
//输出分数出现次数最多的,如果有多个并列,从小到大输出。for(i=0;i<100;i++){if(a[i]==max) printf("%d\n",i);}return 0;
}
输入:
12 34 56 78 89 12 12 12 34 34 34
输出:
12
34

2 单词的长度

输入一些单词,统计单词的平均长度
#include <stdio.h>
#include<string.h>
#include<ctype.h>
int main() {char s[1000],buf[1000];int sum=0,count=0,i;fgets(buf,sizeof(s),stdin);//从后往前,因为你不知道最后一个是什么时候截止for(i=strlen(buf)-1;i>0;i--){if(buf[i]==' ') count++;else sum++;}printf("%lf\n",(double)sum/count);return 0;
}
//i am best one
输入输出:

输入输出

3 乘积的末3位——product(借鉴)

输入若干个整数,输出他们的成绩的末三位(取余),其中有干扰的字符串
break是结束整个循环体,continue是结束单次循环
一直没搞懂题目是要怎么输入的,认真看“输入若干个“,肯定不是要输入一个字符串,这样就可以使用while!=EOF来循环输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100
#define MOD 1000
char a[MAXN];
int main()
{int i, n;long d= 0, sum= 1;while(scanf("%s", a)!=EOF){n = strlen(a);for(i = 0; i < n; i++){if(a[i] >= 'A' && a[i] <= 'Z') break;//一定要判断是怎么退出的continue;d=(d*10+a[i]-'0')%MOD;}if(a[i] >= 'A' && a[i] <= 'Z') continue;//如果是大写字母,就不用进行乘法sum=sum*d%MOD;d= 0;//这种计数用的,每次都要清零}printf("%3d\n",sum);system("PAUSE");return 0;}
假设输入:
12
H
12
HU
12
输出:
728

4 计算器

编写程序,读入一行恰好包含一个加号、减号或乘号的表达式,输出它的值。这个运算符保证是二元运算符,且两个数均为不超过100的非负整数。运算数和运算符可以紧挨着,也可以用一个或多个空格、TAB隔开。行首末尾均可以有空格。提示:选择合适的输入方法可以将问题简化。
一直想着一步到位的,最后发现没有用。分成两部分反而更好处理,以运算符号为中心分成两个部分计算。
 #include <stdio.h>
#include<string.h>
char buf[1010];
int main() {int m=0,n=0,i,l;int middle;while(fgets(buf,sizeof(buf),stdin)){l=strlen(buf);for(i=0;i<l-1;i++){if(buf[i]=='+'||buf[i]=='-'||buf[i]=='*')middle=i;}for(i=0;i<middle;i++){if(buf[i]==' ') continue;m=m*10+buf[i]-'0';}for(i=middle+1;i<l-1;i++){if(buf[i]==' ') continue;n=n*10+buf[i]-'0';}//  if(buf[i]==' ') continue;//  d=d*10+buf[i]-'0';//   if(buf[i]=='+') {sign=1;m=d;d=0;}//   else if(buf[i]=='-'){sign=-1;m=d;d=0;}//   else if(buf[i]=='*'){sign=0;m=d;d=0;}switch(buf[middle]){case '+':printf("%d\n", m+n);break;case '-':printf("%d\n", m-n);break;case '*':printf("%d\n", m*n);break;}m = 0;n = 0;}return 0;
}
输入:
1+1
2-     5
0   *1982
输出:
2
-3
0

5 旋转_rotate

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
char a[1010][1010],s[1001][1010];
int main() {int i,j,n;scanf("%d",&n);getchar();char temp;
/*   for(i = 0; i < n; i++)scanf("%s", a[i]);*/for(i=0;i<n;i++){for(j=0;j<n;j++)scanf("%c",&a[i][j]);getchar();}
/*  for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%c ",a[i][j]);printf("\n");}*/for(i=0;i<n;i++){for(j=0;j<n;j++){s[i][j]=a[j][n-i-1];printf("%c",s[i][j]);}printf("\n");}return 0;
}
输入:
3
123
456
789
输出:
3
1 2 3
4 5 6
7 8 9

各种旋转

int main(){int a[5][6]={1,3,4,2,5,2,2,3,6,3,8,3,2,9,7,9,4,8,6,3,8,1,9,3,9,3,5,2,8,5,};int s90[6][5],ni90[6][5],x180[5][6];int i,j;printf("顺时针旋转90度矩阵为:\n");for(i=0;i<6;i++){for(j=0;j<5;j++){s90[i][j]=a[4-j][i];printf("%2d%",s90[i][j]);}printf("\n");}printf("逆时针旋转90度矩阵为:\n");for(i=0;i<6;i++){for(j=0;j<5;j++){ni90[i][j]=a[j][5-i];printf("%2d%",ni90[i][j]);}printf("\n");}printf("旋转180度矩阵为:\n");for(i=0;i<5;i++){for(j=0;j<6;j++){x180[i][j]=a[4-i][5-j];printf("%2d%",x180[i][j]);}printf("\n");}
}

6 进制转换1_base1

#include <stdio.h>
int a[100];
int main() {int i=0,b,n;scanf("%d%d",&b,&n);while(n>0){a[i]=n%b;n=n/b;printf("%d",a[i++]);}return 0;
}
输入:
2 15
输出:
1111

7 进制转换2_base2

#include <stdio.h>
int main() {int n,b,k=1;int s=0;scanf("%d%d",&b,&n);while(n>0){s+=n%10*k;k=k*b;n=n/10;}printf("%d",s);return 0;
}
输入:
2 1111
输出:
15

8 手机键盘——keyboard

需要注意限制范围,当输入‘z’时候特殊处理,当输入‘a’到‘y’时取余,没有限制的话会出现又输出个1。原因可能是最后一个输入换行为一个字符’\0’,取余之后为0。
#include <stdio.h>
#include<string.h>
int main() {char a[100];int i=0,k;while(scanf("%c",&a[i])!=EOF){if(a[i]=='z'){printf("%c",a[i]);printf("4");}else if(a[i]>='a'&&a[i]<'z'){k=(a[i]-'a')%3;switch(k){case 0:{printf("%c",a[i]);printf("1");break;}case 1:{printf("%c",a[i]);printf("2");break;}case 2:{printf("%c",a[i]);printf("3");break;}}
/*          if(k==0){printf("%c",a[i]);printf("1");continue;}if(k==1){printf("%c",a[i]);printf("2");continue;}if(k==2){printf("%c",a[i]);printf("3");continue;}*/}i++;}return 0;
}
输入:
pig
输出:
p1i3g1
九宫格输入法示意图:

九宫格

这篇关于数组和字符串(分数统计_stat,单词的长度,乘积的末3位,计算器,旋转_rotate,进制转换1_base1,进制转换2_base2,手机键盘)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/379978

相关文章

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript