c语言常见习题.docx

上传人:b****2 文档编号:16970299 上传时间:2023-07-20 格式:DOCX 页数:12 大小:17.63KB
下载 相关 举报
c语言常见习题.docx_第1页
第1页 / 共12页
c语言常见习题.docx_第2页
第2页 / 共12页
c语言常见习题.docx_第3页
第3页 / 共12页
c语言常见习题.docx_第4页
第4页 / 共12页
c语言常见习题.docx_第5页
第5页 / 共12页
c语言常见习题.docx_第6页
第6页 / 共12页
c语言常见习题.docx_第7页
第7页 / 共12页
c语言常见习题.docx_第8页
第8页 / 共12页
c语言常见习题.docx_第9页
第9页 / 共12页
c语言常见习题.docx_第10页
第10页 / 共12页
c语言常见习题.docx_第11页
第11页 / 共12页
c语言常见习题.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言常见习题.docx

《c语言常见习题.docx》由会员分享,可在线阅读,更多相关《c语言常见习题.docx(12页珍藏版)》请在冰点文库上搜索。

c语言常见习题.docx

c语言常见习题

求公约数

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

求两个非零正整数的最大公约数,并作为函数值返回。

例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。

请改正程序中的错误,使它能得出正确结果。

注意:

部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。

#include

intfun(inta,intb)

{intr,t;

if(a

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

t=a;b=a;a=t;

}

r=a%b;

while(r!

=0)

{a=b;b=r;r=a%b;}

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

return(a);

}

main()

