C语言.docx
- 文档编号:7251160
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:74
- 大小:31.09KB
C语言.docx
《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(74页珍藏版)》请在冰豆网上搜索。
C语言
各位同学,这是上机考试的最终题目
上机考试答题要求:
1.数据的输入和输出功能在main()函数中完成;
2.题目的其它功能要求学生编写函数完成,可以编写多个函数;
3.在main()调用编写的函数来完成题目要求的功能;
1
输入一个正整数,把各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数。
例如若输入一个正整数27638496,得到结果为739。
#include
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=1;
while(*n)
{t=*n%10;
if(t%2!
=0)
{x=x+t*i;i=i*10;}
*n=*n/10;
}
*n=x;
}
main()
{unsignedlongn=-1;
while(n>99999999||n<0)
{printf("Pleaseinput(0 ");scanf("%ld",&n);} fun(&n); printf("\nTheresultis: %ld\n",n); } 解题思路: 第一处: t是通过取模的方式来得到*n的个位数字,所以应填: 10。 第二处: 判断是否是奇数,所以应填: 0。 第三处: 最后通形参n来返回新数x,所以应填: x。 2 输入一个正整数,把各位上为奇数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数。 例如若输入一个正整数27638496,得到结果为26846。 #include voidfun(unsignedlong*n) {unsignedlongx=0,i;intt; i=1; while(*n) {t=*n%10; if(t%2==0) {x=x+t*i;i=i*10;} *n=*n/10; } *n=x; } main() {unsignedlongn=-1; while(n>99999999||n<0) {printf("Pleaseinput(0 ");scanf("%ld",&n);} fun(&n); printf("\nTheresultis: %ld\n",n); } 3 输入由数字字符组成的字符串,将其转换成为一个整数。 例如若输入字符串"3425",得到结果为整数值3425。 #include #include longfun(char*p) { intlen,t; longx=0; len=strlen(p); if(p[0]=='-') {t=-1;len--;p++;} elset=1; while(*p)x=x*10-48+(*p++); returnx*t; } main() {chars[6]; longn; printf("Enterastring: \n"); gets(s); n=fun(s); printf("%d\n",n); } 4 输入一个正整数,将其转换成字符串。 例如若输入整数值3425,转换后得到字符串"3425"。 #include voidfunc(intnumber) { intdigit,power,i=0; charstr[20]; if(0>number) {printf("输入的数字串有误,要输入一个正整数\n");} else{ power=1; while(100000 {power*=10;} printf("运算字符串为: \n"); while(power>=1) { digit=number/power; str[i]=digit+48; number%=power; power/=10; i++; } str[i]='\0'; printf("%s\n",str); } } voidmain() {intnumber; printf("输入一个正整数: \n"); scanf("%d",&number); func(number); } 5 输入一个字符串,依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。 例如若输入字符串"as3r3fd6gf25",得到结果为字符串"33625"。 #include voidfun(char*s) {inti,j; for(i=0,j=0;s[i]! ='\0';i++) if(s[i]>='0'&&s[i]<='9') s[j++]=s[i]; s[j]='\0'; } voidmain() {charitem[80]; printf("\nEnterastring: ");gets(item); printf("\nThestringis: %s\n",item); fun(item); printf("\nThestringofchangingis: %s\n",item); } 6 输入一行英文表达语句,统计其中单词的个数。 规定所有单词由小写字母组成,单词之间由若干个空格隔开。 例如若输入字符串"itisabook",得到结果为4。 #include intfun(chara[]) {inti,num=0,word=0; charc; for(i=0;(c=a[i])! ='\0';i++) if(c=='')word=0; elseif(word==0) {word=1; num++; } returnnum; } main() {chars[100]; printf("input: "); gets(s); printf("%d\n",fun(s)); return0; } 7 输入若干(不超过100个)学生成绩,规定如果输入的数据为0则表示输入结束,输出其中不及格的成绩和不及格人数所占的百分比。 #include voidli(int*str) {inti=1; floatj=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%c\n",100*s,37); } voidmain() { intstr[100]; inti; for(i=1;i<=100;i++) {printf("请输入第%d个同学的成绩\n",i); scanf("%d",&str[i]); if(str[i]==0)break; } li(&str[i]); } 8 输入若干(不超过100个)学生成绩,规定如果输入的数据为0则表示输入结束,输出其中成绩最高的前10名学生的成绩。 #include voidmain() { voidfun(intx[],intn); inta[100],i,n=0; printf("输入学生成绩: "); for(i=0;i<100;i++) { scanf("%d",&a[i]); if(a[i]==0)break; n++; } fun(a,n); printf("成绩最高的10名学生的成绩(以空格隔开): "); for(i=0;i<10;i++) printf("%d",a[i]); putchar('\n'); } voidfun(intx[],intn) { inti,j,k,t; for(i=0;i { k=i; for(j=i+1;j { if(x[k] { t=x[k];x[k]=x[j];x[j]=t; } } } } 9 输入若干(不超过100个)学生成绩,规定如果输入的数据为0则表示输入结束,输出其中成绩最低的后10名学生的成绩。 #include voidmain() { voidfun(intx[],intn); inta[100],i,n=0; printf("输入学生成绩: "); for(i=0;i<100;i++) { scanf("%d",&a[i]); if(a[i]==0)break; n++; } fun(a,n); printf("成绩最低的10名学生的成绩: "); for(i=0;i<10;i++) printf("%d",a[i]); putchar('\n'); } voidfun(intx[],intn) { inti,j,k,t; for(i=0;i { k=i; for(j=i+1;j { if(x[k]>x[j]) { t=x[k];x[k]=x[j];x[j]=t; } } } } 10 输入若干(不超过50个)有序的正整数,对于相同的数据只保留一个,输出保留的数据。 例如,输入数据是: 2,2,2,3,3,4,5,5,6,6,9,9,9,10,10,10最终的输出结果是: 2,3,4,5,6,9,10 #include #defineN80 intfun(inta[],intn) { inti,j=1,k=a[0]; for(i=1;i if(k! =a[i]){ a[j++]=a[i]; k=a[i]; } a[j]=0; returnj; } voidmain() {inta[N]={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("Theoriginaldata: \n"); for(i=0;a[i]! =0;i++){printf("%3d",a[i]);n++;} m=fun(a,n); printf("\n\nThedataafterdeleted: \n"); for(i=0;i printf("\nthenumberis%d\n",m); } 11 输入一个字符串和一个正整数m,移动字符串中的内容,移动的规则如下: 把从左边起第1到第m个字符平移到字符串的右边,把其余的字符统一向左移动。 例如,字符串中原有的内容为: ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是: DEFGHIJKABC。 #include #include #defineN80 voidfun1(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/ { inti;chart; t=w[0]; for(i=0;i w[i]=w[i+1]; w[strlen(w)-1]=t; } voidfun(char*w,intm)/*可调用fun1函数左移字符*/ { inti; for(i=0;i } voidmain() {chara[N]="ABCDEFGHIJK"; intm; printf("Theoriginalstring: \n");puts(a); printf("\n\nEnterm: ");scanf("%d",&m); fun(a,m); printf("\nThestringaftermoving: \n");puts(a); printf("\n\n"); } 12 输入一个字符串和一个正整数m,移动字符串中的内容,移动的规则如下: 把从右边起第1到第m个字符平移到字符串的左边,把其余的字符统一向右移动。 例如,字符串中原有的内容为: ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是: IJKABCDEFGH。 #include #include #defineN80 voidfun1(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/ { inti;chart; t=w[strlen(w)-1]; for(i=strlen(w)-1;i>0;i--) w[i]=w[i-1]; w[0]=t; } voidfun(char*w,intm)/*可调用fun1函数左移字符*/ { inti; for(i=0;i } voidmain() {chara[N]="ABCDEFGHIJK"; intm; printf("Theoriginalstring: \n");puts(a); printf("\n\nEnterm: ");scanf("%d",&m); fun(a,m); printf("\nThestringaftermoving: \n");puts(a); printf("\n\n"); } 13 输入10个数,找出其中最大数和次最大数,并把最大数和次最大数放在第一和第二的位置上,其余数据依次向后移动,输出调整后的结果。 #include voidfunc(int*str) { inti=0,j=0,m,n=0; for(n=0;n<2;n++) { m=str[n]; for(i=n;i<10;i++) { if(m {m=str[i];j=i;} } for(i=j;i>0;i--) str[i]=str[i-1]; str[n]=m; } for(i=0;i<10;i++) printf("%d",str[i]); } voidmain() { intstr[10],i; printf("请输入十个整数(以空格隔开): \n"); for(i=0;i<10;i++) scanf("%d",&str[i]); printf("结果为: \n"); func(str); } 14 输入10个数,找出其中最小数和次最小数,并把最小数和次最小数放在第一和第二的位置上,其余数据依次向后移动,输出调整后的结果。 #include voidfunc(int*str) { inti=0,j=0,m,n=0; for(n=0;n<2;n++) { m=str[n]; for(i=n;i<10;i++) { if(m>str[i]) {m=str[i];j=i;} } for(i=j;i>0;i--) str[i]=str[i-1]; str[n]=m; } for(i=0;i<10;i++) printf("%d",str[i]); } voidmain() { intstr[10],i; printf("请输入十个整数(以空格隔开): \n"); for(i=0;i<10;i++) scanf("%d",&str[i]); printf("结果为: \n"); func(str); } 15 请使用函数的递归调用编写求阶乘的函数,并计算1! +2! +3! +4! +5! #include intmain() { intfac(intn); inti,sum=0; for(i=1;i<=5;i++) printf("%d! =%d\n",i,fac(i)); for(i=1;i<=5;i++) sum+=fac(i); printf("求和结果%d\n",sum); return0; } intfac(intn) {staticintf=1; f=f*n; return(f); } 16 输入一个4×4的矩阵,把该矩阵转置后输出。 #include #include intfun(intarray[3][3]) {inti,j,t; for(i=0;i<2;i++) for(j=i+1;j<3;j++) {t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;} } main() {inti,j; intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}}; viodclrscr(); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%7d",array[i][j]); printf("\n"); } fun(array); printf("Convertedarray: \n"); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%7d",array[i][j]); printf("\n"); } } 17 输入一个字符串,把其中所有的字母字符转换为按字母序列的后续字母(a转换为b,b转换为c,z转换为a,大写字母规律相同),其它字符不变,输出转换后的结果。 #include #include voidfun(char*s) { while(*s) {if(*s>='A'&*s<='Z'||*s>='a'&&*s<='z') {if(*s=='Z')*s='A'; elseif(*s=='z')*s='a'; else*s+=1; } s++; } } main() {chars[80]; printf("\nEnterastringwithlength<80.: \n\n");gets(s); printf("\nThestring: \n\n");puts(s); fun(s); printf("\n\nTheCords: \n\n");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 #defineN80 voidfun(int*w,intp,intn) { inti,j=0,b[N]; for(i=n-p;i<10;i++)b[j++]=w[i]; for(i=0;i for(i=0;i } main() {inta[N]={1,2,3,4,5,6,7,8,9,10}; inti,p,n=10; printf("Theoriginaldata: \n"); for(i=0;i printf("\n\nEnterp: ");scanf("%d",&p); fun(a,p,n); printf("\nThedataaftermoving: \n"); for(i=0;i printf("\n\n"); } 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 #defineN80 voidfun(int*w,intp,intn) { inti,j=0,b[N]; for(i=p;i for(i=0;i<=p;i++)b[j++]=w[i]; for(i=0;i } main() {inta[N]={1,2,3,4,5,6,7,8,9,10}; inti,p,n=10; printf("Theoriginaldata: \n"); for(i=0;i printf("\n\nEnterp: ");scanf("%d",&p); fun(a,p,n); printf("\nThedataaftermoving: \n"); for(i=0;i printf("\n\n"); } 20 输入一个字符串,把其中的空格都删除,例如输入"asdafaaz67",则输出为"asdafaaz67"。 #include #include intfun(char*str) { char*p=str; inti=0; while(*p){ if(*p! ='')str[i++]=*p; p++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言