C语言程序设计:用strcpy比较数组(银行卡密码程序设计),strcpy(复制数组内容)和getchar()(敲键盘字符,统计不想要的字符的个数)...

统计从键盘输入一行字符的个数:

 

 1 //用了getchar() 语句
 2 //这里的\n表示回车
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     int n = 0;
 6     printf("输入键盘上的字符\n");
 7     while (getchar() !='\n'){
 8         n++; 
 9     }
10     printf("%d\n", n);
11     system("pause");
12     return 0;
13 }

 

 

 


 

 

 

//更改题目:输入一行字符,直到输入9为止,并统计输入的个数


//当你输入一行字符如果第一个就为9的话,那么打印出来i的值结果为0,因为当循环判断到9的时候已经跳出,统计结果就是0
//当你输入了一行字符没有9的时候,键入回车键,仍然打印不出来i的结果,因为while循环一直在循环无法跳出,回车键仍然算做键入的字符,有几个算几个
//直到你打出来9为止,统计输入的字符(包括回车键)的个数,即为i的值

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main (){
 4     int i = 0;
 5     while (getchar() != '9'){
 6         i++;
 7     }
 8     printf("该系列字符不等于9的个数是\n%d\n", i);
 9     system("pause");
10     return 0;
11 }

 

 

1-8加回车键,不等于9的键一共有九个

 


 

 

 

//再次更改题目:输入一行字符,直到输入9为止,并统计输入的个数
//值得注意的是,换位思考,作为用户的他们并不想看到输入无限个不含9的字符仍然挑不出结果
//这时,我们加一个if语句,当i加到10(输入的10个键仍然不包含'9'的时候),则用break语句跳出,若小于10个数字包含9则退出,并打印不为9的个数。

 

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main(){
 4     int i = 0;
 5     while (getchar() != '9'){
 6         i++;
 7         if (i == 10){
 8             printf("输入过多\n");
 9             break;
10         }
11     }
12     if (i != 10){
13 
14 
15         printf("该系列字符不等于9的个数是\n%d\n", i);
16     }
17     system("pause");
18     return 0;
19 }

 


 

 

 

//字符串内容之间的复制,采用strcpy函数,需要调用<string.h>函数库
//strcpy(a,c)
//顺便再次提一下关于数组中括号里面填数字的问题,例如 arr[]="hi" ,中括号内应该填3或者选择不填,当然不填比较省事
//为什么会多一个数?因为还有个结束符\0,也要占一个内存空间,但是计算长度(strlen(arr[]))的时候结果还是为2,sizeof时结果为3.
//关于数组这个点需要谨记,比较容易遗忘。

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include<string.h>
 5 int main()
 6 {
 7     char a[] = "hi", c[] = "i am teacher!";
 8     strcpy(c,a);
 9     printf("%s\n%s\n", a, c);
10     system("pause");
11     return 0;
12 }

 

 

 


 

 

 

设计程序:银行卡密码输入

 

//用了strcmp函数,调用头文件为<string.h>
//题中不可以写成if(strcmp password==100001),因为c语言不支持这种写法,通过数组比较,当password数组中的值
//小于100001时,==后应为负数,反之大于时为正数
//c语言中strcmp这种比较方法可概括为"查英文词典法"

 

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 int main(){
 6     int i;
 7     char password[10] = { 0 };
 8     for (i = 1; i <= 3; i++){
 9         printf("请输入密码\n");
10 //        字符数组,scanf时候可以不加&
11         scanf("%s", &password);
12         if (strcmp(password, "100001") == 0){
13             printf("输入正确!\n");
14             printf("正在登陆...\n");
15             break;
16         }
17         else{
18             printf("输入错误,请重试\n");
19             if (i == 3){
20                 printf("重复输入过多,退出登录\n");
21             }
22         }
23     }
24     system("pause");
25     return 0;
26 }

 

 

 

 

转载于:https://www.cnblogs.com/hetaoyuan/p/10076192.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值