{intnum1,num2,a;

printf("Inputnum1num2:

");scanf("%d%d",&num1,&num2);

printf("num1=%dnum2=%d\n\n",num1,num2);

a=fun(num1,num2);

printf("Themaximuncommondivisoris%d\n\n",a);

}

【参考答案】

(1)t=a;a=b;b=t;

(2)return(b);或returnb;

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

求三个数的最小公倍数。

例如,若给主函数中的变量x1、x2、x3分别输入15 11 2,则输出结果应当是330。

请改正程序中的错误,使它能得出正确的结果。

注意:

部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!

#include

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

fun(intx,y,z)

{intj,t,n,m;

j=1;

t=j%x;

m=j%y;

n=j%z;

while(t!

=0||m!

=0||n!

=0)

{j=j+1;

t=j%x;

m=j%y;

n=j%z;

}

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

returni;

}

main()

{intx1,x2,x3,j;

printf("Inputx1x2x3:

");scanf("%d%d%d",&x1,&x2,&x3);

printf("x1=%d,x2=%d,x3=%d\n",x1,x2,x3);

j=fun(x1,x2,x3);

printf("Theminimalcommonmultipleis:

%d\n",j);

}

【参考答案】

(1)fun(intx,inty,intz)或intfun(intx,inty,intz)

(2)returnj;

回文问题

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

判断字符串是否为回文,若是则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。

回文是指顺读和倒读都一样的字符串。

例如,字符串LEVEL是回文,而字符串123312就不是回文。

注意:

部分源程序在文件PROG1.C中。

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

#include

#defineN80

intfun(char*str)

{

}

main()

{

chars[N];

FILE*out;

char*test[]={"1234321","123421","123321","abcdCBA"};

inti;

printf("Enterastring:

");

gets(s);

printf("\n\n");

puts(s);

if(fun(s))

printf("YES\n");

else

printf("NO\n");

/************************************/

out=fopen("out.dat","w");

for(i=0;i<4;i++)

if(fun(test[i]))

fprintf(out,"YES\n");

else

fprintf(out,"NO\n");

fclose(out);

/************************************/

}

【参考答案】

intfun(char*str)

{

inti,n=0,fg=1;

char*p=str;

while(*p)  /*将指针p置位到字符串末尾,并统计字符数*/

{

n++;

p++;

}

for(i=0;i

 if(str[i]==str[n-1-i]);  /*相同,什么都不作*/

 else /*不同,直接跳出循环*/

 {

   fg=0;

   break;

 }

 returnfg;

}

【考点分析】

本题考查:

判断回文算法;针对遍历字符串的操作,同时如果有判断,则应该有if语句的配合。

【解题思路】

判断回文数就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行较,依次类推,直到中间的字符,如果比较的结果都相同,那么这个字符串就是回文,否则不是。

程序中循环语句用来遍历字符串,条件语句用来判断当前字符与对应位置的字符是否相同。

闰年问题

请补充函数fun,该函数的功能是:

判断某一个年份是否为闰年。

例如,1900年不是闰年,2004是闰年。

注意:

部分源程序在文件BLANK1.C中。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

#include

#include

#include

intfun(intn)

{

intflag=0;

if(n%4==0)

{

if(【1】)

flag=1;

}

if(【2】)

flag=1;

return【3】;

}

voidmain()

{

intyear;

system("CLS");

printf("Inputtheyear:

");

scanf("%d",&year);

if(fun(year))

printf("%disaleapyear.\n",year);

else

printf("%disnotaleapyear.\n",year);

}

【参考答案】

(1)n%100!

=0或n%100

(2)n%400==0  (3)flag

因子和问题

5、

下列给定程序的功能是:

读入一个整数k(2≤k≤10000),输出它的所有质因子(即所有为素数的因子)。

例如,若输入整数2310,则应输出:

2、3、5、7、11。

请改正程序中的错误,使程序能得出正确的结果。

注意:

部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。

#include

#include

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

IsPrime(intn);

{

inti,m;

m=1;

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

for(i=2;i

if!

(n%i)

{

m=0;

break;

}

return(m);

}

main()

{

intj,k;

printf("\nPleaseenteranintergernumberbetween2and10000:

");

scanf("%d",&k);

printf("\nTheprimefactor(s)of%dis(are):

",k);

for(j=2;j

if((!

(k%j))&&(IsPrime(j)))

printf("%4d,",j);

printf("\n");

}

【参考答案】

(1)IsPrime(intn)  

(2)if(!

(n%i))

6、

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

计算并输出给定整数n的所有因子(不包括1与自身)之和。

规定n的值不大于1000。

例如,若主函数从键盘给n输入的值为856,则输出为sum=763。

注意:

部分源程序在文件PROG1.C中。

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

#include

intfun(intn)

{

}

voidmain()

{

intn,sum;

FILE*out;

printf("Inputn:

");

scanf("%d",&n);

sum=fun(n);

printf("sum=%d\n",sum);

/******************************/

out=fopen("out.dat","w");

fprintf(out,"%d\n",fun(123));

fprintf(out,"%d\n",fun(456));

fprintf(out,"%d\n",fun(789));

fprintf(out,"%d\n",fun(147));

fprintf(out,"%d",fun(258));

fclose(out);

/******************************/

}

【参考答案】

intfun(intn)

{

ints=0,i;

for(i=2;i<=n-1;i++)  /*将n减1累加*/

 if(n%i==0)

 s+=i;

returns;

}

【考点分析】

本题考查:

变量数据类型及初始化;循环判断语句;函数返回值。

【解题思路】

本程序的实现步骤为:

(1)遍历从2到n-1的所有整数;

(2)用条件语句找出能被n整除的所有整数,并累加求和;(3)返回值。

斐波那契数列问题

7、

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

用递归算法计算斐波拉契数列中第n项的值。

从第1项起,斐波拉契数列为:

1、1、2、3、5、8、13、21、……

例如,若给n输入7,则该项的斐波拉契数值为13。

请改正程序中的错误,使它能得出正确结果。

注意:

部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。

#include

longfun(intg)

{

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

switch(g);

{case0:

return0;

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

case1;case2:

return1;

}

return(fun(g-1)+fun(g-2));

}

main()

{longfib;intn;

printf("Inputn:

");scanf("%d",&n);printf("n=%d\n",n);

fib=fun(n);

printf("fib=%d\n\n",fib);

}

【参考答案】

(1)去掉分号

(2)case1:

case2:

return1;

【考点分析】

本题考查:

switch语句,其一般形式为:

switch(表达式){

case常量表达式1:

语句1;

case常量表达式2:

语句2;

……

case常量表达式n:

语句n;

default:

语句n+1;

}

其中switch(表达式)后不应该带有";",同时case语句常量后应该是":

"。

【解题思路】

C语言中,switch语句之后不能有分号,并且case语句常量后应用的是冒号。

【举一反三】

该类题型考查较灵活,考生可根据本书第27、52套题进行训练。

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2