c++

    xiaoxiao2025-10-11  11

    1.写一个函数,判断某一个四位数是不是玫瑰花数(所谓玫瑰花数即该四位数各位数字的四次方和恰好等于该数本身,如:1634=14+64+34+44)。在主函数中从键盘任意输入一个四位数,调用该函数,判断该数是否为玫瑰花数,若是则输出“yes”,否则输出“no”。 #include<stdio.h> int fun(int i){ if(pow(i%10,4)+pow(i%100/10,4)+pow(i%1000/100,4)+pow(i%10000/1000,4)) return yes; else return no; } void main(){ int i; printf("请输入一个四位数:"); scanf("%d",&i); printf("输入的是玫瑰花数吗? %d",fun(i)); system("pause"); } 2.编写一个求1——n内的偶数和的函数,在main()函数中输入n,然后调用该函数求1——n的偶数和并输出。 #include<stdio.h> int fun(int n){ int i,sum; for(i=1;i<=n;i++){ if(i%2==0) sum+=i; } return sum; } void main(){ int n; printf("请输入一个数n:"); scanf("%d",&n); printf("1到n的偶数和是:%d",fun(n)); system("pause"); } 3.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765, c1=‘a’,c2=‘b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 #include<stdio.h> void main(){ int a=3,b=4,c=5,u=51274,n=128765; faoat=1.2,y=2.4,z=-3.6; char c1='a',c2='b'; printf("a= %d  b= %d  c= %d\n,a,b,c"); printf("x=%.6f,y=%.6f,z= %.6f\n,x,y,z"); printf("x+y= %.3f  y+z= %.2f  z+x= %.2f\n,(x+y),(y+z),(z+x)"); printf("c1= %s or %ch(ASCII)\nc2= %s\n or %ch(ASCII),c1,c1,c2,c2"); system("pause"); } 4.输入两个正整数m和n,求其最大公约数和最小公倍数。 #include<stdio.h> int main() { int a,b,n,r; scanf("%d%d",&a,&b); n=2,r=2; while(a%n!=0||b%n!=0) n++; while(r%a!=0||r%b!=0) r++; printf("%d,%d\n",n,r); return 0; } 5.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include <stdio.h> int main()  {int x=0,y=0,z=0;   char ch;    ch=getchar();   while(ch!='\n') { if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')   x++;   else if(ch>='0'&&ch<='9')   y++;    else z++;   ch=getchar(); }   printf("英文字母有:%d个,数字有:%d个,其它字符有:%d个",x,y,z);  } #include<stdio.h> int main()  //main后面是有括号,main是一个函数 { char ch; int letter=0,i,blank=0,number=0,others=0;  //语句结束是有分号的。 printf("请输入一串字符:"); //scanf("%c",&ch); //既然下面用getchar()获取,何必使用scanf多此一举呢?? while((ch=getchar())!= '\n')  //注意括号的位置,而且括号一一对应,不能多个,少个。 { if('a'<=ch && ch<='z' || 'A'<=ch && ch<='Z')  //怎么都少半个括号,?? { letter++; } else if('0'<=ch&&ch<='9') { number++; } else if(ch==' ') { blank++; } else { others++; } } printf("英文字母、空格、数字、其他字符的个数分别为:%d,%d,%d,%d\n",letter,blank,number,others); return 0; } 6.求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。 #include<stdio.h> int fun(int n){ int Sn,i,j,a=2; for(i=1,j=n;i<=n;i++,j--){ Sn += i*a*pow(10,j); } } void main(){ int n; printf("请输入a的数量n:"); scanf("%d",&n); printf("一个2到n个2之和为:%d",fun(n)); system("pause"); } 7.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are 1、2、3 #include<stdio.h> #define MAX 1000 void main() {   for(int i=1;i<MAX;i++)        {   int temp=0;                   for(int j=1;j<i;j++)   if(i%j==0)                   temp=temp+j;               if(temp==i)                   printf("%d\n",temp);        } } #include<stdio.h> main()  {  int m,i,s;  for(m=2;m<1000;m++)  {  s=1;  for(i=2;i<=m/2;i++)  {  if(m%i==0)  s=s+i;  }  if(s==m)  {  printf("%d is 完数 its factors are ",m);  for(i=1;i<=m;i++)  if(m%i==0)  printf("%d ",i);  printf("\n");  }  }  } 8.猴子吃桃问题 #include<stdio.h> int fun(int n){   int i,sum=1;   for(i=0;i<n;i++){   sum=(1+sum)*2; }   return sum; } void main(){   int n=10;   printf("第一天共摘了 %d 个桃子",fun(n)); } 9.一个已按从小到大的顺序排好的数组,今输入一个数要求按原来排序的规律将它插入数组中。 #include <stdio.h> void SelectSort(int A[],int n);  void main() {  int B[100]={23,12,44,12,45,89,90,22,11,7};  int i,n=10;  SelectSort(B,n);  printf("原排序顺序为:\n");  for(i=0;i<n;i++)  {   printf("%d ",B[i]);  }  printf("\n");  printf("请输入一个数\n");  scanf("%d",&B[n]);  n=n+1;  SelectSort(B,n);  printf("输入一个数的排序顺序为:\n");  for(i=0;i<n;i++)  {   printf("%d ",B[i]);  }  printf("\n"); }  void SelectSort(int A[],int n) {  int i,j;  int temp=0;  /*将第i个与之后所有元素进行比较后输出最小的那个,因为只需排n-1次*/  for(i=0;i<n-1;i++)  {   for(j=i+1;j<n;j++)   {    if(A[i]>A[j])    {     temp=A[i];     A[i]=A[j];     A[j]=temp;    }   }  } } 10.将一个数组的值按逆序重新存放来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。 #include <stdio.h> void reverse(int a[], int n) {  int* p=a+n-1;  int t;  while(a<p)   t=*p, *p--=*a, *a++=t; } void main() {  int a[5]={8,6,5,4,1};  int i;  reverse(a,5);  for(i=0; i<5; i++)    printf("%d ", a[i]);  printf("\n"); } 11.数组的排序(升序,冒泡算法,并提供额外的一种以上的算法)。 //排序 #include<stdio.h> void main() {     int num[] = {8,6,5,4,1};     int temp;     int len = sizeof(num)/sizeof(int);     for(int i = 0 ; i<len-1 ; i++){     for(int j = 0 ; j <len - i -1 ; j++ ){     if(num[j]>num[j+1]){     temp = num[j];     num[j] = num[j+1];     num[j+1] = temp;                    } } }     for(int i = 0 ; i<len ; i++){     printf("%d\t",num[i]); } } #include<stdio.h> void main() {   int a[5]={8,6,5,4,1};  int i,j;  int temp=0;  for(i=0;i<5;i++)  {   printf("请输入第%d个整数\n",i+1);   scanf("%d",&a[i]);  }  for(i=1;i<5;i++)  {   for(j=0;j<5-i;j++)   {    if(a[j]>a[j+1])    {     temp=a[j];     a[j]=a[j+1];     a[j+1]=temp;    }   }  }  for(i=0;i<5;i++)  {   printf("排序后的整数:%d\t",a[i]);  } } 12.将字符串中的数字字符删除后输出(可以使用字符数组,或者字符串)。 #include<stdio.h> #include<string.h> #include<conio.h> int main() { char str[256]; int i,j=0,k; scanf("%s",str); for(i=0;i<strlen(str);i++) if(!((str[i]>=65&&str[i]<=90)||(str[i]>=97&&str[i]<=122))) { for(k=i;k<(strlen(str)-1);k++) str[k]=str[k+1]; str[k]='\0';i--; } printf("%s",str); getch(); } 13.将十进制正整数转换成十六进制。 #include<stdio.h> int b[32],c=0; int main() { int n,i; scanf("%d",&n);  while(n>0) { b[c++]=n%16; n/=16; } for(i=c-1;i>=0;i--) if(b[i]<10) printf("%d",b[i]); else printf("%c",b[i]-10+'A'); } //二进制 #include <stdio.h> void main() {  int result[15] = {0};  int n,i;  printf("输入一个整数:");  scanf("%d",&n);  for(i=0;i<15;i++)       {   result[i] = n%2;            if(!(n = n/2)) break;  }  for(i=14;i>=0;i--)            {   if(1==result[i]) break;  }  if(-1==i) i = 0;             for(;i>=0;i--)               {   printf("%d",result[i]);  }  printf("\n"); } 14.在a数组中查找与x值相同的元素的所在位置。 #include<stdio.h> void main() { int a[11],x,m,*p;   p=a;   printf("please input ten numers:\n");   for(m=1;m<11;m++)  scanf("%d",p+m);   printf("please input x:");   scanf("%d",&x);   m=10;   while( *(m+p)!=x)      m--;   if(m>0) printf("%5d's position is:%4d\n",x,m);   else  printf("%d not been found!\n",x); } 15.把x插到a数组中的下标为k的元素中。 #include <stdio.h> void fun(int s[], int *n, int k, int x) { int i; for(i=*n-1; i>=k; i- - ) s[i+1]=s[i]; s[k]=x; *n=*n+1; } main() { int a[20]={1,2,3,4,5,6,7,8,9,10,11}, i, x=0, k=6, n=11; fun(a, &n, k, x); for(i=0; i<n; i++) printf(“%4d”,a[i]); printf(“\n”); } 20、 #include <iostream> using namespace std; int main() {  int a[5];//用数组存储5个整数  int i,max,maxi,min,mini;//max,min分别存储最大的数和最小的数,maxi,mini分别存储对应的位置  int t;  for(i=0;i<5;i++)  cin>>a[i];//输入5个整数  max=min=a[0];  maxi=mini=0;//假设第一个数是最大的和最小的  for(i=1;i<5;i++)  if(a[i]>max) {  max=a[i];  maxi=i; }  else if(a[i]<min) {  min=a[i];  mini=i; }  t=a[mini];  a[mini]=a[maxi];  a[maxi]=t;  for(i=0;i<5;i++)  cout<<a[i]<<' ';  cout<<endl;  return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1303034.html
    最新回复(0)