PAT考试乙级1031(C语言实现)重点题目
2017-11-11 18:51
363 查看
第一种输出方法:
第二种输出方法:
总结:
1、注意循环语句中可以加入多个判断条件。
2、由于本答案是每输入一行就会去判断是否合法,然后就会输出不合法的id,我以为必须要一起输入结束后回车然后再一起输出。没想到这样也可以。
3、第二种输出方法就是一起输入一起输出,用到了二维数组,要主页二维数组的用法,用到了复制字符数组的函数,很方便。
#include <stdio.h> int main(){ int num,i,j,sum,c=0; char id[19]; int w[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char m[]={'1','0','X','9','8','7','6','5','4','3','2'}; scanf("%d",&num); for(i=0;i<num;i++){ scanf("%s",id); for(j=0,sum=0;j<17&&id[j]>='0'&&id[j]<='9';j++){ sum=sum+(id[j]-'0')*w[j]; } if(j==17&&id[17]==m[sum%11]){ c++; }else{ puts(id); } } if(c==num){ printf("All passed"); } return 0; }
第二种输出方法:
#include <stdio.h> #include <string.h> int main(){ int num,i,j,q=0,sum,c=0; char id[19]; char Nid[100][19]={0}; int w[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char m[]={'1','0','X','9','8','7','6','5','4','3','2'}; scanf("%d",&num); for(i=0;i<num;i++){ scanf("%s",id); for(j=0,sum=0;j<17&&id[j]>='0'&&id[j]<='9';j++){ sum=sum+(id[j]-'0')*w[j]; } if(j==17&&id[17]==m[sum%11]){ c++; }else{ strcpy(Nid[q],id); q++; } } if(c==num){ printf("All passed"); }else{ for(i=0;i<q;i++){ puts(Nid[i]); } } return 0; }
总结:
1、注意循环语句中可以加入多个判断条件。
2、由于本答案是每输入一行就会去判断是否合法,然后就会输出不合法的id,我以为必须要一起输入结束后回车然后再一起输出。没想到这样也可以。
3、第二种输出方法就是一起输入一起输出,用到了二维数组,要主页二维数组的用法,用到了复制字符数组的函数,很方便。
相关文章推荐
- PAT考试乙级1050(C语言实现) (重点题目)(按格式读取,使用容器vector)
- PAT考试乙级1050(C语言实现) (重点题目)(关于保留小数的坑)
- PAT考试乙级1048(C语言实现)重点题目(思路、用到了memset)
- PAT考试乙级1045(C语言实现)重点题目(思路)
- PAT考试乙级1035(C语言实现)重点题目(排序)
- PAT考试乙级1033(C语言实现)重点题目 部分正确(已解决)
- PAT考试乙级1054(C语言实现) (重点题目)(思路)
- PAT考试乙级1019(C语言实现) 重点题目
- PAT考试乙级1028(C语言实现)重点题目
- PAT考试乙级1034(C语言实现)重点题目
- PAT考试乙级1030(C语言实现)重点题目
- PAT考试乙级1050(C语言实现) (重点题目)(memset以及思路)
- PAT考试乙级1024(C语言实现)重点题目
- PAT考试乙级1055(C++语言实现) (重点题目)(思路)
- PAT考试乙级1011(C语言实现)
- PAT考试乙级1021(C语言实现)
- PAT考试乙级1036(C语言实现)
- PAT考试乙级1017(C语言实现)
- PAT考试乙级1043(C语言实现)
- PAT考试乙级1005(C语言实现)