本次练习包括一维数组(含字符型数组)的相关知识,建议学习一维数组后做下面练习,如果可以独立完成下面习题的80%,证明你已经比较熟练的掌握相关语法,可以向函数及指针部分进军了,如果没能顺利完成,请参看相关程序,参考程序系本人所写,难免有纰漏之处,有任何疑问敬请留言。

题目目录如下:

登录验证
用户邮箱格式验证
判断平年/闰年
自定义金字塔
计算器
冒泡法排序

1、登录验证
要求:模拟用户登录过程,验证用户名、密码和校验码,如果全部正确提示用户登录成功,否则,提示用户相关输入错误。
目的:掌握登录校验的规则和原理。

2、用户邮箱格式验证
要求:用户输入邮箱,验证邮箱格式是否正确(验证用户输入的邮箱地址中是否含有字符'@')。
目的:掌握邮箱验证控件的原理和方法。

3、判断平年/闰年
要求:用户输入年份之后,判断输入的是平年还是闰年。
目的:掌握if判断的方法。

4、自定义金字塔
要求:打印以下图形。
图形一
*
**
***
****
*****
图形二
*******
*****
***
*

5、计算器
要求:可以完成加、减、乘、除和取余的计算。
目的:灵活掌握switch分支。

6、冒泡法排序
要求:输入六个学生成绩,然后排序。
目的:掌握排序的基本方法,熟悉数组。

参考程序:

1、登录验证

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char username[20];
    char password[20];
    char checkCode[5];

printf("请输入用户名:");
    scanf("%s", username);
    printf("请输入密码:");
    scanf("%s", password);
    printf("请输入验证码:(1234)");
    scanf("%s", checkCode);

if(!strcmp(checkCode, "1234"))
    {
        if(!strcmp(username,"yuanchunxu")&&!strcmp(password, "123456"))
        {
            printf("成功登录!\n");
        }
        else
        {
            printf("用户名密码错误!\n");
        }
    }
    else
    {
        printf("验证码错误!\n");
    }

system("pause");
    return 0;
}

2、用户邮箱格式验证

方法一:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char email[20];
    int flag = 0;
    int i = 0;

printf("请输入邮箱地址:");

//scanf和gets之间的主要区别在于scanf把空格、制表符、回车等都当作默认的结束符,而gets之把回车当作默认的结束符。
    scanf("%s", email);
    //gets(email);

//逐一判断,比较,看有没有'@'符号
    for(i = 0; i < strlen(email); i++)
    {
        if('@' == email[i])
        {
            flag = 1;
            break;
            //system("pause");
            //return 0;
        }
    }

if(0 == flag)
    {
        printf("非法\n");
    }
    else
    {
        printf("合法\n");
    }

system("pause");
    return 0;
}

方法二:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char email[20];
    int flag = 0;  //标志位的方法,在很多程序中可用
    int i = 0;

printf("请输入邮箱地址:");
    //scanf("%s", email);
    gets(email);

while(email[i]!='\0')
    {
        if('@' == email[i])
        {
            //发现合法,设置标志位
            flag = 1;
            break;
        }
        i++;
    }

//检验标志位,并根据标志位的不同,做出不同的处理
    if(0 == flag)
    {
        printf("非法\n");
    }
    else
    {
        printf("合法\n");
    }

system("pause");
    return 0;
}

3、判断平年/闰年

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int year = 0;

printf("请输入一个年份:");
    scanf("%d", &year);

if(0 == year % 4)
    {
        if(0 == year % 100 )
        {
            if(0 == year % 400)
            {
                  printf("%d是闰年\n", year);
            }
            else
            {
                  printf("%d是平年\n", year);
            }
        }
        else
        {
             printf("%d是闰年\n", year);
        }
    }
    else
    {
        printf("%d是平年\n", year);
    }

system("pause");
    return 0;
}

4、自定义金字塔

图案一:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int i = 1;
    int j = 1;

