2019.07.16

关于c语言数据类型的相关知识
#define作用是避免幻数
宏定义只做简单的字符替换,不做运算,不做语法检查
对宏体里的形参要加括号,宏体也要加括号,避免引起歧义

switch语句中,default可以放在任意位置,但执行顺序还是在最后,一般default什么事也不做时,也要写出来,保证完整性。

今天写的一些代码
1.
:查找最小的k个元素(笔试题)
输入n个整数,输出其中最小的k个。
例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4

#include <stdio.h>
#define NUMBER 999

int main()
{
    int i,j;
    int n;/*n个值*/
    int k;/*k个数*/
    int a[NUMBER];
    int min;
    printf("输入的元素个数为:");
    scanf("%d",&n);
    printf("取最小值的个数为:");
    scanf("%d",&k);
    for(i=0;i<n;i++)
    {
        printf("a[%d]:",i);
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        for(j=n-1;j>0;j--)
        {
            if(a[j]<a[j-1])
            {
                int tmp=a[j];
                a[j]=a[j-1];
                a[j-1]=tmp;    
            }
        }
    }
    for(i=0;i<k;i++)
        printf("最小的%d个数为:%d\n",k,a[i]);

  
    return 0;
}

2.输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。(笔试题)
句子中单词以空格符隔开。为简单起见,没有标点符号。
例如输入“I am a student”,则输出“student a am I”

#include <stdio.h>

int main()
{
    char str[]="i am a student";
    char *p;
    int sum=0;
    int j=0;
    int x=0;
    int k;
    int i;
    p=str;
    while('\0'!=*p)
    {
        sum++;
        p++;
    }
    char str1[sum];
    p=str;
    for(i=sum-1;i>=0;i--)
    {
        if((' '==str[i]) || (0==i))
        {
            if(i==0)
                --i;
            for(k=i+1;k<sum-x;k++)
            {
                str1[j]=str[k];
                printf("%c",str1[j]);
                j++;
            }
            x=j;
            printf(" ");
        }
    }
    printf("\n");
    return 0;
}

  1. 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
    提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧
#include <stdio.h>

int main()
{
    char *str[] = {"head","tail"};
    char p[100];
    printf("请输入一串字符:");
    fgets(p,100,stdin);
    int i = 0;
    int j = 0;
    int index = 0; /*i的下标*/
    char *p1 = p;
    int m = 0;
    int flag = 0,s = 0;
    for(;i<100;i++)
    {
        while(j<4)
        {
            if(p[i] == str[m][j])
            {
                flag = 1;
                s = m;
                i++;
                j++;
            }
            else
            {
                s = 0;
                flag = 0;
                break;
            }
        }
        if(s == 1 && flag == 1)
        {
            p[i] = '\0';
            break;
        }
        if(flag == 1 && m == 0)
        {
            p1 = &p[i-j];
            m = m+1;
            j=0;
        }
    }
        printf("%s\n",p1);
        return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值