C语言程序设计习题试题(编程题)



《C语言程序设计习题试题(编程题)》由会员分享,可在线阅读,更多相关《C语言程序设计习题试题(编程题)(12页珍藏版)》请在文档大全上搜索。
1、C语言程序设计习题(编程类)1、从键盘输入任意的字符,按下列规则进行分类计数。 第一类 '0','1','2','3','4','5','6','7','8','9' 第二类 '+','-','*','/','%','=' 第三类 其它字符当输入字符''时先计数,然后停止接收输入,打印计数的结果。参考答案:#include &
2、lt;stdio.h>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': case '6': case '7': case '8': case '9
3、39;:class1+; break; /* 对分类计数 */case '+': case '-': case '*': case '/': case '%': case '=':class2+; break; /* 对分类计数 */default: class3+; break; /* 对分类计数 */while (ch!= ''); /* 字符''在C程序中要使用转义符'' */printf("class1=%d, class2=%d,
4、class3=%dn", class1, class2, class3);2、从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。参考答案:void main( ) int i,j,num,a10;for(i=0;i<10;i+) printf("Enter No. %d:", i+1);scanf("%d",&num);for(j=i-1;j>=0&&aj>num;j-)aj+1=aj;aj+1=num;for(i=0;i<10;i+)printf (&quo
5、t;No.%d=%dn", i+1, ai);3、输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出位54321。参考答案:void main() int n;printf("Please enter n:");scanf("%d",&n);while(n>0) printf("%d",n%10);n=n/10; 4、编写程序,读入一个整数;若为非负数,则计算到2×之间的整数和;若为一个负数,则求×到之间的整数和。分别利用for和while写出两个程序。参考答案:void m
6、ain() int i,n;long s1=0,s2=0;printf("Please enter N:");scanf("%d",&n);if(n>=0)for(i=n;i<=2*n;i+)s1=s1+i;elsefor(i=n;i>=2*n;i-)s1=s1+i;i=n;if(i>=0)while(i<=2*n)s2=s2+i+;elsewhile(i>=2*n)s2=s2+i-;printf("Result1=%ld result2=%ldn",s1,s2);5、一个自然数被8除余1,
7、所得的商被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;if(n%8=1) n=n/8;if(n%8=7) a=n/8;if(i%17=4) n=i/17;if(n%17=15) n=n/17;if(2*a=n) printf("result=%dn",i);break;6、编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。参考答案:
8、void main( ) int f1,f2,f5,count=0;for(f5=0;f5<=20;f5+)for(f2=0;f2<=(100-f5*5)/2;f2+) f1=100-f5*5-f2*2;if(f5*5+f2*2+f1=100)printf("No.%2d >> 5: %4d 2: %2d 1: %2dn",+count,f5,f2,f1); 7、将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过1993的最大的二进制的对称数。参考答案:void main() int i,j,n,k,a
9、16=0;for(i=1;i<=1993;i+) n=i;k=0;while(n>0) /* 将十进制数转变为二进制数 */ ak+=n%2;n=n/2;for(j=0;j<k;j+)if(aj!=ak-j-1) break;if(j>=k) printf(" %d: ",i);for(j=0;j<k;j+)printf("%2d",aj);printf("n"); 8、十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第
10、七个小孩10块,第八个小孩6块,第九个小孩14 块,第十个小孩20块。然后所有的小孩同时将自己手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次调整后大家手中的糖的块数都一样?每人各有多少块糖?参考答案:void main() int i,count=0,a11=0,10,2,8,22,16,4,10,6,14,20;while(1) for(i=1;i<=10;i+)ai-1=ai-1/2+ai/2;a10=a10/2+a0;for(i=1;i<=10;i+)if(ai%2=1) ai+;for(i=1;i<10;i+)if(ai!=ai+1) br
11、eak;if(i=10) break;else a0=0;count+;printf("count=%d number=%dn",count,a1);9、输入5×5的数组,编写程序实现:(1)求出对角线上各元素的和;(2)求出对角线上行、列下标均为偶数的各元素的积;(3)找出对角线上其值最大的元素和它在数组中的位置。参考答案:void main() int i,j,s1=0,s2=1,a55;for(i=0;i<5;i+)for(j=0;j<5;j+) printf("%d %d: ",i,j);scanf("%d&quo