您的位置:首页 > 产品设计 > UI/UE

my self-examination about Miss.Yu's question(2017-1-(24-25))

2017-01-24 21:11 393 查看
1,牢记在C语言输入输出时,double对应的是lf,float对应的是f。

2,牢记很多函数比如pow之类的形参都是double,如果定义实参为整型,运算结果会出错。

3,对于三目运算符a?b:c;输出时不能写cout<<a?b:c<<endl;也不能写cout<<a?b<<endl:c<<endl.(具体常用函数见收藏)。

4:对于成绩转换题目:输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:

90~100为A;

80~89为B;

70~79为C;

60~69为D;

0~59为E;

应记住if和else if编译过程是先审查if,if条件过了,则else if的条件就默认带了if的对立事件条件,所以if条件的语法顺序很重要。

5,注意在scanf中,scanf(“%d”,&a【i】(或a+i)),不能直接写scanf(“%d”,a【i】)

6,给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。

     对于这种题,要考虑输入的两个数是否是第二个大于第一个,要学会swap两个数。

7,当遇到输入0结束的题目时,注意:

scanf()函数返回的值为:正确按指定格式输入变量的个数;
也即能正确接收到值的变量个数。

while(scanf("%d",&n)!=0) 输入0后还能继续输入

while(scanf("%d",&n),n)输入0后不能继续输入

scanf函数返回的是输入值的个数,
(1)中输入0后返回的是1(因为1个值)肯定不和0相等了,
因此可以继续向下执行,
(2)中时逗号表达式,不管你scanf语句是什么结果,
最后while判读的是后面的n值,
你输入0,结果当然是while语句不成立了!


8.注意在C++中,定义char a【100】;cin>>a ;n=strlen(a);如果输入中带着空格,比如“

ff  ai_2”,则n = 2;
要想把两个空格记录到字符数组中,需要用gets函数。
即如果char a【100】;gets(a); n=strlen(a);
则n = 8.


9.注意有用的算法:

isalpha

一种函数:判断字符ch是否为英文字母,

若为英文字母,返回非0(小写字母为2,大写字母为1)。

若不是字母,返回0。

在标准c中相当于使用“ isupper( ch ) || islower( ch ) ”做测试,


isupper
原型:extern int isupper(int c);
头文件:<cctype>(旧版本的编译器使用<ctype.h>)
功能:判断字符c是否为大写英文字母
说明:当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。
附加说明: 此为宏定义,非真正函数。
islower
islower(测试字符是否为小写字母)
相关函数
isalpha,isupper
表头文件
#include<cctype>(旧版本的编译器使用<ctype.h>)
定义函数
int islower(int c)
函数说明
检查参数c是否为小写英文字母。
返回值
若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。
附加说明:此为宏定义,非真正函数。

isalnum

判断字符变量c是否为字母或数字,若是则返回非零,否则返回零。

10.
Input输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。

Output对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。

Sample Input
3
12ajf
fi8x_a
ff  ai_2

Sample Output
no
yes
no


我的代码:
#include<iostream>

#include<stdio.h>

#include<algorithm>

#include<cmath>

#include<iomanip>

#include<string.h>

using namespace std;

int main()

{

    int n,i;

    char r[100];

    scanf("%d", &n);

    getchar();//如果没有这个getchar,后面的gets会把回车读进去,产生错误,getchar先把回车读了,就不会产生错误。

    while(n--)

    {

        int num;

        gets(r);

        num = strlen(r);

         if (r[0] >= '0' && r[0] <= '9')

            {

                cout<<"no"<<endl;

                continue;

            }

        for (i = 0; i < num; i++)

        {

             if (((r[i] >= 'A' && r[i] <= 'Z')||(r[i] >= 'a' && r[i] <= 'z')||(r[i] >= '0' && r[i] <= '9'))||r[i] == '_')

                continue;

                else

                break;

        }

        if (i == num)

            cout<<"yes"<<endl;

        else cout<<"no"<<endl;

    }

    return 0;

}

注意getchar的用法!!!!

gets函数调用时,如果之前有输入变量的值,要注意用一个getchar()来消去回车。

否则 像代码#include<iostream>

#include<cstring>

#include<cctype>

#include<stdio.h>

using namespace std;

int main()

{

    char r[100];

   int a,b[100];

   scanf("%d",&a);

       while (a--)

       {

           gets(r);

           puts(r);

       }

    return 0;

}

就会多读入一个回车。

多输出一个回车。

10.
strupr ()
  原型:extern char *strupr(char *s);
  用法:#include <string.h>
  功能:将字符串s转换为大写形式
  说明:只转换s中出现的小写字母,不改变其它字符。返回指向s的指针。

strlwr ()
  原型:extern char *strlwr(char *s);
  用法:#include <string.h>   
 功能:将字符串s转换为小写形式   
 说明:只转换s中出现的大写字母,不改变其它字符。返回指向s的指针。
注意事项:在Linux的编译器中,有可能会编译不通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: