c语言验证其正确排序,C语言初学者简单语法综合练习

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

题目目录如下:

登录验证

用户邮箱格式验证

判断平年/闰年

自定义金字塔

计算器

冒泡法排序

1、登录验证

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

目的:掌握登录校验的规则和原理。

2、用户邮箱格式验证

要求:用户输入邮箱,验证邮箱格式是否正确(验证用户输入的邮箱地址中是否含有字符'@')。

目的:掌握邮箱验证控件的原理和方法。

3、判断平年/闰年

要求:用户输入年份之后,判断输入的是平年还是闰年。

目的:掌握if判断的方法。

4、自定义金字塔

要求:打印以下图形。

图形一

*

**

***

****

*****

图形二

*******

*****

***

*

5、计算器

要求:可以完成加、减、乘、除和取余的计算。

目的:灵活掌握switch分支。

6、冒泡法排序

要求:输入六个学生成绩,然后排序。

目的:掌握排序的基本方法,熟悉数组。

参考程序:

1、登录验证

#include

#include

#include

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

#include

#include

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

#include

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

#include

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

#include

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

#include

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

#include

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

#include

#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;

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值