C语言.docx

上传人:b****5 文档编号:7251160 上传时间:2023-01-22 格式:DOCX 页数:74 大小:31.09KB
下载 相关 举报
C语言.docx_第1页
第1页 / 共74页
C语言.docx_第2页
第2页 / 共74页
C语言.docx_第3页
第3页 / 共74页
C语言.docx_第4页
第4页 / 共74页
C语言.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

C语言.docx

《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(74页珍藏版)》请在冰豆网上搜索。

C语言.docx

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++;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1