//循环次数决定行数
    for(i = 0; i < 5; i++)
    {
       //循环次数决定列数
       for(j=0; j <= i; j++)
       {
           printf("*");
       }
       printf("\n");
    }

system("pause");
    return 0;
}

图案二:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int i = 0;
    int k = 0;

//循环次数决定行数
    for(i = 0; i < 4; i++)
    {
        //循环次数决定列数
        for(k = 0; k <= 7 - 2 * i; k++)
        {
            printf("*");
       
        }
        printf("\n");
    }
   
    system("pause");
    return 0;
}

5、计算器

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int num1 = 0;
    int num2 = 0;
    int result = 0;
    char opr;
    int flag=0;
   
    printf("input operator:");
    scanf("%c",&opr);
  
    //用户只有正确的输入程序才能够退出while循环,这种方法可以迫使用户按规定的法则输入
    do
    {
        printf("请输入两个数值:");
        flag = scanf("%d,%d", &num1,&num2);
        fflush(stdin);         //清空输入缓存
        //rewind(stdin);    //这是清空输入缓存的另一种有效的方法,原理不同,但效果一样
    }while(0 == flag);

switch(opr)
    {
    case '+':result=num1 + num2; break;
    case '-':result=num1 - num2; break;
    case '*':result=num1 * num2; break;
    case '/':
        if(0 == num2)
        {
            printf("除数不能为零\n");
            system("pause");
            return 0;
        }
        else
        {
            result=num1 / num2;
        }
        break;
    case '%':
        if(0 == num2)
        {
            printf("除数不能为零\n");
            system("pause");
            return 0;
        }
        else
        {
            result=num1 % num2;
        }
        break;
    default:printf("input wrong!");

}
    printf("%d%c%d=%d\n",num1,opr,num2,result);

system("pause");
    return 0;
}

6、冒泡法排序

#include <stdio.h>
#include <stdlib.h>
#define COUNT 6

int main(void)
{
    int score[COUNT] = {0};
    int i = 0;
    int k = 0;
    int flag = 0;

for(i = 0 ; i < COUNT ; i++)
    {
       //用户输入不合法就必须重新输入
        do
        {
           printf("当前输入第%d成绩", i);
       
           flag=scanf("%d", &score[i]);
           fflush(stdin);
        }while(0 == flag);
       
       
    }

//遍历数组排序前的所有元素
    for(i = 0 ; i < COUNT ; i++)
    {
        printf("score[%d] = %d\n", i, score[i]);
    }

//kernal
    //第一重循环是总共冒泡的次数
    //第二重循环是每次冒泡需要比较的次数
    for(i = 0 ; i < COUNT - 1 ; i++)
    {
        for(k = 0 ; k < COUNT - 1 - i ; k++)
        {
            if(score[k] < score[k + 1])
            {
                //swap  典型的交换程序
                int temp = 0;
                temp = score[k];
                score[k] = score[k+1];
                score[k+1] = temp;
            }
        }
    }

printf("\n------------------------------------\n");

//排序结束后,遍历数组中所有元素,有利于程序的对比
    for(i = 0 ; i < COUNT ; i++)
    {
        printf("score[%d] = %d\n", i, score[i]);
    }

system("pause");
    return 0;
}

转载于:https://blog.51cto.com/8413723/1716115

