教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

C语言实验与习题(注释版)(14)

来源:网络收集 时间:2026-04-25
导读: 期末复习题集 /**/ sum++; /**/ } printf(\ getch(); } #include #include void main() { int hcf(int,int); int a,b,k; printf(\ b: \ scanf(\注意scanf的格式,此处输入用空格或回车隔开 k=hcf(/**/ a,b /**/); p

期末复习题集

/**/ sum++; /**/ }

printf(\ getch(); }

#include #include void main() {

int hcf(int,int); int a,b,k;

printf(\ b: \

scanf(\注意scanf的格式,此处输入用空格或回车隔开 k=hcf(/**/ a,b /**/); printf(\ getch(); }

辗转相除法 :1. a ÷ b,令r为所得余数(0≤r<b)若 r = 0,算法结束;b 即为答案。 2. 互换:置 a←b,b←r,并返回第一步。 int hcf(int x,int y) {

int r;

r=x%y; while( r!=0 ) { x=y;

y=/**/ r /**/; r=x%y ; }

return (/**/ y /**/); }

#include #include void main()

46

C语言练习题

{

char s1[100], s2[100]; int i,len;

printf(\

gets(s1); 接收用户输入的字符到数组str内

len = strlen(s1); 算出str内存放的字符串所包含的字符个数

for(i=0; i

{由下面的puts(s2)可知,要将转换后的字符串存放在s2里,故下面if else语句中执行的赋值语句应赋值给s2[i]

if( s1[i] >= '1' && s1[i] <= '9') 当前字符是1~9之间的字符则将其-1 /**/ s2[i]=s1[i]-1; /**/

else if( s1[i] == '0' ) 当前字符是?0?将其转换为?9?,注意此处应给的是字符?9?而不是数字,即单引号不要忘了

/**/ s2[i]='9'; /**/ else

s2[i] = s1[i]; }

s2[i] =/**/ '\\0' /**/; 字符串以?\\0?做为结束标志 puts(s2); getch(); }

#include #include

void sct(char s1[],/**/ char s2[] /**/) 由main函数里的函数调用可知,此处应再设一个字符型数组

{ 让p1指向数组s1,并通过while循环使其指向s1里存放的字符串末尾,然后再通过p2将字符另一个字符串的内容连接到s1的末尾 char * p1,*p2;

p1=/**/ s1 /**/; 让p1指向数组s1 p2=s2;

while(*p1) 通过while循环可使p1指向字符串结尾,因字符串结尾是?\\0?其值为0,故当*p1==?\\0?时即*p1==0此时就跳出while循环 p1++;

while(*p2) 将字符串s2连接到s1末尾 *(p1++) = *(p2++); }

void main() {

char str1[60]=\

sct(/**/ str1 /**/ ,str2); 将数组做为形参,写数组名即可

47

期末复习题集

printf(\ getch(); }

3. 改错题

#include void main() {

int a,b,c;

/**/ float f; /**/ f为小数类型,具体下方f的输出用%f可看出为float 类型 clrscr();

printf(\

scanf(\变量a,b必须取地址,除非数组名不取地址,因数组名就是地址

f=/**/ (float)a/b; /**/ a,b均为整数,要获得结果的小数部分必须进行强制类型转换 c=(int)((f-(int)f)*10);

printf(\ %d\\n\ getch(); }

#include

void find(/**/int m /**/)参数类型必须指出, 具体main函数中调用find函数的参数k为int类型,所以对应的参数m也是int类型 {

int a1,a2;

a1=m; 求m的个位 a2=m/10; 求m的十位

if(m%3==0 &&(/**/ a1==4 || a2==4 /**/))如果m能被3整除且个位或者十位是4 printf(\则输出m }

void main() { int k;

for(k=10;k<=99;k++)k从10到99,一一尝试

/**/ find( k ) /**/;调用函数find,函数的作用是寻找满足条件的数 getch(); }

48

C语言练习题

#include void main() {

/**/ int a,tag; /**/语法错误c语言的变量区分大小写,程序中用到小写tag,此处改为小写 int num1=0,num2=0; num1和num2分别为大于个数和小于个数的计数器,程序开始归零 clrscr();

printf(\

scanf(\语法错误变量a需取地址,输入第一个数 tag=a;将第一个数放入tag中

while(a)程序以0结束,循环的条件为:只要不输入0 { scanf(\程序循环输入数字,存入a

/**/ if(!a) /**/ continue;逻辑错误,程序执行的条件,a不为0 else if(atag) num2++;如果a中数比tag大,计数器num2增加1 }

printf(\ getch(); }

#include

long int fsum(int n) fsum函数用于求阶乘 {

long int k; if(n==1)

/**/ k=1 /**/;逻辑错误,1的阶乘为1 else

k=n*fsum(n-1);n的阶乘为n-1的阶乘乘以n return (/**/ k /**/);逻辑错误,运算结果在k中 }

void main() { int i;

long int sum; sum=0;

for(i=1;i<=9;/**/ i++,i++ /**/)语法错误for语句格式不符 sum+=fsum(i);

printf(\ getch(); }

49

期末复习题集

#include void main() { int i,a=0;

/**/char c1,c2; /**/ 语法错误c1,c2为字符类型,程序中用getchar()获取 clrscr();

printf(\ c2=getchar();

/**/ for(i=1;i<=7;i++) /**/语法错误for语句中间为; { c1=getchar(); a=a*2+c1-'0'; }

/**/ if (c2=='1') /**/ a=(-1)*a;如果依照题意c2=='1',a是负数 printf(\ getch(); }

#include void main( ) {

int i,n;

/**/ n = 0; /**/n为计数器,从0开始

for(i=10;i<=100;i++)判断10-99是否是对称数

if(i/10==i) i/10得到十位,i得到个位,若相等则是对称数 {printf(\输出对称数 n++;计数器增加1

if(/**/ n%9==0 /**/)语法错误表示相等的关系用双等号; printf(\9个数一行输出,换行 }

for(i=100;i<=999;i++)判断100-999是否是对称数

if(/**/ i/100==i /**/) i/100得到百位,i得到个位,若相等则是对称数 {printf(\ n++;

if(n%9==0)

printf(\ } getch(); }

50

…… 此处隐藏:1087字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言实验与习题(注释版)(14).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/520907.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)