C语言程序设计习题试题编程题docx.docx
- 文档编号:2174298
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:25
- 大小:21.84KB
C语言程序设计习题试题编程题docx.docx
《C语言程序设计习题试题编程题docx.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题试题编程题docx.docx(25页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题试题编程题docx
C语言程序设计习题(编程类)
1、从键盘输入任意的字符,按下列规则进行分类计数。
第一类'0','1','2','3','4','5','6','7','8','9'
第二类'+','-','*','/','%','='
第三类其它字符
当输入字符'\'时先计数,然后停止接收输入,打印计数的结果。
参考答案:
#include
voidmain()
{intclass1,class2,class3;
charch;
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':
class1++;break;/*对分类1计数*/
case'+':
case'-':
case'*':
case'/':
case'%':
case'=':
class2++;break;/*对分类2计数*/
default:
class3++;break;/*对分类3计数*/
}
}while(ch!
='\\');/*字符'\'在C程序中要使用转义符'\\'*/printf("class1=%d,class2=%d,class3=%d\n",class1,class2,class3);
}
2、从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结
果输出。
参考答案:
voidmain()
{inti,j,num,a[10]
;
for(i=0
;i<10;i++)
{printf("EnterNo.%d:
",i+1)
;
scanf("%d",&num)
;
for(j=i-1
;j>=0&&a[j]>num
;j--)
a[j+1]=a[j];
a[j+1]=num;
}
for(i=0
;i<10;i++)
printf("No.%d=%d\n",i+1,a[i])
;
}
3、输入一个正整数,要求以相反的顺序输出该数。
例如输入
12345,输出位
54321。
参考答案:
voidmain()
{intn;
printf("Pleaseentern:
");
scanf("%d",&n);
while(n>0)
{printf("%d",n%10);
n=n/10;
}
}
4、编写程序,读入一个整数N;若N为非负数,则计算N到2×N之间的整数和;若N为一个
负数,则求2×N到N之间的整数和。
分别利用
for
和
while
写出两个程序。
参考答案:
voidmain()
{inti,n;
longs1=0,s2=0;
printf("PleaseenterN:
")
scanf("%d",&n);
if(n>=0)
;
for(i=n;i<=2*n
s1=s1+i;
;i++)
else
for(i=n;i>=2*n
s1=s1+i;
;i--)
i=n;
if(i>=0)
while(i<=2*n)
s2=s2+i++;
else
while(i>=2*n)
s2=s2+i--;
printf("Result1=%ldresult2=%ld\n",s1,s2)
}
5、一个自然数被8除余1,所得的商被
个商为a。
又知这个自然数被17除余
编写程序求这个自然数。
参考答案:
;
8除也余1,再将第二次的商被8除后余7,最后得到一
4,?
所得的商被17除余15,最后得到一个商是a的2倍。
voidmain()
{inti,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=%d\n",i);
break;
}
}
}
6、编写程序,输出用一元人民币兑换成
1分、2分和
5分硬币的不同兑换方法。
参考答案:
voidmain()
{intf1,f2,f5,count=0;
for(f5=0;f5<=20;f5++)
for(f2=0;f2<=(100-f5*5)/2
{f1=100-f5*5-f2*2;
if(f5*5+f2*2+f1==100)
;f2++)
printf("No.%2d>>5:
%4d2:
%2d1:
%2d\n",++count,f5,f2,f1);
}
}
7、将一个数的数码倒过来所得到的新数叫原数的反序数。
如果一个数等于它的反序数,则称它为对称数。
求不超过1993的最大的二进制的对称数。
参考答案:
voidmain()
{inti,j,n,k,a[16]={0};
for(i=1;i<=1993;i++)
{n=i;k=0;
while(n>0)/*将十进制数转变为二进制数*/
{a[k++]=n%2;
n=n/2;
}
for(j=0;j if(a[j]! =a[k-j-1])break if(j>=k) {printf("%d: ",i); for(j=0;j printf("%2d",a[j]); ; printf("\n") ; } } } 8、十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小 孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。 然后所有的小孩同时将自己手中 的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。 问经过这样几次调整后大家手中的糖的块数都一样? 每人各有多少块糖? 参考答案: voidmain() {inti,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20}; while (1) {for(i=1;i<=10;i++)a[i-1]=a[i-1]/2+a[i]/2; a[10]=a[10]/2+a[0]; for(i=1;i<=10;i++) if(a[i]%2==1)a[i]++; for(i=1;i<10;i++) if(a[i]! =a[i+1])break; if(i==10)break; else {a[0]=0; count++; } } printf("count=%dnumber=%d\n",count,a[1]); } 9、输入5×5的数组,编写程序实现: (1)求出对角线上各元素的和; (2)求出对角线上行、列下标均为偶数的各元素的积; (3)找出对角线上其值最大的元素和它在数组中的位置。 参考答案: voidmain() {inti,j,s1=0,s2=1,a[5][5]; for(i=0;i<5;i++) for(j=0;j<5;j++) {printf("%d%d: ",i,j); scanf("%d",&a[i][j]); } for(i=0;i<5;i++) {for(j=0;j<5;j++)printf("%5d",a[i][j]); printf("\n"); } j=0; for(i=0;i<5;i++) {s1=s1+a[i][i]; if(i%2==0)s2=s2*a[i][i]; if(a[i][i]>a[j][j])j=i; } printf("SUN=%d\nACCOM=%d\na[%d]=%d\n",s1,s2,j,a[j][j]); } 10、编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。 参考答案: #include"stdio.h" voidmain() {inti,n=0,a[4]={0} ; printf("Pleaseenteradigit: ") ; for(i=0;i<4&&(a[i]=getchar())! ='\n';i++) for(i=0;i<4;i++) if(a[i]>=48&&a[i]<=57)a[i]=a[i]-48; elseif(a[i]>=65&&a[i]<=69)a[i]=a[i]-55; elseif(a[i]>=97&&a[i]<=102)a[i]=a[i]-87; elseprintf("inputError! "); ; for(i=0;i<4;i++) n=n*16+a[i]; printf("%d",n); } 11、编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中。 参考答案: voidmain() {inti,n,k=16,a[16]={0}; printf("Pleaseenteradigit: "); scanf("%d",&n); while(n>0)/*{a[--k]=n%2 将十进制数转变为二进制数; */ n=n/2; } for(i=0;i<16;i++) printf("%2d",a[i]); } 12、对数组A中的N(0<N<100=个整数从小到大进行连续编号,输出各个元素的编号。 要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。 例如数组是: A=(5,3,4,7,3,5,6)则输出为: (3,1,2,5,1,3,4) 参考答案: voidmain() {inti,j,k,n,m=1,r=1,a[2][100]={0} ; printf("Pleaseentern: ") ; scanf("%d",&n) ; for(i=0 ;i {printf("a[%d]=",i) scanf("%d",&a[0][i]) ; ; } while(m<=n)/*m记录已经登记过的数的个数 {for(i=0;i */ */ {if(a[1][i]! =0)/* 已登记过的数空过 */ continue
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题 试题 编程 docx