C语言上机练习题_c语言上机练习题
C语言上机练习题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言上机练习题”。
上机练习题
1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。
/* Note:Your choice is C IDE */ #include “stdio.h” main(){ long n;int ww,qw,bw,sw,gw;printf(“Please input:n”);scanf(“%ld”,&n);while(n99999){
printf(“nThe number is 2 little or too large.Retry please!n”);
scanf(“%ld”,&n);} if(n>=10000&&n
ww=n/10000;qw=n/1000%10;bw=n/100%10;sw=n/10%10;gw=n%10;printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%d%d%dn”,gw,sw,bw,qw,ww);} else if(n>=1000&&n
qw=n/1000;
bw=n/100%10;
sw=n/10%10;
gw=n%10;
printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%d%dn”,gw,sw,bw,qw);
} else if(n>=100&&n
bw=n/100;
sw=n/10%10;
gw=n%10;
printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%dn”,gw,sw,bw);}
else if(n>=10&&n
{
sw=n/10;
gw=n%10;
printf(“The old number is:%ldn”,n);
printf(“The new number is:%d%dn”,gw,sw);
}
else printf(“The old number equals the new number:%ld”,n);
}
2.计算1+2+3„+n的值,n是从键
盘输入的自然数。
/* Note:Your choice is C IDE */ #include “stdio.h” main(){
int n,i;long sum=0;
printf(“1+2+3+....+nn”);printf(“Please input n:n”);
scanf(“%d”,&n);for(i=1;i
sum+=i;
}
printf(“sum=%ld”,sum);}
3.从终端(键盘)读入20个数据
到数组中,统计其中正数的个数,并计算这些正数之和。、/* Note:Your choice is C IDE */ #include “stdio.h” #define N 20 main(){
int a[N],i,sum=0,count=0;printf(“Please input numbers :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:Your choice is C IDE */ #include “stdio.h” #define N 5 main(){ int a[N],b[N],i;printf(“Please input numbers:n”);for(i=0;i
b[N-i-1]=a[i];} printf(“nThe old numbers are:n”);for(i=0;i
printf(“%-4d”,a[i]);printf(“nThe new numbers are:n”);for(i=0;i
printf(“%-4d”,b[i]);} 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。/* Note:Your choice is C IDE */ #include “stdio.h” main(){ int i,j,k,n;for(i=1;i
for(j=1;j
for(k=1;k
for(n=1;n
if(i*50+j*20+k*10+n*5==500)
printf(“num50=%d,num20=%d,num10=%d,num5=%dn”,i,j,k,n);}
6.求n以内(不包括n)同时能被
3和7整除的所有自然数之和的平方根s,n从键盘输入。例如若n为1000时,函数值应为:s=153.909064。
/* Note:Your choice is C IDE */ #include “stdio.h” #include “math.h” main()
{ int n,s,i;float sum=0;printf(“Please input n:n”);
scanf(“%d”,&n);while(n
printf(“nError input.Retry please:n”);
scanf(“%d”,&n);}
for(i=1;i
if(i%3==0&&i%7==0)
sum+=i;printf(“The number is:%4.2f”,sqrt(sum));}
7.一辆卡车违反交通规则,撞人后
逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。/* Note:Your choice is C IDE */ #include “stdio.h” #include “math.h” main(){
int i,qw,bw,sw,gw;
for(i=1122;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(“nThe number is:%dn”,i);
break;
}
} 8.输入1~10之间的一个数字,输出它对应的英文单词。
/* Note:Your choice is C IDE */ #include “stdio.h” main(){ int n;printf(“Please input n:n”);scanf(“%d”,&n);while(n10){
printf(“Error input!Retry please:n”);
scanf(“%d”,&n);} switch(n){
case 1:printf(“One!”);break;
case 2:printf(“Two!”);break;
case 3:printf(“Three!”);break;
case 4:printf(“Four!”);break;
case 5:printf(“Five!”);break;
case 6:printf(“Six!”);break;
case 7:printf(“Seven!”);break;
case 8:printf(“Eight!”);break;
case 9:printf(“Nine!”);break;
case 10:printf(“Ten!”);break;} } 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些?
/* Note:Your choice is C IDE */ #include “stdio.h” main(){
int i,count=0;
for(i=106;i
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,转④; ⑧ 输出和sum,结束。
/* Note:Your choice is C IDE */
#include “stdio.h” main(){
int i,j;
long s=0,sum=0;
printf(“1+1+2+1+2+3+1+2+3+4+....1+2+3+..+nn”);i=1;
while(i
s+=i;sum+=s;i++;}
printf(“sum=%ld”,sum);} 11.用自然语言描述的程序逻辑为:
① 设置环境;
② 定义变量i、flag和paword,并令flag=0,i=0;
③ 用户回答口令,将其赋于paword变量;
④ 口令正确?如果是,则flag=1,转⑥。否则转⑤;
⑤ 回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥;
⑥ 根据flag之值输出相应信息。
/* Note:Your choice is C IDE */ #include “stdio.h” #include “string.h”
#define N 6 main(){ int i=0,flag=0;char paword[N];printf(“The paword is:123456n”);while(i
if(strlen(paword)!=6)
{ printf(“The string length is wrong!Retry please!n”);
i++;
continue;
}
if(strcmp(“123456”,paword)==0)
{flag=1;break;}
else { printf(“Wrong input!Retry please!n”);i++;} } if(flag==1)printf(“Right paword!n”);else printf(“Wrong paword!n”);}
12.用自然语言描述的程序逻辑如
下:
① 设置环境;
② 定义变量digit、x、y分别表示原始数、原始数的个位数和逆数;
③ 输入原始正整数x;
④ 从x中分解出个位数字digit;
⑤ 合并个位digit至逆数y中;
⑥ 原始数x缩小10倍:x=x/10;
⑦ 如果x非零,则转④; ⑦ 输出逆数y,结束
/* Note:Your choice is C IDE */
#include “stdio.h” main(){
long digit,x,y;/*个位数、原始数、逆数*/
printf(“Please input the old number:n”);scanf(“%ld”,&x);digit=x%10;y=digit;while(x!=0){
x=x/10;
digit=x%10;
y=y*10+digit;}
printf(“x=%ld,y=%ld”,x,y/10);}
13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构成)。/* Note:Your choice is C IDE */ #include “stdio.h” main(){
float a,b,c,flag;/*flag=0不能,flag=1等边,flag=2等腰,flag=3任意*/
printf(“Please input angles:n”);
scanf(“%f,%f,%f”,&a,&b,&c);if(a+b
flag=2;
else flag=3;if(flag==0)printf(“nCan not!n”);if(flag==1)printf(“nDeng Bian.n”);if(flag==2)printf(“nDeng Yao.n”);if(flag==3)printf(“nPu tong.n”);} 14.输入10个数,分别统计其中正数、负数、零的个数。#include “stdio.h” #define N 10 main(){ int a[N];int i,count1=0,count2=0,count3=0;/*count1记录正数个数,count2记录负数个数,count3记录0的个数*/ printf(“Please input numbers:n”);for(i=0;i
scanf(“%d”,&a[i]);
if(a[i]>0)count1++;
if(a[i]
if(a[i]==0)count3++;} printf(“count1=%-4d,count2=%-4d,count3=%-4d”,count1,count2,count3);} 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)/* Note:Your choice is C IDE */ #include “stdio.h” #define N 100
#include #include main(){
int a[N],i;printf(“Please input numbers:n”);randomize();
for(i=0;i
{ a[i]=random(900)+100;printf(“%-4d”,a[i]);}
printf(“n--------------------n”);
printf(“n3,5,7:n”);for(i=0;i
if(a[i]%3==0&&a[i]%5==0&&a[i]%7==0)
printf(“%-4d”,a[i]);}
16.用for编程找出100~200中的完
全平方数。
#include “stdio.h” #include “math.h” main(){
int i;
for(i=100;i
printf(“%-4d”,i);}
17.从终端输入三个正实数,判断这
三个数能否构成直角三角形。#include “stdio.h” main(){
float a,b,c,flag;/*flag=0不能,flag=1能*/ printf(“Please input angles:n”);
scanf(“%f,%f,%f”,&a,&b,&c);while(a
scanf(“%d,%d,%d”,&a,&b,&c);} if(a+b
flag=1;
else flag=0;if(flag==1)printf(“nCan!”);else printf(“nCan not!”);} 18.输入一行字符,统计其中有多少个字母(包括大写字母和小写字母)。
/* Note:Your choice is C IDE */ #include “stdio.h” #define N 10 #include “stdlib.h” #include “ctype.h” #include “string.h” main(){ char c[N];int i,count=0;gets(c);i=0;while(i!=strlen(c)){
if(isupper(c[i])||islower(c[i]))
count++;i++;}
printf(“count=%-4d”,count);getch();} 19.输入一个字串,判断它是否是对称串。如”abcdcba”是对称串,”123456789”不是。
/* Note:Your choice is C IDE */ #include “stdio.h” #include “string.h” #include “ctype.h” #include “stdlib.h” #define N 10 main(){ char a[N],b[N],i;
printf(“Please input the string:n”);gets(a);
if(strlen(a)>N)
{
printf(“Wrong input!Retry please!n”);
gets(a);
}
strcpy(b,a);strrev(a);
if(strcmp(a,b)==0)
printf(“nYes!n”);else printf(“nNo!n”);}
20.随机产生N个大写字母输出,然
后统计其中共有多少个元音字符。(设N为200)
/* Note:Your choice is C IDE */
#include “stdio.h” #include #include #define N 200 main(){
int c[N],i,count=0;randomize();for(i=0;i
c[i]=random(27)+65;printf(“ %c”,c[i]);
if(c[i]=='A'||c[i]=='E'||c[i]=='I'||c[i]=='O'||c[i]=='U')count++;}
printf(“n----------------------n”);
printf(“ncount=%-4d”,count);}
找出三位自然数中的所有素数,要求判断x素数用自定义函数data(x)实现。
#include “stdio.h” int data(int x);main(){ int i,flag=0;/*1是,0否*/ for(i=101;i
int data(int x){ int i;for(i=2;i
printf(“n----------------n”);
for(i=1;i
satr(m);
printf(“n”);} } void satr(int m){ int i;for(i=1;i
printf(“#”);} 22.若ax2+bx+c=0有实根,则求之。#include “stdio.h”
#include “math.h” main(){
int a,b,c;
float derta,x1,x2;printf(“Please input a,b,c:n”);
printf(“a=”);scanf(“%d”,&a);printf(“b=”);
scanf(“%d”,&b);printf(“c=”);scanf(“%d”,&c);
derta=b*b-4*a*c;if(derta
printf(“NO!n”);if(derta==0)
{ printf(“One!n”);
x1=-b/(2*a);
x2=x1;
printf(“x=%-4.2f”,x1);
}
if(derta>0)
{ printf(“Two!n”);
x1=(-b+sqrt(derta))/(2*a);
x2=(-b-sqrt(derta))/(2*a);printf(“x1=%-4.2f,x2=%-4.2f”,x1,x2);
} }
23.从键盘输入两个字串,判断它们
是否相同。
#include “stdio.h” #include “string.h” #define N 20 main(){
char c1[N],c2[N];
printf(“Please input two string below:n”);gets(c1);gets(c2);
printf(“--------------------n”);
printf(“The answer is:”);if(strcmp(c1,c2)==0)
printf(“Equal!n”);
else printf(“Not equal!n”);} 24.从键盘输入两个字串,输出其中较短的那个字串,并输出它的长度。
#define N 20 #include “stdio.h” #include “string.h”
main(){ char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);printf(“--------------------n”);printf(“The answer is:”);if(strlen(c1)==strlen(c2)){ puts(c1);
puts(c2);
printf(“The length is:%dn”,strlen(c1));} if(strlen(c1)
printf(“The length is:%dn”,strlen(c1));}
if(strlen(c1)>strlen(c2)){
puts(c2);
printf(“The length is:%dn”,strlen(c2));} 25.从键盘输入长度不等的两个字串,将短串连接于长串之后输出。
#include “stdio.h” #include “string.h” #define N 20 main(){char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);while(strlen(c1)==strlen(c2)){ printf(“Wrong input!Retry please:n”);gets(c1);gets(c2);}
printf(“--------------------n”);
printf(“The answer is:”);if(strlen(c1)
if(strlen(c1)>strlen(c2))puts(strcat(c1,c2));}
26.从键盘输入长度不等的两个字
串,将长串连接于短串之后输出 #include “stdio.h” #include “string.h” #define N 20 main()
{ char c1[N],c2[N];
printf(“Please input two string below:n”);gets(c1);gets(c2);
while(strlen(c1)==strlen(c2)){
printf(“Wrong input!Retry please:n”);
gets(c1);
gets(c2);}
printf(“--------------------n”);
printf(“The answer is:”);
if(strlen(c1)
puts(strcat(c1,c2));
if(strlen(c1)>strlen(c2))
puts(strcat(c2,c1));}
27.随机产生N个两位自然数,降序
排列后输出。(设N为20)#include “stdio.h” #include “stdlib.h” #include “time.h” #define N 20 main()
{ int a[N],i,j,temp;randomize();
for(i=0;i
a[i]=random(900)+100;for(i=0;i
for(j=i+1;j
if(a[j]>a[i])
{ temp=a[i];
a[i]=a[j];
a[j]=temp;
} for(i=0;i
printf(“%-4d”,a[i]);} 28.从键盘输入两个字串,输出其中较长的那个字串,并输出它的长度。
#define N 20 #include “stdio.h” #include “string.h” main(){ char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);printf(“--------------------n”);printf(“The answer is:”);if(strlen(c1)==strlen(c2)){ puts(c1);
puts(c2);
printf(“The length is:%dn”,strlen(c1));} if(strlen(c2)
printf(“The length is:%dn”,strlen(c1));}
if(strlen(c2)>strlen(c1)){
puts(c2);
printf(“The length is:%dn”,strlen(c2));} } 29.从键盘输入10个战士的身高,输出平均身高,并找出哪些身高低于平均身高。#include “stdio.h” #define N 11 main()
{ float a[N],sum=0;int i;
printf(“Please input heigths:n”);
for(i=0;i
scanf(“%f”,&a[i]);
sum+=a[i];}
a[N-1]=sum/(N-1);printf(“The average is:%-6.2fn”,a[N-1]);
printf(“---------------------n”);
printf(“The answer are:n”);
for(i=0;i
printf(“%-8.2f”,a[i]);}
30.从键盘输入10个战士的身高,输出平均身高,并找出哪些身高高于平均身高。#include “stdio.h” #define N 11 main()
{ float a[N],sum=0;int i;
printf(“Please input heigths:n”);
for(i=0;i
scanf(“%f”,&a[i]);
sum+=a[i];}
a[N-1]=sum/(N-1);printf(“The average is:%-6.2fn”,a[N-1]);
printf(“---------------------n”);
printf(“The answer are:n”);
for(i=0;ia[N-1])
printf(“%-8.2f”,a[i]);} 31.从键盘输入10个战士的身高,输出最高、最低的身高 #include “stdio.h” #define N 10 main(){ float a[N],min=99999,max=-99999;int i;printf(“Please input heigths:n”);for(i=0;i
scanf(“%f”,&a[i]);
printf(“---------------------n”);for(i=0;imax)
max=a[i];if(a[i]
min=a[i];} printf(“max=%-6.2f,min=%-6.2f”,max,min);}。
32.“百钱百鸡”问题。百钱买百鸡,鸡翁一值钱三,鸡母一值钱二,鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何? #include “stdio.h” main(){ int jw,jm,jc;/*公鸡最多100/3=33只,母鸡最多100/2=50只,小鸡最多300只*/ for(jw=1;jw
for(jm=1;jm
for(jc=1;jc
for(a=1;a
for(b=1;b
for(c=1;c
if(a+2==b&&b+2==c&&a+b+c==39)
printf(“The ages are:%-4d%-4d%-4d”,a,b,c);}
34.键盘输入长方体的长宽高l、w、h,求其体积及表面积。要求用自定义函数val(l,w,h)计算长方体的体积和表面积,计算结果使用全局变量带回主函数。#include “stdio.h” float l,w,h,v,s;
void val(float l,float w,float h);main(){
printf(“Please input l&w&h:n”);
printf(“l=”);scanf(“%f”,&l);printf(“w=”);scanf(“%f”,&w);printf(“h=”);scanf(“%f”,&h);val(l,w,h);}
void val(float l,float w,float h)
{ v=l*w*h;
s=2*l*w+2*w*h+2*h*l;
printf(“v=%-6.2f,s=%-6.2f”,v,s);}
35.计算:1/2+1/4+„„+1/n,设n
是由键盘输入的正偶数。#include “stdio.h” main()
{ int n,i;
float sum=0;printf(“Please input n:n”);
scanf(“%d”,&n);while(n%2!=0)
{ printf(“Wrong input!Try again:n”);
scanf(“%d”,&n);} for(i=2;i
} 36.计算:1/1+1/3+„„+1/n,设n是由键盘输入的正奇数。#include “stdio.h” main(){ int n,i;float sum=0;printf(“Please input n:n”);scanf(“%d”,&n);while(n%2==0){ printf(“Wrong input!Try again:n”);
scanf(“%d”,&n);} for(i=1;i
#include “stdio.h” main(){ int i;float sum=0,d=1;for(i=1;i
d=-d;} printf(“sum=%-6.2f”,sum);} 38.从终端输入3个数a、b、c,按从大到小的顺序输出 #include “stdio.h” main(){ int i,j,k,l;/*i,j,k,l分别代表甲乙丙丁。1偷0没偷*/ for(i=0;i
for(j=0;j
for(k=0;k
for(l=0;l
39.公安人员审问四名窃贼嫌疑犯。
已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说“乙没有偷,是丁偷的”,乙说“我没有偷,是丙偷的”,丙说“甲没有偷,是乙偷的”,丁说“我没有偷”。请根据这四人的答话判断谁是盗窃者。40.求
s=a+aa+aaa+aaaa+......+aa...a的值,其中a是1~9之间的一个数字,表达式项数从键盘输入(设不超过10项)。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
41.设N是一个四位数,它的9倍恰
好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。
42.爱因斯坦出了一道这样的数学
题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯至少有多少阶?
43.输入任意一行字符,降序排列
之。
44.输入一行字符串,按如下规则加
密:如果是英文字母则大写变小写、小写变大写,对非英文字符则保持不变。试写加密程序。45.输入一行小写英文字母,按如下
规则加密:a→c、b→d、„、x→z、y→a、z→b,试写加密程序。
46.输入一行英文,已知各单词之间
用1个空格相隔(设第一个单词前没有空格),统计这行英文有多少个单词。
47.求1+12+123+„„前n项之和,其中n是从键盘输入的一个数字(1~9)。
48.小学生智商测试。让电脑随机出
十道100以内整数的加法题(10分/题),小学生从键盘回答答案,统计小学生最后得分。49.斐氏数列是公元13世纪数学家斐波拉契发明的。即:1,2,3,5,8,13,21,34,55,89,„„,输出其前15项。