C语言上机练习题.docx
《C语言上机练习题.docx》由会员分享,可在线阅读,更多相关《C语言上机练习题.docx(27页珍藏版)》请在冰豆网上搜索。
C语言上机练习题
1.输入一个不超过五位的正整数,输出其逆数。
例如输入12345,输出应为54321。
#include"stdio.h"
main()
{
longn;
intww,qw,bw,sw,gw;
printf("Pleaseinput:
\n");
scanf("%ld",&n);
while(n<=0||n>99999)
{
printf("\nThenumberistoolittleortoolarge.Retryplease!
\n");
scanf("%ld",&n);
}
if(n>=10000&&n<=99999)
{
ww=n/10000;
qw=n/1000%10;
bw=n/100%10;
sw=n/10%10;
gw=n%10;
printf("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%d%d%d%d%d\n",gw,sw,bw,qw,ww);
}
elseif(n>=1000&&n<=9999)
{
qw=n/1000;
bw=n/100%10;
sw=n/10%10;
gw=n%10;
printf("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%d%d%d%d\n",gw,sw,bw,qw);
}
elseif(n>=100&&n<=999)
{
bw=n/100;
sw=n/10%10;
gw=n%10;
printf("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%d%d%d\n",gw,sw,bw);
}
elseif(n>=10&&n<=99)
{
sw=n/10;
gw=n%10;
printf("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%d%d\n",gw,sw);
}
elseprintf("Theoldnumberequalsthenewnumber:
%ld",n);
}
2.计算1+2+3…+n的值,n是从键盘输入的自然数。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
main()
{
intn,i;
longsum=0;
printf("1+2+3+....+n\n");
printf("Pleaseinputn:
\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=i;
}
printf("sum=%ld",sum);
}
3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。
、
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
#defineN20
main()
{
inta[N],i,sum=0,count=0;
printf("Pleaseinputnumbers:
\n");
for(i=0;i{scanf("%d",&a[i]);
if(a[i]>0)
{sum+=a[i];
count++;
}
}
printf("count=%d,sum=%d",count,sum);
}
4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
#defineN5
main()
{inta[N],b[N],i;
printf("Pleaseinputnumbers:
\n");
for(i=0;i{scanf("%d",&a[i]);
b[N-i-1]=a[i];
}
printf("\nTheoldnumbersare:
\n");
for(i=0;iprintf("%-4d",a[i]);
printf("\nThenewnumbersare:
\n");
for(i=0;iprintf("%-4d",b[i]);
}
5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
main()
{inti,j,k,n;
for(i=1;i<=10;i++)
for(j=1;j<=25;j++)
for(k=1;k<=50;k++)
for(n=1;n<=100;n++)
if(i*50+j*20+k*10+n*5==500)printf("num50=%d,num20=%d,num10=%d,num5=%d\n",i,j,k,n);
}
6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。
例如若n为1000时,函数值应为:
s=153.909064。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
#include"math.h"
main()
{intn,s,i;
floatsum=0;
printf("Pleaseinputn:
\n");
scanf("%d",&n);
while(n<=0)
{
printf("\nErrorinput.Retryplease:
\n");
scanf("%d",&n);
}
for(i=1;iif(i%3==0&&i%7==0)
sum+=i;
printf("Thenumberis:
%4.2f",sqrt(sum));
}
7.一辆卡车违反交通规则,撞人后逃跑。
现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。
甲说:
牌照的前两位数字是相同的;乙说:
牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:
四位的车号刚好是一个整数的平方。
请根据以上线索找出车号。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
#include"math.h"
main()
{
inti,qw,bw,sw,gw;
for(i=1122;i<=9988;i++)
{if(sqrt(i)!
=(int)sqrt(i))
continue;
qw=i/1000;
bw=i/100%10;
sw=i/10%10;
gw=i%10;
if(qw==bw&&sw==gw)
{
printf("\nThenumberis:
%d\n",i);
break;
}
}
8.输入1~10之间的一个数字,输出它对应的英文单词。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
main()
{
intn;
printf("Pleaseinputn:
\n");
scanf("%d",&n);
while(n<1||n>10)
{
printf("Errorinput!
Retryplease:
\n");
scanf("%d",&n);
}
switch(n)
{
case1:
printf("One!
");break;
case2:
printf("Two!
");break;
case3:
printf("Three!
");break;
case4:
printf("Four!
");break;
case5:
printf("Five!
");break;
case6:
printf("Six!
");break;
case7:
printf("Seven!
");break;
case8:
printf("Eight!
");break;
case9:
printf("Nine!
");break;
case10:
printf("Ten!
");break;
}
}
9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些?
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
main()
{
inti,count=0;
for(i=106;i<596;i=i+10)
{
if(i%3==0&&i%5!
=0)
{
printf("%-4d",i);
count++;
}
}
printf("count=%-4d",count);
}
10.用自然语言描述程序逻辑如下,试写程序。
①设置环境;
②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0;
③i=1;
④如果i≤100,则转⑤,否则转⑧;
⑤令s=0,求前i个自然数之和,并放于变量s之中;
⑥sum=sum+s;
⑦i增加1,转④;
8输出和sum,结束。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
main()
{
inti,j;
longs=0,sum=0;
printf("1+1+2+1+2+3+1+2+3+4+....1+2+3+..+n\n");
i=1;
while(i<=3)
{
s+=i;
sum+=s;
i++;
}
printf("sum=%ld",sum);
}
11.用自然语言描述的程序逻辑为:
①设置环境;
②定义变量i、flag和password,并令flag=0,i=0;
③用户回答口令,将其赋于password变量;
④口令正确?
如果是,则flag=1,转⑥。
否则转⑤;
⑤回答三次口令了吗?
如果没有,计数器加1后(i++),转③,否则转⑥;
6根据flag之值输出相应信息。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
#include"string.h"
#defineN6
main()
{
inti=0,flag=0;
charpassword[N];
printf("Thepasswordis:
123456\n");
while(i<3)
{
gets(password);
if(strlen(password