1、C语言各位同学,这是上机考试的最终题目上机考试答题要求:1. 数据的输入和输出功能在main( )函数中完成;2. 题目的其它功能要求学生编写函数完成,可以编写多个函数;3. 在main( )调用编写的函数来完成题目要求的功能;1 输入一个正整数,把各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数。 例如若输入一个正整数 27638496,得到结果为 739。 #include void fun(unsigned long *n) unsigned long x=0, i; int t; i=1; while(*n) t=*n % 10; if(t%2!= 0) x=x+t
2、*i; i=i*10; *n =*n /10; *n=x; main() unsigned long n=-1; while(n99999999|n0) printf(Please input(0n100000000): ); scanf(%ld,&n); fun(&n); printf(nThe result is: %ldn,n); 解题思路: 第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。 第二处:判断是否是奇数,所以应填:0。 第三处:最后通形参n来返回新数x,所以应填:x。 2 输入一个正整数,把各位上为奇数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数。
3、 例如若输入一个正整数 27638496,得到结果为 26846。 #include void fun(unsigned long *n) unsigned long x=0, i; int t; i=1; while(*n) t=*n % 10; if(t%2=0) x=x+t*i; i=i*10; *n =*n /10; *n=x; main() unsigned long n=-1; while(n99999999|n0) printf(Please input(0n100000000): ); scanf(%ld,&n); fun(&n); printf(nThe result is:
4、 %ldn,n); 3 输入由数字字符组成的字符串,将其转换成为一个整数。例如若输入字符串3425,得到结果为整数值3425。#include #include long fun ( char *p) int len, t; long x=0; len=strlen(p); if(p0=-) t=-1; len-; p+; else t=1; while(*p) x = x*10-48+(*p+); return x*t; main() char s6; long n; printf(Enter a string:n) ; gets(s); n = fun(s); printf(%dn,n);
5、 4 输入一个正整数,将其转换成字符串。例如若输入整数值3425,转换后得到字符串3425。#include void func(int number) int digit,power,i=0; char str20; if(0number) printf(输入的数字串有误,要输入一个正整数n); else power=1; while(100000=1) digit=number/power; stri=digit+48; number%=power; power/=10; i+;stri=0;printf(%sn,str); void main() int number; printf(输
6、入一个正整数:n) ;scanf(%d,&number);func(number); 5 输入一个字符串,依次取出字符串中所有的数字字符, 形成新的字符串, 并取代原字符串。例如若输入字符串as3r3fd6gf25,得到结果为字符串33625。#include void fun( char *s) int i,j; for(i=0,j=0; si!=0; i+) if(si=0 & si=9) sj+=si; sj=0; void main() char item80; printf(nEnter a string : );gets(item); printf(nThe string is :
7、%sn,item); fun(item); printf(nThe string of changing is : %sn,item ); 6 输入一行英文表达语句,统计其中单词的个数。规定所有单词由小写字母组成,单词之间由若干个空格隔开。例如若输入字符串 it is a book ,得到结果为 4。#include int fun(char a)int i,num=0,word=0;char c;for(i=0;(c=ai)!=0;i+)if(c= )word=0;else if(word=0)word=1;num+;return num; main()char s100;printf(in
8、put:);gets(s);printf(%dn,fun(s);return 0;7 输入若干(不超过100个)学生成绩,规定如果输入的数据为0则表示输入结束,输出其中不及格的成绩和不及格人数所占的百分比。#includevoid li(int *str)int i=1;float j=0.0,s;while(*(str+i)!=0) if(*(str+i)=0&*(str+i)=60) printf(第%d个同学不及格,成绩:%n,i,*(str+i);j+; i+;s=j/(i-1);printf(不及格率为:%.2f%cn,100*s,37);void main() int str100
9、; int i; for(i=1;i=100;i+) printf(请输入第%d个同学的成绩n,i); scanf(%d,&stri); if(stri=0) break; li(&stri);8 输入若干(不超过100个)学生成绩,规定如果输入的数据为0则表示输入结束,输出其中成绩最高的前10名学生的成绩。#includevoid main() void fun(int x,int n); int a100,i,n=0; printf(输入学生成绩:); for(i=0;i100;i+) scanf(%d,&ai); if(ai=0)break; n+; fun(a,n); printf(成
10、绩最高的10名学生的成绩(以空格隔开):); for(i=0;i10;i+) printf(%d ,ai); putchar(n);void fun(int x,int n) int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if(xkxj) t=xk;xk=xj;xj=t; 9 输入若干(不超过100个)学生成绩,规定如果输入的数据为0则表示输入结束,输出其中成绩最低的后10名学生的成绩。 #includevoid main() void fun(int x,int n); int a100,i,n=0; printf(输入学生成绩:);
11、 for(i=0;i100;i+) scanf(%d,&ai); if(ai=0)break; n+; fun(a,n); printf(成绩最低的10名学生的成绩:); for(i=0;i10;i+) printf(%d ,ai); putchar(n);void fun(int x,int n) int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jxj) t=xk;xk=xj;xj=t; 10 输入若干(不超过50个)有序的正整数,对于相同的数据只保留一个,输出保留的数据。例如,输入数据是: 2,2,2,3,3,4,5,5,6,6,9,9,9,10,
12、10,10 最终的输出结果是: 2,3,4,5,6,9 ,10 #include #define N 80 int fun(int a, int n) int i, j = 1, k = a0 ; for(i = 1 ; i n ; i+) if(k != ai) aj+=ai ; k = ai ; aj = 0 ; return j ; void main( ) int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,m,n=0; printf(The original data :n); for(i=0; ai!=0; i+) printf
13、(%3d,ai); n+;m=fun(a,n); printf(nnThe data after deleted :n); for(i=0;im;i+) printf(%3d,ai); printf(nthe number is %dn,m); 11 输入一个字符串和一个正整数m,移动字符串中的内容,移动的规则如下: 把从左边起第1到第m个字符平移到字符串的右边, 把其余的字符统一向左移动。 例如, 字符串中原有的内容为: ABCDEFGHIJK, m的值为3, 则移动后, 字符串中的内容应该是: DEFGHIJKABC。#include #include #define N 80 void
14、fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */ int i; char t; t=w0; for(i=0;istrlen(w)-1;i+) wi=wi+1; wstrlen(w)-1=t; void fun(char *w, int m) /* 可调用fun1函数左移字符 */ int i; for(i = 0 ; i m ; i+) fun1(w); void main( ) char aN=ABCDEFGHIJK; int m; printf(The original string:n); puts(a); printf(nnEnter m: ); s
15、canf(%d,&m); fun(a,m); printf(nThe string after moving:n); puts(a); printf(nn); 12 输入一个字符串和一个正整数m,移动字符串中的内容,移动的规则如下: 把从右边起第1到第m个字符平移到字符串的左边, 把其余的字符统一向右移动。 例如, 字符串中原有的内容为: ABCDEFGHIJK, m的值为3, 则移动后, 字符串中的内容应该是: IJKABCDEFGH。#include #include #define N 80 void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */
16、int i; char t; t=wstrlen(w)-1; for(i=strlen(w)-1;i0;i-) wi=wi-1; w0=t; void fun(char *w, int m) /* 可调用fun1函数左移字符 */ int i; for(i = 0 ; i m ; i+) fun1(w); void main( ) char aN=ABCDEFGHIJK; int m; printf(The original string:n); puts(a); printf(nnEnter m: ); scanf(%d,&m); fun(a,m); printf(nThe string a
17、fter moving:n); puts(a); printf(nn); 13 输入10个数,找出其中最大数和次最大数,并把最大数和次最大数放在第一和第二的位置上,其余数据依次向后移动,输出调整后的结果。#includevoid func(int *str) int i=0,j=0,m,n=0; for(n=0;n2;n+) m=strn; for(i=n;i10;i+) if(m0;i-) stri=stri-1; strn=m; for(i=0;i10;i+)printf(%d ,stri);void main() int str10,i; printf(请输入十个整数(以空格隔开):n)
18、; for(i=0;i10;i+) scanf(%d,&stri); printf(结果为:n); func(str); 14 输入10个数,找出其中最小数和次最小数,并把最小数和次最小数放在第一和第二的位置上,其余数据依次向后移动,输出调整后的结果。#includevoid func(int *str) int i=0,j=0,m,n=0; for(n=0;n2;n+) m=strn; for(i=n;istri) m=stri;j=i; for(i=j;i0;i-) stri=stri-1; strn=m; for(i=0;i10;i+)printf(%d ,stri);void main
19、() int str10,i; printf(请输入十个整数(以空格隔开):n); for(i=0;i10;i+) scanf(%d,&stri); printf(结果为:n); func(str); 15 请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!#includeint main() int fac(int n); int i,sum=0; for(i=1;i=5;i+) printf(%d!=%dn,i,fac(i); for(i=1;i=5;i+) sum+=fac(i); printf(求和结果%dn,sum); return 0;int fac(int
20、n)static int f=1;f=f*n;return(f);16 输入一个44的矩阵,把该矩阵转置后输出。#include#includeint fun(int array33) int i,j,t;for(i=0;i2;i+)for(j=i+1;j3;j+)t=arrayij;arrayij=arrayji;arrayji=t;main() int i,j;int array33=100,200,300,400,500,600,700,800,900;viod clrscr();for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,arrayij);printf
21、(n);fun(array);printf(Converted array:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,arrayij);printf(n);17 输入一个字符串,把其中所有的字母字符转换为按字母序列的后续字母(a转换为b, b转换为c, z转换为a,大写字母规律相同),其它字符不变,输出转换后的结果。 #include #include void fun (char *s) while(*s) if(*s=A & *s=a & *s=z) if(*s=Z) *s=A; else if(*s=z) *s=a; else *s += 1;
22、s+; main() char s80; printf(n Enter a string with length 80. :nn ); gets(s); printf(n The string : nn ); puts(s); fun ( s ); printf (nn The Cords :nn ); puts(s); 18 输入10个数据和一个整数m,把输入的10个数据依次向右移动 m次。例如输入的数据为: 1,2,3,4,5,6,7,8,9,10,m的值为3,则移动后的数据为: 8,9,10,1,2,3,4,5,6,7。 #include #define N 80 void fun(in
23、t *w, int p, int n) int i, j = 0, bN ; for(i = n-p; i10 ; i+) bj+ = wi ; for(i =0 ; i n-p ; i+) bj+ = wi ; for(i = 0 ; i n ; i+) wi= bi ; main() int aN=1,2,3,4,5,6,7,8,9,10; int i,p,n=10; printf(The original data:n); for(i=0; in; i+)printf(%3d,ai); printf(nnEnter p: );scanf(%d,&p); fun(a,p,n); print
24、f(nThe data after moving:n); for(i=0; in; i+)printf(%3d,ai); printf(nn); 19 输入10个数据和一个整数m,把输入的10个数据依次向左移动 m次。例如输入的数据为: 1,2,3,4,5,6,7,8,9,10,m的值为3,则移动后的数据为: 4,5,6,7,8,9,10,1,2,3#include #define N 80 void fun(int *w, int p, int n) int i, j = 0, bN ; for(i = p; i n ; i+) bj+ = wi ; for(i = 0 ; i = p ;
25、i+) bj+ = wi ; for(i = 0 ; i n ; i+) wi= bi ; main() int aN=1,2,3,4,5,6,7,8,9,10; int i,p,n=10; printf(The original data:n); for(i=0; in; i+)printf(%3d,ai); printf(nnEnter p: );scanf(%d,&p); fun(a,p,n); printf(nThe data after moving:n); for(i=0; in; i+)printf(%3d,ai); printf(nn); 20 输入一个字符串,把其中的空格都删除,例如输入 as d a f aa z67 , 则输出为 asdafaaz67。#include #include int fun(char *str) char *p = str ; int i = 0 ; while(*p) if(*p != ) stri+ = *p ; p+ ;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1