循环上机题习题.docx
《循环上机题习题.docx》由会员分享,可在线阅读,更多相关《循环上机题习题.docx(16页珍藏版)》请在冰豆网上搜索。
循环上机题习题
循环上机题
题目1:
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:
利用while语句,条件为输入的字符不为'\n'。
#include
main()
{
chara;
intb=0,c=0,d=0,e=0;
printf("输入一行字符:
\n");
do
scanf("%c",&a);
printf("%c",a);
if(a>='A'&&a<='Z'||a>='a'&&a<='z')
b++;
elseif(a=='')
c++;
else
if(a>='0'&&a<='9')
d++;
if(a!
='\n')
e++;
}
while(a!
='\n');
printf("字母数:
%d\n空格数:
%d\n数字数:
%d\n其他数:
%d",b,c,d,e);
题目2:
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
inta,b,c;
for(a=1;a<=1000;a++)
for(c=0,b=1;b{if(a%b==0)c=c+b;}if(c==a)printf("%d是完数\n",a);}}题目3:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。#includemain(){inta,b=1,c=0;for(a=1;a<10;a++){b=(1+b)*2;c=c+b;}printf("%d\n",b);}题目4:打印出如下图案(三角和菱形)************************************************************************************************************************************************************************(1)#includemain(){inti,j,k,p,t,n;printf("shuruyigeshuzi\n");scanf("%d",&n);for(i=1;i<=n;i++){for(j=2*i-1;j>0;j--){printf("*");}printf("\n");}for(i=n-2;i>=0;i--){for(j=2*i;j>=0;j--){printf("*");}printf("\n");}}(2)#includemain(){inta=4,b,c,d,e;for(b=a;b>0;b--){for(c=2*b-2;c>0;c--)printf("");d=a-b;for(e=4*d+1;e>0;e--)printf("*");printf("\n");}for(b=1;b<=a;b++){for(c=2*b;c>0;c--)printf("");d=a-b-1;for(e=4*d+1;e>0;e--)printf("*");printf("\n");}getch();}(3)#includemain(){inta,b,c,d;printf("输入一个数:\n");scanf("%d",&a);for(b=a;b>0;b--){for(c=a;c>b;c--)printf("");for(d=2*b-1;d>0;d--){printf("*");}printf("\n");}}题目5:打印出如下图案。AABCABCDEABCDEFGABCDEFGHIABCDEFGHIJKAABABCABCDABCDEABCDEFABCDEFG#includemain(){chara;inti=7,j,q;//printf("输入一个数:\n");//scanf("%d",&i);for(j=1;j<=i;j++){for(a='A',q=0;q{printf("%c",a);a=a+1;}printf("\n");}}#includemain(){chara;inti=6,j,q,b,c;//printf("输入一个数:\n");//scanf("%d",&i);for(q=1;q<=i;q++){for(b=q;b<=i;b++)printf("");for(a='A',c=1;c<=2*q-1;c++){printf("%c",a);a=a+1;}printf("\n");}}题目6:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。#includemain(){inta,x,y,p,q;printf("输入一个五位数:\n");scanf("%d",&a);for(;a<10000||a>99999;){printf("输入错误再次输入:\n");scanf("%d",&a);}x=a%10;y=a/10000;q=(a/10)%10;p=(a/1000)%10;if(x==y&&q==p)printf("%d是回文数\n",a);}题目7:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。#includemain(){inta,b,c,i=0;for(a=1;a<=4;a++)for(b=1;b<=4;b++)for(c=1;c<=4;c++)if(a!=b&&a!=c&&b!=c){printf("%d%d%d",a,b,c);i++;if(i%6==0)printf("\n");}}题目8:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。程序分析:关键是计算出每一项的值。#includemain(){longinta,i,j,sum=0,c,b;printf("输入两个数字:\n");scanf("%ld%ld",&j,&a);for(c=a,i=1;i{c=c*10+a;sum=sum+c;printf("%d",c);if(iprintf("+");}printf("=%ld\n",sum+a);}题目9:对10个数进行排序程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。#includemain(){inta[10],max,i,x;printf("输入十个数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=9;x>=1;x--){for(i=0;i{if(a[i]>a[i+1]){max=a[i];a[i]=a[i+1];a[i+1]=max;}}}for(i=0;i<10;i++){printf("%d",a[i]);}}#includemain(){inta[10],min,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<=9;x++){min=a[x];for(b=x+1,j=x;b<=9;b++){if(min>a[b]){min=a[b];j=b;}}//printf("%d",min);a[j]=a[x];a[x]=min;}for(i=0;i<10;i++){printf("%d",a[i]);}}#include#defineN10main(){inta[N],max,i,x,flag=0;printf("输入十个数:\n");for(i=0;i{scanf("%d",&a[i]);}for(x=1;x{flag=0;for(i=x+1;i<=N;i++)if(a[i]>a[i+1]){flag=1;max=a[i];a[i]=a[i+1];a[i+1]=max;}if(flag==0)break;}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}#includemain(){inta[10],temp,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<9;x++){j=x;for(b=x+1;b<=9;b++){if(a[j]>a[b])j=b;}if(j!=x){temp=a[x];a[x]=a[j];a[j]=temp;}}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}
if(a%b==0)
c=c+b;
if(c==a)
printf("%d是完数\n",a);
题目3:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
采取逆向思维的方法,从后往前推断。
inta,b=1,c=0;
for(a=1;a<10;a++)
b=(1+b)*2;
printf("%d\n",b);
题目4:
打印出如下图案(三角和菱形)
*****************
***************
*************
***********
*********
*******
*****
***
*
******
********
(1)
inti,j,k,p,t,n;
printf("shuruyigeshuzi\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=2*i-1;j>0;j--)
printf("*");
printf("\n");
for(i=n-2;i>=0;i--)
for(j=2*i;j>=0;j--)
(2)
inta=4,b,c,d,e;
for(b=a;b>0;b--)
for(c=2*b-2;c>0;c--)
printf("");
d=a-b;
for(e=4*d+1;e>0;e--)
for(b=1;b<=a;b++)
for(c=2*b;c>0;c--)
d=a-b-1;
getch();
(3)
inta,b,c,d;
printf("输入一个数:
scanf("%d",&a);
for(c=a;c>b;c--)
for(d=2*b-1;d>0;d--)
题目5:
打印出如下图案。
A
ABC
ABCDE
ABCDEFG
ABCDEFGHI
ABCDEFGHIJK
AB
ABCD
ABCDEF
inti=7,j,q;
//printf("输入一个数:
//scanf("%d",&i);
for(j=1;j<=i;j++)
for(a='A',q=0;q{printf("%c",a);a=a+1;}printf("\n");}}#includemain(){chara;inti=6,j,q,b,c;//printf("输入一个数:\n");//scanf("%d",&i);for(q=1;q<=i;q++){for(b=q;b<=i;b++)printf("");for(a='A',c=1;c<=2*q-1;c++){printf("%c",a);a=a+1;}printf("\n");}}题目6:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。#includemain(){inta,x,y,p,q;printf("输入一个五位数:\n");scanf("%d",&a);for(;a<10000||a>99999;){printf("输入错误再次输入:\n");scanf("%d",&a);}x=a%10;y=a/10000;q=(a/10)%10;p=(a/1000)%10;if(x==y&&q==p)printf("%d是回文数\n",a);}题目7:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。#includemain(){inta,b,c,i=0;for(a=1;a<=4;a++)for(b=1;b<=4;b++)for(c=1;c<=4;c++)if(a!=b&&a!=c&&b!=c){printf("%d%d%d",a,b,c);i++;if(i%6==0)printf("\n");}}题目8:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。程序分析:关键是计算出每一项的值。#includemain(){longinta,i,j,sum=0,c,b;printf("输入两个数字:\n");scanf("%ld%ld",&j,&a);for(c=a,i=1;i{c=c*10+a;sum=sum+c;printf("%d",c);if(iprintf("+");}printf("=%ld\n",sum+a);}题目9:对10个数进行排序程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。#includemain(){inta[10],max,i,x;printf("输入十个数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=9;x>=1;x--){for(i=0;i{if(a[i]>a[i+1]){max=a[i];a[i]=a[i+1];a[i+1]=max;}}}for(i=0;i<10;i++){printf("%d",a[i]);}}#includemain(){inta[10],min,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<=9;x++){min=a[x];for(b=x+1,j=x;b<=9;b++){if(min>a[b]){min=a[b];j=b;}}//printf("%d",min);a[j]=a[x];a[x]=min;}for(i=0;i<10;i++){printf("%d",a[i]);}}#include#defineN10main(){inta[N],max,i,x,flag=0;printf("输入十个数:\n");for(i=0;i{scanf("%d",&a[i]);}for(x=1;x{flag=0;for(i=x+1;i<=N;i++)if(a[i]>a[i+1]){flag=1;max=a[i];a[i]=a[i+1];a[i+1]=max;}if(flag==0)break;}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}#includemain(){inta[10],temp,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<9;x++){j=x;for(b=x+1;b<=9;b++){if(a[j]>a[b])j=b;}if(j!=x){temp=a[x];a[x]=a[j];a[j]=temp;}}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}
a=a+1;
inti=6,j,q,b,c;
for(q=1;q<=i;q++)
for(b=q;b<=i;b++)
for(a='A',c=1;c<=2*q-1;c++)
题目6:
一个5位数,判断它是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
inta,x,y,p,q;
printf("输入一个五位数:
for(;a<10000||a>99999;)
printf("输入错误再次输入:
x=a%10;
y=a/10000;
q=(a/10)%10;
p=(a/1000)%10;
if(x==y&&q==p)
printf("%d是回文数\n",a);
题目7:
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
inta,b,c,i=0;
for(a=1;a<=4;a++)
for(b=1;b<=4;b++)
for(c=1;c<=4;c++)
=b&&a!
=c&&b!
=c)
printf("%d%d%d",a,b,c);
i++;
if(i%6==0)
题目8:
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
关键是计算出每一项的值。
longinta,i,j,sum=0,c,b;
printf("输入两个数字:
scanf("%ld%ld",&j,&a);
for(c=a,i=1;i{c=c*10+a;sum=sum+c;printf("%d",c);if(iprintf("+");}printf("=%ld\n",sum+a);}题目9:对10个数进行排序程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。#includemain(){inta[10],max,i,x;printf("输入十个数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=9;x>=1;x--){for(i=0;i{if(a[i]>a[i+1]){max=a[i];a[i]=a[i+1];a[i+1]=max;}}}for(i=0;i<10;i++){printf("%d",a[i]);}}#includemain(){inta[10],min,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<=9;x++){min=a[x];for(b=x+1,j=x;b<=9;b++){if(min>a[b]){min=a[b];j=b;}}//printf("%d",min);a[j]=a[x];a[x]=min;}for(i=0;i<10;i++){printf("%d",a[i]);}}#include#defineN10main(){inta[N],max,i,x,flag=0;printf("输入十个数:\n");for(i=0;i{scanf("%d",&a[i]);}for(x=1;x{flag=0;for(i=x+1;i<=N;i++)if(a[i]>a[i+1]){flag=1;max=a[i];a[i]=a[i+1];a[i+1]=max;}if(flag==0)break;}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}#includemain(){inta[10],temp,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<9;x++){j=x;for(b=x+1;b<=9;b++){if(a[j]>a[b])j=b;}if(j!=x){temp=a[x];a[x]=a[j];a[j]=temp;}}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}
c=c*10+a;
sum=sum+c;
printf("%d",c);
if(iprintf("+");}printf("=%ld\n",sum+a);}题目9:对10个数进行排序程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。#includemain(){inta[10],max,i,x;printf("输入十个数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=9;x>=1;x--){for(i=0;i{if(a[i]>a[i+1]){max=a[i];a[i]=a[i+1];a[i+1]=max;}}}for(i=0;i<10;i++){printf("%d",a[i]);}}#includemain(){inta[10],min,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<=9;x++){min=a[x];for(b=x+1,j=x;b<=9;b++){if(min>a[b]){min=a[b];j=b;}}//printf("%d",min);a[j]=a[x];a[x]=min;}for(i=0;i<10;i++){printf("%d",a[i]);}}#include#defineN10main(){inta[N],max,i,x,flag=0;printf("输入十个数:\n");for(i=0;i{scanf("%d",&a[i]);}for(x=1;x{flag=0;for(i=x+1;i<=N;i++)if(a[i]>a[i+1]){flag=1;max=a[i];a[i]=a[i+1];a[i+1]=max;}if(flag==0)break;}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}#includemain(){inta[10],temp,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<9;x++){j=x;for(b=x+1;b<=9;b++){if(a[j]>a[b])j=b;}if(j!=x){temp=a[x];a[x]=a[j];a[j]=temp;}}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}
printf("+");
printf("=%ld\n",sum+a);
题目9:
对10个数进行排序
可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
inta[10],max,i,x;
printf("输入十个数:
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(x=9;x>=1;x--)
for(i=0;i{if(a[i]>a[i+1]){max=a[i];a[i]=a[i+1];a[i+1]=max;}}}for(i=0;i<10;i++){printf("%d",a[i]);}}#includemain(){inta[10],min,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<=9;x++){min=a[x];for(b=x+1,j=x;b<=9;b++){if(min>a[b]){min=a[b];j=b;}}//printf("%d",min);a[j]=a[x];a[x]=min;}for(i=0;i<10;i++){printf("%d",a[i]);}}#include#defineN10main(){inta[N],max,i,x,flag=0;printf("输入十个数:\n");for(i=0;i{scanf("%d",&a[i]);}for(x=1;x{flag=0;for(i=x+1;i<=N;i++)if(a[i]>a[i+1]){flag=1;max=a[i];a[i]=a[i+1];a[i+1]=max;}if(flag==0)break;}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}#includemain(){inta[10],temp,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<9;x++){j=x;for(b=x+1;b<=9;b++){if(a[j]>a[b])j=b;}if(j!=x){temp=a[x];a[x]=a[j];a[j]=temp;}}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}
if(a[i]>a[i+1])
max=a[i];
a[i]=a[i+1];
a[i+1]=max;
printf("%d",a[i]);
inta[10],min,i,b,x,j;
printf("shuruyigesh:
for(x=0;x<=9;x++)
min=a[x];
for(b=x+1,j=x;b<=9;b++)
if(min>a[b])
min=a[b];
j=b;
//printf("%d",min);
a[j]=a[x];
a[x]=min;
#defineN10
inta[N],max,i,x,flag=0;
for(i=0;i{scanf("%d",&a[i]);}for(x=1;x{flag=0;for(i=x+1;i<=N;i++)if(a[i]>a[i+1]){flag=1;max=a[i];a[i]=a[i+1];a[i+1]=max;}if(flag==0)break;}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}#includemain(){inta[10],temp,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<9;x++){j=x;for(b=x+1;b<=9;b++){if(a[j]>a[b])j=b;}if(j!=x){temp=a[x];a[x]=a[j];a[j]=temp;}}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}
for(x=1;x{flag=0;for(i=x+1;i<=N;i++)if(a[i]>a[i+1]){flag=1;max=a[i];a[i]=a[i+1];a[i+1]=max;}if(flag==0)break;}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}#includemain(){inta[10],temp,i,b,x,j;printf("shuruyigesh:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(x=0;x<9;x++){j=x;for(b=x+1;b<=9;b++){if(a[j]>a[b])j=b;}if(j!=x){temp=a[x];a[x]=a[j];a[j]=temp;}}for(i=0;i<10;i++){printf("%d",a[i]);}getch();}
flag=0;
for(i=x+1;i<=N;i++)
flag=1;
if(flag==0)break;
inta[10],temp,i,b,x,j;
for(x=0;x<9;x++)
j=x;
for(b=x+1;b<=9;b++)
if(a[j]>a[b])
if(j!
=x)
temp=a[x];
a[x]=a[j];
a[j]=temp;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1