本次练习包括一维数组(含字符型数组)的相关知识,建议学习一维数组后做下面练习,如果可以独立完成下面习题的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;
}
C语言初学者简单语法综合练习
原创
©著作权归作者所有:来自51CTO博客作者袁春旭的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:C语言初学者简单语法小测
下一篇:C语言初学者画图练习
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C语言初学者简单语法小测
C语言初学者简单语法小测
C语言 初学者 测试题 -
C语言初学者画图练习
C语言初学者画图练习
C语言 初学者 画图练习 -
c语言初学者简单代码
本文是个人c语言初学者的一些代码,有错误请大佬指出,不参与任何用途
循环语句 c语言初学者 -
C语言初学者环境配置
本文介绍的是Notepad++(编辑器)与MinGW(工具集,包含gcc)结合.
环境变量 编码格式 默认编码 菜单栏 notepad++ -
C语言初学者的理解
初学者
C语言 -
MySQL小练习(仅适合初学者,非初学者勿进)
查询各位学生的学号、班级和姓名查询课程的全部信息查询数据库中有哪些专业班级查
mysql database sql 数据库 java -
学习c语言(鹏哥c语言)初学者
初学者c语言笔记①
局部变量 整型 全局变量 初学者笔记