C语言上机练习题_c语言上机练习题

2020-02-27 其他范文 下载本文

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项。

《C语言上机练习题.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言上机练习题
点击下载文档
相关专题 c语言上机练习题 练习题 语言 c语言上机练习题 练习题 语言
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文