输入输出格式类题(C语言)

原创

格式控制不足位前补0

#include<stdio.h>

int main()

{

    char c;

    int t=0;

    int flag=0;

    int p;

    for(p=0;p<3;p++)

    {

        c=getchar();

        if(flag)printf("\n");

  int i=c;

      int j=i;

      while(j)

      {

          j/=10;

          t++;

      }

      switch(t)

      {

      case(3):{printf("%d ",i);break;}

      case(2):{printf("0%d ",i);break;}

      case(1):{printf("00%d ",i);}

}

j=i;

t=0;

while(j)

      {

          j/=8;

          t++;

      }

      switch(t)

      {

      case(3):{printf("%o ",i);break;}

      case(2):{printf("0%o ",i);break;}

      case(1):{printf("00%o ",i);}

}

j=i;

t=0;

while(j)

      {

          j/=16;

          t++;

      }

      switch(t)

      {

      case(3):{printf("%x",i);break;}

      case(2):{printf("0%x",i);break;}

      case(1):{printf("00%x",i);}

}

t=0;

flag=1;

    }

}

菜鸡做法,因为不知道。

#include<stdio.h>

int main()

{

    char a,b,c;

    scanf("%c%c%c",&a,&b,&c);

    printf("%.3d %.3o %.3x\n",a,a,a);

    printf("%.3d %.3o %.3x\n",b,b,b);

    printf("%.3d %.3o %.3x\n",c,c,c);

}

想输出o和x直接输出即可。.3和%03意义相同。

第一次作业G题

scanf("%d")会自动识别整数,并且不会记录无意义的0,getchar将字符吃入。

#include<stdio.h>

    int main()

    {

    int i,j,k;

    getchar();

    scanf("%d",&i);

    getchar();

    scanf("%d",&j);

    getchar();

    scanf("%d",&k);

    printf("0086%d%d%d",i,j,k);

}

第二次实验很多都是输入输出,因为没看清题错的很惨

输出为这k个整数的平均值,保留3位小数。这种输出所除的数分母一定是变量啊。

不区分大小写的情况:

作业3 problem j

在键盘按下Y键时或者按下什么键时都是不区分大小写的。

或者是元音字母这种题(实验3 problem D)作业5 作业五 problem E,判断元音,同样不区分大小写 。

定义字符串可以用int a[]={枚举}//看枚举类型。

//对数字分解的再运算不一定要用数组储存

输出后两位,完全可以用%100的方法。

水仙花数

#include<stdio.h>

int is_daffodil(int n)

{

    int i=n,j=0;

int a[3];

    while(n)

    {

        a[j++]=n%10;

        n/=10;

    }

    int ans=a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2];

    if(ans==i&&j==3)return 1;

    else return 0;

}





int main()

{

    intn;

    scanf("%d", &n);

    printf("%s",

           ( is_daffodil(n) ? "Yes, it is a daffodil."

                            : "No, it is not a daffodil.")

          );

    return0;

}

K题一共多少天,C语言无算法只是考察逻辑能力的。再次验证题不会出错,只会是自己没想到。

如果这个人没有18岁生日就输出-1.

#include<stdio.h>

int ifrun(int n)

{

    if((n%400==0)||((n%4==0)&&n%100!=0))return 1;

    else

        return 0;

}

int main()

{

    int n,i,year,month,day,t,y;

    scanf("%d",&n);

    for(i=1;i<=n;i++)

    {

        scanf("%d-%d-%d",&year,&month,&day);

        if(month==2&&day==29)

        {

            printf("-1\n");

        }

        else

        {

            t=0;

            if(month>=3)

                for(y=year+1;y<=year+18;y++)

                {

                    if(ifrun(y))

                    {

                        t=t+366;

                    }

                    else

                    {

                        t=t+365;

                    }

                }

            }

            else if(month<=2)

            {

                for(y=year;y<=year+17;y++)

                {

                    if(ifrun(y))

                    {

                        t=t+366;

                    }

                    else

                    {

                        t=t+365;

                    }

                }

            }

            printf("%d\n",t);

        }

    }

}

18岁生日代表着过了18周年,如果生日是2月29日,那么没有18周岁生日。

作业六 求最大公约数和最小公倍数

其中辗转相除法

int  gcd(int a,int b)

{

    if(b==0)return a;

    else

        return gcd(b,a%b);

}

浮点型转化成整数,实现floor函数和ceil函数

#include<stdio.h>



int myFloor(double data)

{

int i;

i=(int)data;

if(data>=0)

{





return i;

}

else

{

if(i==data)return i;

    return i-1;

}

}

int myCeil(double data)

{

 int i;

 i=(int)data;

if(data>0)

{



if(i==data)return i;

return i+1;

}

else

    return i;

}

期末模拟转化大小写

#include<stdio.h>

#include<ctype.h>

char cnvchar(char c)

{

    char aa=c;

    if(aa>='a'&&aa<='z')

    {

        c=toupper(c);

    }

    if(aa>='A'&&aa<='Z')

    {

        c=tolower(c);

    }

      return c;

}

注意同一变量的变化。

输出精度问题之内存转换

#include<stdio.h>

int main()

