c语言编写函数的例题,C语言程序设计习题题编程题

《C语言程序设计习题题编程题》由会员分享,可在线阅读,更多相关《C语言程序设计习题题编程题(22页珍藏版)》请在人人文库网上搜索。

1、C语言程序设计习题(编程类) 1、从键盘输入任意的字符,按下列规则进行分类计数。 第一类 0,1,2,3,4,5,6,7,8,9 第二类 +,-,*,/,%,= 第三类 其它字符 当输入字符时先计数,然后停止接收输入,打印计数的结果。 参考答案: #include void main( ) int class1, class2, class3; char ch; class1=class2=class3=0; /* 初始化分类计数器 */ do ch=getch( ); switch(ch) case 0: case 1: case 2: case 3: case 4: case 5: cas。

2、e 6: case 7: case 8: case 9: class1+; break; /* 对分类计数 */ case +: case -: case *: case /: case %: case =: class2+; break; /* 对分类计数 */ default: class3+; break; /* 对分类计数 */ while (ch!= ); /* 字符在C程序中要使用转义符 */ printf(class1=%d, class2=%d, class3=%dn, class1, class2, class3); 2、从键盘输入十个整数,用插入法对输入的数据按照从小到大的。

3、顺序进行排序,将排序后的结果输出。 参考答案: void main( ) int i,j,num,a10; for(i=0;i=0&ajnum;j-) aj+1=aj; aj+1=num; for(i=0;i0) printf(%d,n_x0010_); n=n/10; 4、编写程序,读入一个整数;若为非负数,则计算到2之间的整数和;若为一个负数,则求到之间的整数和。分别利用for和while写出两个程序。 参考答案: void main() int i,n; long s1=0,s2=0; printf(Please enter N:); scanf(%d,&n); if(n=0) for(。

4、i=n;i=2*n;i-) s1=s1+i; i=n; if(i=0) while(i=2*n) s2=s2+i-; printf(Result1=%ld result2=%ldn,s1,s2); 5、一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为。又知这个自然数被17除余4,?所得的商被17除余15,最后得到一个商是的2倍。编写程序求这个自然数。 参考答案: void main( ) int i,n,a; for(i=0; ;i+) if(i%8=1) n=i/8; 2 if(n%8=1) n=n/8; if(n%8=7) a=n/8; if(i=4。

5、) n=i/17; if(n=15) n=n/17; if(2*a=n) printf(esult=%dn,i); break; 6、编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。 参考答案: void main( ) int f1,f2,f5,count=0; for(f5=0;f5 5: M 2: - 1: -n,+count,f5,f2,f1); 7、将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过1993的最大的二进制的对称数。 参考答案: void main() int i,j,n,k,a16=0; for(i=。

6、1;i0) /* 将十进制数转变为二进制数 */ ak+=n%2; n=n/2; for(j=0;j=k) 3 printf( %d: ,i); for(j=0;jajj) j=i; printf(SUN=%dnACCOM=%dna%d=%dn,s1,s2,j,ajj); 10、编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。 参考答案: #include stdio.h void main() int i,n=0,a4=0; printf(Please enter a digit:); for(i=0;i=48&ai=65&ai=97&ai0) /* 将十进制数转变为。

7、二进制数 */ a-k=n%2; n=n/2; 5 for(i=0;i=10;t+) at=(i%k)/(k/10); 6 k/=10; if(f(a0)+f(a1)+f(a2)=i) printf(%d ,i); f(m) int m; int i=0,t=1; while(+ibj) ck+=bj+; /* 将ai、bj中的小者存入ck */ else ck+=ai+; 7 if(ai-1=bj) j+; /* 如果a、b当前元素相等,删掉一个 */ while(i0) ak=n%2; turn(n/2,a,k-1); else return; void main() int i,n,a1。

8、6=0; printf(Please enter n:); scanf(%d,&n); turn(n,a,15); for(i=0;i=q) printf(YESn); 19、编写程序,其中包括一个函数,此函数的功能是:对一个长度为N 的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M=p) *(q+1)=*q-; *+q=*s2+; p+; 21、编写程序将输入的两行字符串连接后,将串中全部空格移到串首后输出。 参考答案: strcnb(s1,s2) char s1,s2; char *p; int i=1; p=s1; while(*p!=0) p+; whil。

9、e(*p+=*s2+)!=0) ; /* 将s2接于s1后面 */ p=s1; while(*p!=0) /* 扫描整个字符串 */ if(*p= ) /* 当前字符是空格进行移位 */ while(*(p+i)= ) i+; /* 寻找当前字符后面的第一个非空格 */ if(*(p+i)!=0) *p=*(p+i); /* 将非空格移于当前字符处 */ *(p+i)= ; /* 被移字符处换为空格 */ 10 else break; /* 寻找非空格时到字符串尾,移位过程结束 */ p+; 22、编写程序,输入字符串,分别统计字符串中所包含的各个不同的字符及其各自字符的数量。如:输入字符串:。

10、 abcedabcdcd 则输出:a=2 b=2 c=3 d=3 e=1。 参考答案: #include stdio.h struct strnum int i; char ch; void main( ) char c; int i=0,k=0; struct strnum s100=0,NULL; while(c=getchar()!=n) for(i=0;si.i!=0;i+) if(c=si.ch) si.i+; break; if(si.i=0) sk.ch=c; sk+.i=1; i=0; while(si.i0) printf(%c=%d ,si.ch,si.i); i+; 23。

11、、编写程序,读入磁盘上语言源程序文件瑜獥?挮,删去程序中的注释后显示。 参考答案: #include stdio.h FILE *fp; void main( ) int c, d; if(fp = fopen(d:tctest8.c,) = NULL) exit(0); 11 while(c=fgetc(fp) != EOF) if( c=/ ) /* 如果是字符注释的起始字符/ */ if(d=fgetc(fp) = *) /* 则判断下一个字符是否为* */ in_comment(); /* 调用函数处理(删除)注释 */ else /* 否则原样输出读入的两个字符 */ putchar。

12、(c); putchar(d); else if( c= | c=) /* 判断是否是字符或 */ echo_quote(c); /* 调用函数处理字符或包含的字符 */ else putchar(c); in_comment() int c, d; c=fgetc(fp); d=fgetc(fp); while( c!=* | d!=/ ) /* 连续的两个字符不是 * 和 / 则继续处理注释 */ c = d; d = fgetc(fp); echo_quote (c) int c; /* c中存放的是定界符或 */ int d; putchar(c); while( d=fgetc(fp)!=c) /* 读入下一个字符判断是否是定界符c */ putchar(c); /* 当不是定界符c时继续循环 */ if(d=) /* 若出现转义字符 */ putchar( fgetc(fp); /* 则下一个字符不论是何均原样输出 */ putchar(d); 12。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值