第二届_“国信蓝点”软件设计大赛_C语言模拟题(附程序题答案)
国家二级C语言机试(操作题)模拟试卷661(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷661(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.使用VC++2010打开考生文件夹下blank1中的解决方案。
此解决方案的项目中包含一个源程序文件blank1.c。
在此程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中后面的字符删除,只保留前面的k个字符。
ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#include<string.h>#define N5#define M10/*********found*********/void fun(char(*ss)【1】,int k){int i=0;/*********found*********/while(i<【2】){/*********found*********/ss[i][k]=【3】;i++;}}main( ){char x[N][M]={“Create”,”Modify”,”Sort”,”skip”,”Delete”};int i;printf(“\nThe original string\n\n”);for(i=0;i<N;i++)puts(x[i]);printf(“\n”);fun(x,4);printf(“\nThe string after deleted:\n\n”);for(i=0;i<N;i++)puts(x[i]);printf(“\n”);}正确答案:(1)[M](2)N(3)’\0’解析:填空1:根据main函数中的函数调用语句,确定函数定义时的形式参数,所以填入[M]。
填空2:while循环语句需要对所有字符串进行操作,因此循环条件是i<N。
国家二级C语言机试(函数和数组)模拟试卷4(题后含答案及解析)

国家二级C语言机试(函数和数组)模拟试卷4(题后含答案及解析) 题型有:1. 选择题选择题1.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A.main( ){……x=fun(2,10);……}floatfun(inta,intb){……)B.floatfun(inta,intb){……)main( ){……x=fun(i,j);……)C.floatfun(int,int);main( ){……x:fun(2,10);……)floatfun(inta,intb){……)D.main( ){floatfun(inti,intj);……x=fun(i,j);……)floatfun(inta,intb){……}正确答案:A解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char 时除外)。
在选项A中,调用的子函数在调用后面定义,所以不正确。
在选项B、C中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D中,在主函数中先对子函数floatfun(inti,inti)进行了声明,然后进行调用。
知识模块:函数和数组2.有以下程序#}include<string-h>main( ){charp[20]:{‘a’,’b’,’C’,’d’),q[]=‘‘abc’’,r[]=‘‘abcde’’;strcat(p,r);strcpy(p+strlen(q),q);printf(‘‘%d\n’’,strlen(p));}程序运行后的输出结果是A.9B.11C.6D.7正确答案:C解析:字符串连接函数scrcat(*p,r)的功能是把字符数组p[]和r[]连接起来,此时字符数组p[]的有效字符长度为9,冉执行strcpy(p+strlen(q),q)字符串复制函数,把字符数组q[]复制到字符数组p[]从p[3]开始到p[5]数组位置中,由于字符数组q[]中的内容为字符串”abc”复制时把字符串结束标志’\null也复制到字符数组p[]中,这时字符函数strlen(p)返同字符数组p[]的有效字符长度为6。
国家二级C语言机试(操作题)模拟试卷480(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷480(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。
ss所指字符串数组中共有M个字符串,且串长小于N。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构! 试题程序:#include <stdio.h >#include <string.h >#define M 5#define N 20int fun(char(*ss)[N],int*n){ int i,k=0,fen=N;/*********found*********/ for(i=0;i <【1】;i++) { fen=str1en(ss[i]);if(i==0) *n=1en;/*********found*********/ if(fen【2】*n) {*n=fen;k=i;} }/*********found*********/ return(【3】);} main( ) {char ss[M][N]={“shang hai”,”guangzhou”,”beijing”,”tianjirig”,”chongqing”);int n,k,i ;printf(“\nThe original strings aEe:\n”);for(i=0;i <M;i++)puts(ss[i]);k=fun(ss,&n);printf(“\nThe length ofshortest string is:%d\n”,n);printf(“\nThe shortest string is:%s\n”,ss[k]);}正确答案:(1)M(2)<(3)k解析:本题考查:for循环语句的循环条件;if语句条件表达式;return语句完成函数值的返回。
国家二级C语言机试(操作题)模拟试卷602(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷602(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.使用VC++2010打开考生文件夹下blank1中的解决方案。
此解决方案的项目中包含一个源程序文件blank1.c。
在此程序中,函数fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为10、8、6、4、2。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#include<stdlib.h>#define N5typeclef struct node{int data;struct node*next;}NODE;/*********found*********/【1】*fun(NODE*h){NODE*p,*q,*r;p=h;if(p==NULL)return NULL;q=p->next;p->next=NULL;while(q){/*********found*********/r=q->【2】;q->next=p;p=q;/*********found*********/q=【3】;}return p;}NODE*creatlist(int a[]){NODE*h,*p,*q;int i;h=NULL;for(i=0;i<N;i++){q=(NODE*)malloc(sizeof(NODE));q->data=a[i];q->next=NULL;if(h==NULL)h=p=q;else{p->next;=q;p=q;}}return h;}void outliSt(NODE*h){NODE*p;p=h;if(p==NULL)printf(“The list is NULL!\n”);else{printf(“\nttead”);do{printf(“->%d”,p->data);p=p->next;}while(P!=NULL);prAntf(“->End\n”j;}}main( ){NODE*head;int a[N]={2,4,6,8,10};head=creatlist(a);printf(“\nThe original list:\n”);outlist(head);head=fun(head);printf(“\nThe list after inverting:\n”);outlist(head);}正确答案:(1)NODE(2)next(3)r解析:填空1:本题考查了函数指针变量的函数返回值的类型,*fun(NODE*h)的返回值为p,而p的数据类型为NODE,因此本空应该填写NODE。
国家二级C语言机试(操作题)模拟试卷405(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷405(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。
例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、’’ZhangQi’’、93、85、87,修改后输出t中的数据应为:10004、’’LiJie’’、93、85、87。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<string.h>3 struct student {4 long sno;5 char name[10];6 float score[3];7 };8 void fun(struct student *b)9 {10 /**********found**********/11 b__1__=10004;12 /**********found**********/13 strcpy(b__2__,’’LiJie’’);14 }15 main( )16 { struct student t={10002,’’ZhangQi’’,93,85,87};17 int i;18 printf(‘‘\n\nThe original data:\n’’);19 printf(‘‘\nNo:%id Name:%s\nScores:’’,t.sno,t.name);20 for(i=0;i<3;i++)printf(‘‘%6.2f’’,t.score[i]);21 printf(‘‘\n’’);22 /**********found**********/23 fun( __3__);24 printf(‘‘\nThe data after modified:\n’’);25 printf(‘‘\nNo:%id Name:%s\nScores:’’,t.sno,t.name);26 for(i=0;i<3;i++) printf(‘‘%6.2f’’,t.score[i]);27 printf(‘‘\n’’);28 }正确答案:(1)->sno (2)->name(3)&t解析:函数fun的功能是对形参b所指结构体变量中的数据进行修改。
国家二级C语言机试(操作题)模拟试卷638(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷638 (题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题 程序填空题 1. 使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun( )的作用是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>typedef struct list{char data;struct list*next;}Q;void fun(Q*pa,Q*pb,Q*pc){Q*p;/*********found*********/pa->next=【1】;pb->next=pc;p=pa;while(p){/*********found*********/printf(“%c”,【2】);/*********found*********/p=【3】;}printf(“\n”);}main( ){Q a,b,c;a.data=‘E’;b.data=‘F’;c.data=‘G’;c.next=NULL;fun(&a,&b,&c);}
正确答案:(1)pb(2)p->data(3)p->next 解析:填空1:将三个结点连接起来,即将pa的指针域指向pb,pb的指针域指向pc。填空2:输出链表结点中的数据,表示为p->data。填空3:指针后移,指向下一个结点,即p=p->next。
程序修改题 2. 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。请改正程序中的错误,使它得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!.试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>int fun(int*x,int y){int t;/*********found*********/t=x;x=y;/*********found*********/return(y);}void main( ){int a=3,b=8;system(“CLS”);printf(“%d%d\n”,a,b);b=fun(&a,b);printf(“%d%d\n”,a,b);}
国家二级(C语言)机试模拟试卷150(题后含答案及解析)_0
国家二级(C语言)机试模拟试卷150(题后含答案及解析)题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题程序填空题(30分)1.给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。
例如,有10个正数:46 30 32 40 6 17 45 1548 26,平均值为:30.500000主函数中输出:m=30.0请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!正确答案:(1)*av (2)i (3)x[j]或(1)*av (2)x[i] (3)j解析:本题中函数胁的功能是计算x所指数组中N个数的平均值,并将小于平均值且最接近平均值的数作为函数值返回。
寻找最接近平均值的元素类似与寻找最大值或最小值,假定第一个元素小于平均值且最接近平均值,可以算出其和平均值之间的差值,其他元素计算其和平均值的差值,问题就转化为寻找那个能产生差值最小的元素。
程序修改题(30分)2.给定程序MODll.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!正确答案:(1)y=1;(2)d=a-i;解析:本题中函数的功能是为一个偶数查找两个素数,这两个素数之和等于该偶数。
其中,函数fun用形参a放偶数,指针b和c放两个素数。
把一个偶数分解成1和(x-1)两个数是否是素数,再分解为3和(x-3)这两个数,判断是否是素数,依此类推,直到找出这两个素数为止。
本题中把偶数分解为i和d两个素数。
判断i是否是素数,如果i不是素数,则i+2再循环;如果i是素数,则d=x-i,然后判断d是否是素数。
国家二级C语言机试(操作题)模拟试卷411(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷411(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符“*”补齐,使其与最长的字符串等长。
ss所指字符串数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<string.h>3 #define M 54 #define N 205 void fun(char(*ss)[N])6 { int i,j,n,len=0;7 for(i=0;i <M;i++)8 {len=strlen(ss[i]);9 if(i==0)n=len;10 if(len>n)n=len;11 }12 for(i=0;i<M;i++) {13 /**********found**********/14 n=strlen( __1__);15 for(j=0;j<len-n;j++)16 /**********found**********/17 ss[i][ __2__]=‘*’;18 /**********found**********/19 ss[i][n+j+__3__]=‘\0’;20 }21 }22 main( )23 { char ss[M][N]={‘‘shanghai’‘,’’guangzhou’’,’’beijing’’,’’tianjing’’,’’cchongqing’’};24 int i;25 printf(‘‘The original strings are:\n’’);26 for(i=0;i<M;i++)printf(‘‘%s\n’’,ss[i]);27 printf(‘‘\n’’);28 fun(ss);29 printf(‘‘The resuit is:\n’’);30 for(i=0;i<M;i++)printf(‘‘%s\n’’,ss[i]);31 }正确答案:(1)ss[i] (2)n+j (3)1解析:函数fun的功能是求出形参ss所指字符串数组中最长字符串的长度。
国家二级C语言机试(操作题)模拟试卷207(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷207 (题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题 程序填空题 1. 给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参S所指的字符串为abs5def126jkm8,程序执行后的输出结果为22。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 试题程序:1 #include<stdio.h>2 #include<string.h>3 #include<ctype.h>4 int fun(char*s)5 {int sum=0;6 while(*s){7 /*********found*********/8 if(isdigit(*s))9 sum+=* s-【1】;10 /********* found*********/11 【2】;12 }13 /*********found*********/14 return【3】;15 }16 main( )17 {char s[81];int n;18 printf(‘‘\nEnter a string:\n\n’’);19 gets(s);20 n=fun(s);21 printf(‘‘\nThe result is:%d\n\n’’,n);22 }
正确答案:(1)48或’0’ (2)s++ (3)sum 解析:本题是把字符串中是数字字符转换成对应的数值并进行累加。 填空1:’0’字符对应的ASCII码值是48,因此数字字符转换成对应数值时只要减去48,即是该数字字符对应的数值,所以应填48或者’0’。 填空2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填s++。 填空3:返回累加和sum,所以应填sum。
国二c语言题库选择题答案
国二c语言题库选择题答案第一部分C基础部分及顺序结构参考答案及解析1、【答案】A【解析】C语言被称为“高级语言”是因为它用接近英语国家的自然语言和数学语言作为表达形式,使人们学习和操作起来感到十分方便,相对于其他的高级语言来说,C语言有它自身的优缺点,但却是用的最广泛的语言。
由于它可以直接控制计算机硬件,因此其编写的程序运行效率较高。
用C语言编写的程序称作C语言源程序,C源程序不能直接执行。
C语言的每条可执行语句最终将被转换成只有0和1的二进制的机器指令。
2、【答案】A【解析】用C语言编写的程序称作C语言源程序,C源程序不能直接执行。
C语言的每条可执行语句必须通过相关编译、链接程序、编译并链接成可执行程序(只有0和1的二进制的机器指令),才能在计算机上执行。
故选A。
C语言有3种基本结构组成:顺序结构,选择结构,循环结构。
这3种结构可以完成任何符合结构化的任务,每个任务设计到1-3种结构不等。
C语言算法有5个基本特征之一:有穷性,指的是算法必须在执行有限个步骤之后终止,并未限制具体步数。
3、【答案】D【解析】k=m*n=1错误,m*n是表达式,=左边只能出现单个变量,不可以为常量或表达式。
k=int(m+n)错误,类型名int出现表达式中表示强制类型转换,须加括号,改为k=(int)(m+n)k=-m-n错误,C语言语句需以分号结尾。
k=(m==n)合法,先运算m==n关系运算,结果为0或1,再将结果赋值给k4、【答案】C【解析】(A)int i=1; do{ i+=2;} while(i!=10);为无限循环,i的初始值为1,累加2多次后i值均为奇数,控制表达式i!=10永远为真。
B,int i=5; do{ i+=1;} while(i>0);为无限循环,控制表达式i>0永远为真。
D,int i=6; do{ i-=2;} while(i!=1);为无限循环,i值累减之后为偶数,控制表达式i!=1永远为真。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二届 “国信蓝点”软件设计大赛 C语言模拟题 一 、以下是简答题: 1、代码填空 形如:“abccba”,“abcba”的串称为回文串,下列代码判断一个串是否为回文串。请补充空白的部分。 char buf[] = "abcde11edcba"; int x = 1; for(int i=0; iif(_______buf[i]!=buf[strlen(buf)-i-1]_________) { x = 0; break; } printf("%s\n", x ? "是":"否");(3分) 2、代码填空 下列代码把一个二进制的串转换为整数。请填写缺少的语句; char* p = "1010110001100"; int n = 0; for(int i=0;i{ n = _n*2 + p[i] - '0'_________________; } printf("%d\n", n);(4分) 3、代码填空 假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。 if(a>b) swap(&a, &b); if(b>c) swap(&b, &c); ______________________; int m = b;(4分) 4、代码填空 下面函数的目的是求出某个日期是该年度的第几天。试完善之。 如果传入:year=1980,month=1, day=1 则返回 1 如果传入:year=1980,month=2, day=1 则返回 32OLLO int getDayOfYear(int year, int month, int day) { int days _____________________; int flag =(year%4==0 && year%100!=0) || year%400 == 0 ? 1 : 0; int sum = day ; for(int i=0;isum += days[flag][i]; } return sum; }(8分) 5、代码填空 计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。 int f(int m, int n) { if(m==0 || n==0) return 1; return _______________________; }(9分) 6、代码填空 (a+b)的n次幂的展开式中各项的系数很有规律,对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 下列的程序给出了计算第m层的第n个系数的计算方法,试完善之(m,n都从0算起)。 int f(int m, int n) { if(m==0) return 1; if(n==0 || n==m) return 1; return f(m-1,n)+f(m-1,n+1)__________________________; }(12分) 7、程序设计 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2 4 3 输入数字3,则程序输出: 1 2 3 8 9 4 7 6 5 输入数字4, 则程序输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7(16分) view plaincopy to clipboardprint? #include #define N 21 void main(){ int size; scanf("%d",&size); int first=1;//矩阵入口值 int under=0;//矩阵入口下标 int circle=size;//矩阵大小,在这里可以看做圈数 int row,col;//行列下标 int num[N][N]={0}; while(circle>0){//当矩阵大小不为0 row=under; col=under-1; for(int i=0;i num[row][++col]=first++; for(int i=0;i num[++row][col]=first++; for(int i=0;i num[row][--col]=first++; for(int i=0;i num[--row][col]=first++; circle-=2;//矩阵大小减2 under++;//入口下标行列各加1 } for(int i=0;i for(int j=0;j printf("%d",num[i][j]); } printf("\n"); } }
8、程序设计 从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1 程序输出:31(12分) view plaincopy to clipboardprint? #include int getDayOfYear(int year, int month, int day) { int days[2][12]={{0,31,28,31,30,31,30,31,31,30,31,30},{0,31,29,31,30,31,30,31,31,30,31,30}} ; int flag =(year%4==0 && year%100!=0) || year%400 == 0 ? 1 : 0; int sum = day ; for(int i=0;i sum += days[flag][i]; } return sum; } void main(){ int year,month, day; scanf("%d-%d-%d",&year,&month,&day); int sum=getDayOfYear(1949,10,1); int temp=getDayOfYear(1949,12,30)-getDayOfYear(1949,10,1); if (year==1949) sum=getDayOfYear(year,month,day)-sum; else{ for(int i=1950;i temp+=getDayOfYear(i,12,30); sum=temp+getDayOfYear(year,month,day); } printf("%d\n",sum); }
9、程序设计 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程: 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。 例如,卡号是:5432123456788881 则奇数、偶数位(用红色标出)分布:5432123456788881 奇数位和=35 偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。 最后35+35=70 可以被10整除,认定校验通过。 请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。 比如,用户输入:356827027232780 程序输出:成功(12分) view plaincopy to clipboardprint? #include #include #include void main(){ char *p; p=(char *)malloc(sizeof(char)*20); gets(p); int strlength=strlen(p)-1; int len=strlength; int sum_odd=0;//奇数和 int sum_even=0;//偶数和 int temp_even=0;//2倍偶数临时变量 for (int i=len;i>=0;i=i-2) { sum_odd+=p[i]-'0'; } len=strlength; for (int i=len-1;i>=0;i=i-2) { temp_even=2*(p[i]-'0'); if (temp_even>9) { temp_even=temp_even-9; } sum_even+=temp_even; } if((sum_even+sum_odd)%10==0) printf("成功\n"); else printf("失败\n"); }
10、程序设计 任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的 差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。 比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。 请编写程序,找到5位数所有可能的循环圈,并输出,每个循 环圈占1行。其中5位数全都相