C语言上机复习资料.docx

上传人:b****6 文档编号:8907914 上传时间:2023-02-02 格式:DOCX 页数:27 大小:23.21KB
下载 相关 举报
C语言上机复习资料.docx_第1页
第1页 / 共27页
C语言上机复习资料.docx_第2页
第2页 / 共27页
C语言上机复习资料.docx_第3页
第3页 / 共27页
C语言上机复习资料.docx_第4页
第4页 / 共27页
C语言上机复习资料.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C语言上机复习资料.docx

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

C语言上机复习资料.docx

C语言上机复习资料

2012年3月C语言上机复习资料

编写函数fun,它的功能是求出小于或等于lim的所有素数并放在aa数组中函数返回所求素数的个数

#include

#defineMAX100

intfun(intlim,intaa[])

{inti,j,k=0,num=0;

for(i=2;i<=lim;i++)

{for(j=2;j

if(i%j==0)

break;

if(j>=i)

{num++;

aa[k]=i;k++;}}

return(num);

}

main()

{

intlimit,i,sum;

intaa[MAX];

printf("输入一个整数");

scanf("%d",&limit);

sum=fun(limit,aa);

for(i=0;i

if(i%10==0&&i!

=0)printf("\n");

printf("%5d",aa[i]);

}

2、给定函数中,函数fun的功能是;找出N*N矩阵中每列元素的最大值,并按顺序依次存放在b所指的一维数组中

#include

#defineN4

voidfun(int(*a)[N],int*b)

{inti,j;

for(i=0;i

/**********found**********/

b[i]=a[0][i];

for(j=1;j

/**********found**********/

if(b[i]

}

}

main()

{intx[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],i,j;

printf("\nThematrix:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

/**********found**********/

fun(x,y);

printf("\nTheresultis:

");

for(i=0;i

printf("\n");

}

Fun的功能是:

从整数1到55之间选出能被3整除,且有一位是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。

规定函数a1放在个位数,a2放在十位数

#include

intfun(int*b)

{intk,a1,a2,i=0;

for(k=10;k<=55;k++){

/************found************/

a2=k/10;

a1=k-a2*10;

if((k%3==0&&a2==5)||(k%3==0&&a1==5))

{b[i]=k;i++;}

}

/************found************/

returni;

}

main()

{inta[100],k,m;

m=fun(a);

printf("Theresultis:

\n");

for(k=0;k

}

给定程序中,函数fun的功能是:

计算出形参s所指字符串中包含的单词的个数作为函数值返回。

为便于统计,规定各单词之间用空格隔开

#include

intfun(char*s)

{intn=0,flag=0;

while(*s!

='\0')

{if(*s!

=''&&flag==0){

/**********found**********/

n++;flag=1;}

/**********found**********/

if(*s=='')flag=0;

/**********found**********/

s++;

}

returnn;

}

main()

{charstr[81];intn;

printf("\nEnteralinetext:

\n");gets(str);

n=fun(str);

printf("\nThereare%dwordsinthistext.\n\n",n);

}

在给定程序中,函数fun的功能是:

计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值得数据移至数组的前部,小于或等于平均值得数据移至x所指的数组的饿后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

例如:

有十个正数:

4630324061745154826

平均值为:

30.50000

移动后的输出为4632404548306171526

#include

#include

#defineN10

doublefun(double*x)

{inti,j;doubles,av,y[N];

s=0;

for(i=0;i

/**********found**********/

av=s/N;

for(i=j=0;i

if(x[i]>av){

/**********found**********/

y[j++]=x[i];x[i]=-1;}

for(i=0;i

/**********found**********/

if(x[i]!

=-1)y[j++]=x[i];

for(i=0;i

returnav;

}

main()

{inti;doublex[N];

for(i=0;i

printf("\n");

printf("\nTheaverageis:

%f\n",fun(x));

printf("\nTheresult:

\n",fun(x));

for(i=0;i

printf("\n");

}

这个程序我看得不太理解,请高手指教!

在给定程序中,读入一个英文文本行,将其中的每个单词的第一个字母改成大写,然后输出此文本,(这里的单词是指由空格隔开的字符串0

例如:

当输入:

Iamastudenttotaketheexamination

则应输出IAmAStudentToTakeTheExamination

#include//这里是什么意思

#include

/************found************/

#include

/************found************/

voidupfst(char*p)

{intk=0;//这里的k有什么具体含义

for(;*p;p++)//这里的循环条件*p有什么含义,为什么不是我们通常用的*p!

=’\0’呢

if(k)//这里是什么意思,是当k=0的时候就执行if后面的语句么

{if(*p=='')k=0;}

elseif(*p!

='')

{k=1;*p=toupper(*p);}//这里的toupper是什么意思

}//最后想问下这里的for语句是管到第一个if的花括号之后还是管到elseif后面的花括号之后呢

main()

{charchrstr[81];

printf("\nPleaseenteranEnglishtextline:

");gets(chrstr);

printf("\n\nBeforechanging:

\n%s",chrstr);

upfst(chrstr);

printf("\nAfterchanging:

\n%s\n",chrstr);

}

程序通过定义结构体变量,存储了学生的学号,姓名,和3门课的成绩。

函数fun的功能是将形参a所指的结构体变量s中的数据进行修改,把a中的地址作为函数值返回主函数,在主函数中输出修改后的数据。

例如,a指的s中的学号,姓名和3门成绩依次是“1001”,zhangsan,95、80、88,修改后输出t中的数据应为10002、“lisi”/96/、81、89

#include

#include

structstudent{

longsno;

charname[10];

floatscore[3];

};

/**********found**********/

structstudent*fun(structstudent*a)

{inti;

a->sno=10002;

strcpy(a->name,"LiSi");

/**********found**********/

for(i=0;i<3;i++)(*a).score[i]+=1;

/**********found**********/

returna;

}

main()

{structstudents={10001,"ZhangSan",95,80,88},*t;

inti;

printf("\n\nTheoriginaldata:

\n");

printf("\nNo:

%ldName:

%s\nScores:

",s.sno,s.name);

for(i=0;i<3;i++)printf("%6.2f",s.score[i]);

printf("\n");

t=fun(&s);

printf("\nThedataaftermodified:

\n");

printf("\nNo:

%ldName:

%s\nScores:

",(*t).sno,(*t).name);

for(i=0;i<3;i++)printf("%6.2f",(*t).score[i]);

printf("\n");

}

函数fun的功能是:

从N个字符串中找出最长的那个串,并将其地址作为函数值返回。

各字符串在主函数中输入,并放入一个字符串数组中。

#include

#include

#defineN5

#defineM81

/**********found**********/

char*fun(char(*sq)[M])

{inti;char*sp;

sp=sq[0];

for(i=0;i

if(strlen(sp)

sp=sq[i];

/**********found**********/

returnsp;

}

main()

{charstr[N][M],*longest;inti;

printf("Enter%dlines:

\n",N);

for(i=0;i

printf("\nTheNstring:

\n",N);

for(i=0;i

longest=fun(str);

printf("\nThelongeststring:

\n");puts(longest);}

请编写函数fun,函数的功能是:

将大于形参m且紧靠m的k个素数存入xx所指的数组中,例如,输入17,5则应输出19,23,29,31,37.

请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号内填入你所编写的若干语句。

#include

voidfun(intm,intk,intxx[])

{

inti,j,g=0;

for(i=m+1;i;i++)

{for(j=2;j<=i/2;j++)

if(i%j==0)

break;

if(j>i/2)

{xx[g]=i;

g++;}

if(g==k)

break;

}}

main()

{

intm,n,zz[1000];

printf("\nPleaseentertwointegers:

");

scanf("%d,%d",&m,&n);

fun(m,n,zz);

for(m=0;m

printf("%d",zz[m]);

printf("\n");

NONO();

}

NONO()

{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。

*/

intm,n,zz[1000],i;

FILE*rf,*wf;

rf=fopen("D:

\\k01\\24010001\\in.dat","r");

wf=fopen("D:

\\k01\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fscanf(rf,"%d%d",&m,&n);

fun(m,n,zz);

for(m=0;m

fprintf(wf,"\n");

}

fclose(rf);

fclose(wf);

}

函数fun的功能是:

求出下列分数的前n项之和

2/1,3/2,5/3,8/5,13/8,21/13.。

和通过函数值返回main函数

例如输入n=5,则应输出8.391667

#include

/**************found**************/

doublefun(intn)

{inta=2,b=1,c,k;

doubles=0.0;

for(k=1;k<=n;k++)

{s=s+1.0*a/b;

/**************found**************/

c=a;a+=b;b=c;

}

return(s);

}

main()

{intn=5;

printf("\nThevalueoffunctionis:

%lf\n",fun(n));

}

在给定程序中函数fun的功能是:

判断形参s所指的字符串是否是回文。

若是,函数值返回1,若不是,函数值返回0,。

回文是正读和反读都相同的字符串

例如:

LEVEL和level是回文,而LEVLEV不是回文。

#include

#include

#include

intfun(char*s)

{char*lp,*rp;

/**********found**********/

lp=s;

rp=s+strlen(s)-1;

while((toupper(*lp)==toupper(*rp))&&(lp

/**********found**********/

lp++;rp--;}

/**********found**********/

if(lp

elsereturn1;

}

main()

{chars[81];

printf("Enterastring:

");scanf("%s",s);

if(fun(s))printf("\n\"%s\"isaPalindrome.\n\n",s);

elseprintf("\n\"%s\"isn'taPalindrome.\n\n",s);

请编写一个voidfun(chara[],charb[],intn),它的功能是删除一个字符串中指定下标的字符,其中a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标

例如,输入一个字符串:

World,然后输入3,则调用该函数的结果为word

#include

#include

#defineLEN20

voidfun(chara[],charb[],intn)

{

inti,j,k;

for(i=0;a[i]!

='\0';i++)

{

if(i==n)

{

while(a[i]!

='\0')

{

b[i]=a[i+1];

i++;

}

}

else

{

b[i]=a[i];

}

}

}

main()

{charstr1[LEN],str2[LEN];

intn;

voidNONO();

printf("Enterthestring:

\n");

gets(str1);

printf("Enterthepositionofthestringdeleted:

");

scanf("%d",&n);

fun(str1,str2,n);

printf("Thenewstringis:

%s\n",str2);

NONO();

}

voidNONO()

{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。

*/

charstr1[LEN],str2[LEN];

inti,n;

FILE*rf,*wf;

rf=fopen("D:

\\k01\\24010001\\in.dat","r");

wf=fopen("D:

\\k01\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fscanf(rf,"%s%d",str1,&n);

fun(str1,str2,n);

fprintf(wf,"%s\n",str2);

}

fclose(rf);

fclose(wf);

}

给定程序中,函数fun的功能是:

将形参n中各位上的偶数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。

例如输入一个整数:

27638496,函数返回值为:

64862

#include

voidfun(longs,long*t)

{intd;

longsl=1;

/************found************/

*t=0;

while(s>0)

{d=s%10;

/************found************/

if(d%2!

=0)

{*t=d*sl+*t;

sl*=10;

}

s/=10;

}

}

main()

{longs,t;

printf("\nPleaseenters:

");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

函数fun的功能是:

将长整形中每一位是奇数的数取出,构成一个新数放在t中,高位仍在高位,低位仍在低位。

例如:

s中的数为;87653142,t中的数为:

7531

#include

voidfun(longs,long*t)

{intd;

longsl=1;

/************found************/

*t=0;

while(s>0)

{d=s%10;

/************found************/

if(d%2!

=0)

{*t=d*sl+*t;

sl*=10;

}

s/=10;

}

}

main()

{longs,t;

printf("\nPleaseenters:

");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

函数fun的功能是:

将a、b中两个两位正数合并形成一个新的整数放在c中。

合并的方式是:

将a中的十位和个位依次放在变量c的十位和千位上,b中的十位和个位依次放在变量c的个位和百位上;例如:

当a=45,b=12.调用该函数后c=5241;

#include

voidfun(inta,intb,long*c)

{intt,m,n,x;

t=a%10;

m=a/10;

n=b%10;

x=b/10;

*c=1000*t+100*n+10*m+x;

}

main()

{inta,b;longc;

printf("Inputa,b:

");

scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:

%ld\n",c);

NONO();

}

NONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("D:

\\k01\\24010001\\in.dat","r");

wf=fopen("D:

\\k01\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fscanf(rf,"%d,%d",&a,&b);

fun(a,b,&c);

fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c);

}

fclose(rf);

fclose(wf);

}

在给定函数fun的功能是:

删除p所指字符串中所有所有空白字符(包括制表符,换行符、回车符)输入字符串时遇到“#”时结束输入。

#include

#include

#include

voidfun(char*p)

{inti,t;charc[80];

/************found************/

for(i=0,t=0;p[i];i++)

if(!

isspace(*(

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

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

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

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