没有合适的资源?快使用搜索试试~ 我知道了~
C语言程序设计习题试题(编程题).doc
0 下载量 61 浏览量
2022-11-15
08:00:31
上传
评论
收藏 63KB DOC 举报
温馨提示
试读
12页
C语言程序设计习题试题(编程题).doc
资源推荐
资源详情
资源评论
.
部分内容来源于网络,有侵权请联系删除!
C 语言程序设计习题(编程类)
1、从键盘输入任意的字符,按下列规则进行分类计数。
第一类 '0','1','2','3','4','5','6','7','8','9'
第二类 '+','-','*','/','%','='
第三类 其它字符
当输入字符'\'时先计数,然后停止接收输入,打印计数的结果。
参考答案:
#include <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':
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", class1, class2, class3);
}
2、从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结
果输出。
参考答案:
void main( )
{ int i,j,num,a[10];
for(i=0;i<10;i++)
{ printf("Enter No. %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", i+1, a[i]);
}
.
部分内容来源于网络,有侵权请联系删除!
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、编写程序,读入一个整数N;若N为非负数,则计算N到 2×N之间的整数和;若N为一个
负数,则求2×N到N之间的整数和。分别利用 for 和 while 写出两个程序。
参考答案:
void main()
{ 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;
else
for(i=n;i>=2*n;i--)
s1=s1+i;
i=n;
if(i>=0)
while(i<=2*n)
s2=s2+i++;
else
while(i>=2*n)
s2=s2+i--;
printf("Result1=%ld result2=%ld\n",s1,s2);
}
5、一个自然数被 8 除余 1,所得的商被 8 除也余 1,再将第二次的商被 8 除后余 7,最后得到一
个商为a。又知这个自然数被 17 除余 4,�所得的商被 17 除余 15,最后得到一个商是a的 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=%d\n",i);
break;
}
}
}
6、编写程序,输出用一元人民币兑换成 1 分、2 分和 5 分硬币的不同兑换方法。
参考答案:
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: %2d\n",++count,f5,f2,f1);
}
}
7、将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它
为对称数。求不超过 1993 的最大的二进制的对称数。
参考答案:
void main()
{ int i,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<k;j++)
if(a[j]!=a[k-j-1]) break;
if(j>=k)
剩余11页未读,继续阅读
资源评论
Mmnnnbb123
- 粉丝: 679
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功