{

  unsigned long long int n;

  double k;

  double m,g;

  scanf("%llu",&n);

  k=n/1024.0;

    printf("%lluK\n",(unsigned long long int)k);

  m=k/1024.0;

  printf("%.2lfM\n",m);

  g=m/1024;

  printf("%.2lfG\n",g);

}

斐波那契数列非递归求法。


int a=1,b=1,tmp;

int n;

scanf("%d",&n);

n=n-2;

while(n--)

{

    tmp=a+b;

    a=b;

    b=tmp;

}

阶乘

int jie(int n)

{

if(n==1)return 1;

else

return n*jie(n-1);

}

组合数

#include<stdio.h>

int zuheshu(int n,int k)

{

    if(n<k)return 0;

    if(k==0)return 1;

    if(n==0)return 0;

    else

        return zuheshu(n-1,k-1)+zuheshu(n-1,k);

}

转化进制问题,尤其是16进制和8进制2进制这样的关系,可以使用单个数转化。

#include<stdio.h>

#include<ctype.h>

#include<string.h>

#include<stdlib.h>

int main()

{

    char a[110];

    int i,num;

    while(gets(a)!=NULL){

        for(i=0;i<strlen(a);i++)

        {

            if(isdigit(a[i]))

            {

                num=a[i]-'0';

            }

            if(isalpha(a[i]))

            {

                num=a[i]-'A'+10;

            }

            int c[10]={0},k=0;

            while(num>=1)

            {

                c[k++]=num%2;

                num/=2;

            }

            printf("%d%d%d%d",c[3],c[2],c[1],c[0]);

        }

        putchar('\n');

    }

    return 0;

}

矩阵行和列的对换

交换就用辅助变量

int t=a

a=b;

b=t;

正负下标可以在n%MAX*-1;

数组的下标不会拓展,题没看懂

递归判断是否回文

int IsPalindereme(char* str, size_t size)

{

if (size <= 1)

return true;

if (str[0] != str[size - 1])

return false;

return IsPalindereme(++str, size - 2);//在下标为0的基础上减1.

}

几分几点。模拟表的走动。

#include <stdio.h>

#include <stdlib.h>

int main()

{

    int n,a,b,c,i;

    while(scanf("%d",&n)!=EOF)

    {

        if(n==0)

            break;

        else

        {

            a=0,b=0,c=0;

            for(i=n;i>1;i--)

            {

                a++;

                if(a==60)

                {

                    a=0;

                    b++;

                }

                if(b==60)

                {

                    b=0;

                    c++;

                }



            }

            printf("%0.2d:%0.2d:%0.2d\n",c,b,a);

        }

    }

    return 0;

}

字符串结束的标志,必须要以'\0'结尾。

注意gets函数和scanf("%s")函数把'\n'转化成了'\0'.

不用接续输入

查询字符串。

#include<stdio.h>

#include<ctype.h>

#include<string.h>

char a[1000][110];

char b[110];

int main()

{

    int n,i,j,k;

    scanf("%d",&n);

    for(i=0;i<n;i++){

        scanf("%s",a[i]);

    }

    while(scanf("%s",b)!=EOF){

        int flag=0;

        for(i=0;i<n;i++){

            if(!strcmp(a[i],b)){

                flag=1;

                printf("Yes\n");

                break;

            }

        }

        if(flag==0)printf("No\n");

    }

}

满足相等就为0.按字典序排序

空串判断方法:a[0]=='\0'

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

素数写法

int zhishu(int n)

{

    int i;

    if(n==2)return 1;

    if(n==1||n%2==0)return 0;

    for(i=2;i<=sqrt(n);i++){

        if(n%i==0)return 0;

    }

    return 1;

}

遇到那种姓名带着数字属性的,就使用结构体。

无符号的可以使用环形判断溢出。

连分式不会

熟练pow函数x^ypow(x,y);

#include<stdio.h>

typedef enum

{

    diamond, // 方块

    club, // 梅花

    spade, // 黑桃

    heart // 红桃

} Cards; // 扑克牌的四种花色

typedef struct

{

    int type; // 花色

    int point; // 点数

} Poker;

int get_card(Poker *pk)

{

    scanf("%c",&pk->type);

    scanf("%d",&pk->point);

}

int card_cmp(Poker p1, Poker p2)

{

    if(p1.point>p2.point)return 1;

    if(p1.point<p2.point)return -1;

    if(p1.point==p2.point){

        if(p1.type>p2.type)return 1;

        else if(p1.type<p2.type)return -1;

        else return 0;

    }

}

int main()

{

    Poker tom, jack;

    get_card(&tom);

    get_card(&jack);

    int result = card_cmp(tom, jack);

    if(result > 0)

        puts("Tom wins.");

结构体表示数组

typedef struct

{

    int length;

    int array[MAX_SIZE];

}ARR_TYPE;

int input_arr(ARR_TYPE *arr){

    int N,i;

    scanf("%d",&N);

    for(i=0;i<N;i++){

        scanf("%d",&arr->array[i]);

    }

    arr->length=N;

}

    if(result < 0)

        puts("Jack wins.");

    if(result == 0)

        puts("Tie.");

}

释放空间

void release(double *p)

{

    free(p);

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容