C语言初学者简单语法综合练习相关推荐

  1. R语言学习笔记【简单语法总结-上】

    简单语法总结[上]: R语言特征总览: 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许 ...

  2. FPGA笔记之verilog语言(基础语法篇)

    文章目录 FPGA笔记之verilog语言(基础语法篇) 1. verilog 的基础结构 1.1 verilog设计的基本单元--module 1.2 module的使用 1.3 I/O的说明 1. ...

  3. C语言学习—给学习C语言初学者的建议

    C语言是一门"古老"而又很有前途的计算机编程语言. 近十年来,它在编程语言排行榜(TIOBE)稳居前三.因此,C语言绝对是值得初学者学习的一门语言.笔者从事C语言教学十多年的经验来 ...

  4. perl语言入门第七版中文_python和c语言哪个简单

    python相较C语言入门要简单的多. C语言是一门面向过程.抽象化的通用程序设计语言,广泛应用于底层开发.C语言能以简易的方式编译.处理低级存储器. C语言是仅产生少量的机器语言以及不需要任何运行环 ...

  5. 【软件开发】Java语言的简单介绍

    Java语言的简单介绍 一.Java语言的介绍 二.Java的版本 三.JDK的介绍 四.Java API文档 五.Java语言的特点 1. 面向对象 2. 解释性 3. 多线程 4. 可移植性 / ...

  6. c语言出现了语法错误能编译吗,如何调试C程序的语法错误和逻辑错误

    如何调试C程序的语法错误和逻辑错误 语法错误] 语法错误,这是C语言初学者出现最多的错误,比如,分号":"是每个C语句的结束的标志,在C语句后忘记写":"就是语 ...

  7. C语言初学者如何做出美观的图形界面(附源码及完整文件)

    主要面向想做出图形界面的C语言初学者 C语言初学者开始都是在黑白控制台上开发一些小程序,实现一些小功能,因为基础的C语言可视化效果比较差,所展示的都是黑白的字符和数字,比较单调乏味.一些大学的计算机类 ...

  8. 五十分钟带你看遍C语言初阶语法(总纲)

    C语言初阶语法(总纲) 此篇博客包含了前面C语言所有的基础语法,写这一期的博客不仅是为了记录自己的学习成果也是为了让更多的朋友能学到对自己有用的知识,如果总有一个知识点帮助到了你,给卑微博主点点关注加 ...

  9. Golang语言快速上手到综合实战(Go语言、Beego框架、高并发聊天室、豆瓣电影爬虫) 下载

    下载Golang语言快速上手到综合实战(Go语言.Beego框架.高并发聊天室.豆瓣电影爬虫) 下载地址:请加QQ:397245854 Go是Google开发的一种编译型,可并行化,并具有垃圾回收功能 ...

最新文章

  1. 2020 年 11 月程序员工资统计,Java 市场占有率仍第一
  2. vs2013在使用ef6时,创建模型向导过程中,四种模型方式缺少2种
  3. 多种方法教你破解电信共享上网的限制
  4. 点击延迟_解决移动端浏览器点击延迟300ms的问题——FastClick用法
  5. Spring4中的@Value的使用(学习笔记)
  6. docker harbor 域名_docker registry harbor
  7. 深入理解Linux内存映射机制
  8. SpringBoot执行流程
  9. 十一.激光惯导LIO-SLAM框架学习之LIO-SAM框架---框架介绍和运行演示
  10. Opencv+Python:drawContours函数
  11. Idea 集成Lombok插件
  12. 在阿里云上安装MongoDB,并且远程连接
  13. 在安全防火墙内通过 WebHook 触发构建
  14. c语言实数的输出和占位_C语言输出格式总结
  15. C++ WinHTTP实现文件下载
  16. 无源蜂鸣器c语言编程,无源蜂鸣器题目
  17. 个人信息安全规范----6、个人信息的委托处理、共享、转让、公开披露
  18. python icon生成小工具
  19. c++小游戏大全(不定时更新)
  20. python多久可以完全学会_python好学吗自学要学多久

热门文章

  1. wmic 命令的一个汇总,功能很强大
  2. 一些知识点的初步理解_4(协方差矩阵,ing...)
  3. Apache Hadoop 2.7如何支持读写OSS
  4. java11 新特性 详解
  5. 迁移 Nexus 软件仓库拾遗
  6. RN中布局样式的写法
  7. BeanShell增强的FOR循环
  8. FAST:基于FPGA的SDN交换机开源项目
  9. 《Cucumber:行为驱动开发指南》——2.3 创建步骤定义
  10. S5700三层交换机 复杂网络环境设置默认路优先级实战