C-ooooooooooooti

【打印ASCII码】输入一个除空格以外的可见字符(可以用键盘输入的字符),输出其ASCII码。

#include<stdio.h>

int main()

{

    char a;

    while(scanf("%c",&a)!=EOF)

          printf("%d\n",a);

    return 0;

}

【判断一个数是否同时被3和5整除】判断一个数n 能否同时被3和5整除,如果能同时被3和5整除输出YES,否则输出NO。例如当n=30,输出:YES;当n=81,输出:NO。

#include <stdio.h>

int main()

{

    int n;

    scanf("%d",&n);

    if (n%3==0&&n%5==0)

      printf("YES");

    else printf("NO");

    return 0;

}

【幂的末尾】a^b的末3位数是多少?

#include<stdio.h>

#include<string.h>

int main()

{

int a,b,i;

long long m=1; //定义一个初始值为1的long long类型变量m,用于存储a的b次方的结果

scanf("%d %d",&a,&b);

for(i=1;i<=b;i++)

{

    m=m*a; //m每次乘以一次a

    m=m%1000; //每循环一次就对1000取模,防止m的值过大,其值为除去千位数的余数

}

    if(m>=100)

        printf("%d",m);

    else if(m>=10)

        printf("0%d",m);

    else

        printf("00%d",m);

    return 0;

}

  1. 试编写程序求S=1+1*2+1*2*3+1*2*3*4+…+1*2*3*…*10的值

 #include <stdio.h>

void main()

{  int i;

  float s=0,term=1;   

for(i=1;i<=10;i++)

  { s=s+term;

    term=term*(i+1);

  }

  printf("sum%10.1f\n",s);

}

2. 编程利用以下公式求π的值。(取n=10000)

#include <stdio.h>

void main()

{  int i;

  float e=1,term=1;   

for(i=1;i<=100;i++)

  { term=term*i;

   e=e+1./term;

  }

  printf("e=%10.6f\n",e);

}

3. 计算s=1+1/2+1/3+…+1/n的值,其中n的值由键盘输入。

#include <stdio.h>

void main()

{  int i,n;

  float s=0;   

printf("input n\n");

  scanf("%d",&n);

  for(i=1;i<=n;i++)

     s=s+1./i;

  printf("s=%10.6f\n",s);

}

4. 编写程序,在屏幕上输出下面的图案(要求用for循环实现)。

* * * * *

   * * * * *

      * * * * *

         * * * * *

            * * * * *

 #include <stdio.h>

void main()

{  int i,j,k;

  for(i=1;i<=5;i++)

  { for(k=1;k<=2*i;k++)

    printf(" ");

   for(j=1;j<=5;j++)

        printf("* ");

    printf("\n");

  }

}

5. 编写程序,输入整数n,并根据n的值打印图案(要求用for循环实现)。n为中间一行的*号个数。例如,当n=4时,图案为

    *

    * *

    * * *

    * * * *

    * * *

    * *

    *

#include <stdio.h>

void main()

{ int i,j,n;

  printf("input n\n");

  scanf("%d",&n);

  for(i=1;i<=n;i++)

  {   for(j=1;j<=i;j++)

       printf("* ");

    printf("\n");

  }

  for(i=n-1;i>=1;i--)

  { for(j=1;j<=i;j++)

       printf("* ");

   printf("\n");

  }

}

6. 从键盘输入若干个学生的成绩,-1作为结束标志,求出平均成绩及最高成绩并输出其结果。

#include <stdio.h>

void main()

{  int  i,score,sum=0,max;

   i=0;    

printf("please input score:\n");

  scanf("%d",&score);

  max=score;

  while (score!=-1)    

{  sum=sum+score;

       if(score>max)max=score;

       i++;

       scanf("%d",&score);

    }

printf("max=%d\n",max);

printf("average=%f\n",(float)sum/i);

}

7. 编写一程序,从键盘输入n个数,输出其最大数和最小数,并输出它们在序列中的序号。

答案:

#include <stdio.h>

void main()

{ int i, n,x,max,min,maxi=1,mini=1;    

printf("please input n:\n");

   scanf("%d",&n);

   printf("please input x:\n");

   scanf("%d",&x);

   max=x;min=x;

   for(i=2;i<=n;i++)

   {  scanf("%d",&x);

      if(x>max) { max=x;maxi=i;}

      if(x<min) { min=x;mini=i;}

   }

printf("max=%d;maxi=%d\n",max,maxi);

printf("min=%d;mini=%d\n",min,mini);

}

8. 编程实现:输出由0、1、2、3组成的所有的各位数字均不相同的三位数,输出时每8个数占一行。

答案:

#include <stdio.h>

void main()

{  int i,j,k,n=0;    

for(i=1;i<=3;i++)

      for(j=0;j<=3;j++)

   for(k=1;k<=3;k++)

           if(i!=j&&i!=k&&j!=k)

     {  n++;

     printf("%5d",i*100+j*10+k);

         if(n%8==0) printf("\n");

     }

}

9. 输入一行字符,回车作为结束,分别统计出其中英文字母、空格、数字和其它字符的个数。

#include <stdio.h>

void main()

{  int shuzi=0,zimu=0,kge=0,qita=0;    

char ch;

   ch=getchar();

   while(ch!='\n')

   { if(ch==' ')     kge++;

    else if(ch>='0'&&ch<='9')   shuzi++;

    else if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') zimu++;

    else   qita++;

    ch=getchar();

   }

   printf("数字=%d;字母=%d;空格=%d;其它%d",shuzi,zimu,kge,qita);

}

10. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

#include<stdio.h>

void main()

{ int Sn=0,a,n,i=0,t;

printf("Sn=a+aa+aaa+…+aaa…a\nplease input a,n:");

scanf("%d,%d",&a,&n);t=a;

while(i<n)

{ Sn=Sn+t;

   t=10*t+a;

   i++;

}

printf("%ld\n",Sn);

}

11. 编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数通过自定义函数来输出。

#include <stdio.h>

int GreatComDiv(int m,int n);

int LeaseComMul(int m,int n);

void main()

{ int m,n,t;

  printf("请输入m和n的值:");

  scanf("%d%d",&m,&n);

  if((m<=0)||(n<=0))

  { printf("输入错误!请重新输入!\n");

    scanf("%d%d",&m,&n);

  }

  if(m<n) {t=m;m=n;n=t;}

  printf("m和n的最大公约数是: %d\n",GreatComDiv(m,n));

  printf("m和n的最小公倍数是: %d\n",LeaseComMul(m,n));

}

int GreatComDiv(int m,int n)

{  int r;

   r=m%n;

   while(r!=0)   /*利用辗除法,直到b为0为止*/

   { m=n;

     n=r;

     r=m%n;

    }

   return n;

}

int LeaseComMul(int m,int n)

{  int greatcomdiv;

   greatcomdiv=GreatComDiv( m, n);

   return m*n/greatcomdiv;

}

12. 编程实现:求出10~10000之内的所有素数。要求素数判断通过自定义函数来实现。

#include <stdio.h>

int sushu(int n);

void main()

{  int n;

   for(n=10;n<=10000;n++)

      if (sushu(n)) printf("%d是素数\n",n);

}

int sushu(int n)

{   int i;

for(i=2;i<n;i++)

    if(n%i==0)  return 0;    

        return 1;

}

13. 编程实现:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为 。要求水仙花数的判断通过自定义函数来实现。

#include <stdio.h>

int fun(int n);

void main()

{  int i;

   for(i=100;i<=999;i++)

  if (fun(i)) printf("%d\n",i);

}

int fun(int n)

{int a,b,c;

 a=n/100;

 b=n/10%10;

 c=n%10;

 if (a*a*a+b*b*b+c*c*c==n) return 1;

return 0;

}

14. 编程实现:打印出2~1000之间的所有完数。所谓完数,是指这样的数,该数的各因子之和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28都是完数。要求完数的判断通过自定义函数来实现。

#include <stdio.h>

int wanshu(int n);

void main()

{  int n;

   for(n=2;n<=1000;n++)

    if (wanshu(n))   printf("%d是完数\n",n);

 }

int wanshu(int n)

{  int i,s=0;   

   for(i=1;i<=n/2;i++)

    if(n%i==0) s+=i;

   if(s==n)  return 1;    

   else     return 0;

}

15. 编程实现:打印出10~9999之间的所有回文数,要求每10个数一行输出。要求回文数的判断通过自定义函数来实现。

#include  <stdio.h>

int  rev(int a);

void main()

{  int x, y,i=0;   

       for(x=10;x<10000;x++)

       {  y=rev(x);

  if(x==y)

  { printf("%6d",x);

          i++;

    if(i%10==0)     printf("\n");

           }

}

}

int  rev(int a)

{  int m, b=0;

       while(a!=0)   

       { m=a%10;

b=b*10+m;

        a=a/10;

       }

return b;

    }

16. 编程实现:打印出1~9999之间的所有同构数,所谓同构数是指一个数如果出现在该数平方的右端,该数就是同构数。如5,25都是同构数。要求同构数的判断通过自定义函数来实现。

#include <stdio.h>

int tgshu(int n);

void main()

{  int n;

   for(n=1;n<=9999;n++)

    if (tgshu(n))     printf("%d是同构数\n",n);

}

int tgshu(int n)

{  int d=1,nn,k=0,t;

   nn=n*n;

   t=n;

   while(t!=0)   

   { d=d*10;    

     t=t/10;   

   }

   if(nn%d==n)  return 1;    

   else   return 0;

}

17. 给定一5*5的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要求:对角线元素之和及矩阵输出分别通过两个自定义函数来实现。

#include <stdio.h>

#define n 5

void out(int a[n][n] );

int he(int a[n][n]);

void main()

{  int a[n][n],i,j,s;

   printf("input 5*5 elements\n");

   for(i=0;i<n;i++)

   for(j=0;j<n;j++)

      scanf("%d",&a[i][j]);

   printf("\n");

   s=he(a);

   printf("he=%d\n",s);

   out(a);

}

void out(int a[n][n])

{  int i,j;

   for(i=0;i<n;i++)

   { for(j=0;j<n;j++)

    printf("%6d",a[i][j]);

 printf("\n");

  }

 }

int he(int a[n][n])

{  int i,sum=0;   

   for(i=0;i<n;i++)

    sum+=a[i][i];

   return sum;

}

18. 编程实现:输入一4*4的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过通过自定义函数实现矩阵的输入输出。
#include <stdio.h>

#define n 4

void out(int a[n][n] );

void inp(int a[n][n]);

void main()

{  int a[n][n],i,j,k;

   printf("input 5*5 elements\n");

   inp(a);

   for(i=0;i<n;i++)

   { k=0;     

    for(j=1;j<n;j++)

    if(a[i][j]<a[i][k]) k=j;

printf(" 第%d行最小值为:%5d,它是第%2d列\n",i+1,a[i][k],k+1);

}

printf("\n");

out(a);

}

void inp(int a[n][n])

{  int i,j;

   for(i=0;i<n;i++)

      for(j=0;j<n;j++)

     scanf("%d",&a[i][j]);

}

void out(int a[n][n])

{  int i,j;

   for(i=0;i<n;i++)

   {for(j=0;j<n;j++)

    printf("%6d",a[i][j]);

printf("\n");

}

}

19. 编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中,然后输出,要求数制转换通过自定义函数来实现。

#include <stdio.h>

int change(int x,int a[])  //返回值为二进制的位数

{  int n=-1;      

   while(x!=0)    

   {   n++;

   a[n]=x%2;     

       x=x/2;    

    }

   return n;

}

void main()

{  int x,a[20],i,n;

   printf("input x\n");

   scanf("%d",&x);

   n=change(x,a);

   for(i=n;i>=0;i--)

   printf("%1d",a[i]);

   printf("\n");

}

20. 编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位数,x为给定的数,a中存放该数的各个位。

#include <stdio.h>

int ni(int x,int a[])  //返回值为数的位数

{  int n=-1;      

   while(x!=0)    

   {   n++;

   a[n]=x%10;     

       x=x/10;    

   }

   return n;

}

void main()

{   int x,a[20],i,n;

printf("input x\n");

scanf("%d",&x);

n=ni(x,a);

for(i=0;i<=n;i++)

    printf("%1d",a[i]);

printf("\n");

}

21. 编写程序从键盘输入x和n的值,求xn  (n为大于等于零的整数),要求用递归函数求xn 。

#include <stdio.h>

int exp(int x,int n);

void main()

{  int x,n;

 printf("input x,n:\n");

 scanf("%d%d",&x,&n);

 printf("%d\n",exp(x,n));

}

int exp(int x,int n)

{  if (n==1)  return x;

   return  x*exp(x,n-1);

}

22. 编写实现:输入两个正整数m,n(m>n),计算从m个元素中任意取n个元素的组合,计算机公式为:

要求通过递归函数求阶乘。

#include <stdio.h>

long int jch(int n)

{   if(n==1)  return 1;     

    else      return n*jch(n-1);

}

void main()

{   int m,n,zuhe;

printf("input two integers m,n(m>n)\n");

scanf("%d,%d",&m,&n);

if(m>=n)    zuhe=jch(m)/(jch(n)*jch(m-n));

printf("%d,%d的组合为:%d",m,n,zuhe);

}

23. 编程实现:从键盘任意输入10个不相同的整数,然后,输入要查找的数x,如果在这10个数中找到x,则打印“Found!”;如果找不到,则打印“Not found!”。要求通过自定义函数实现查找功能。

#include <stdio.h>

void serach(int a[],int x)

{ int i;

for (i=0;i<10;i++)

     if(a[i]==x)

    { printf("Found\n");

     return ;

    }

 printf("Not found!\n");

}

void main()

{  int i,a[10],x;

   printf("input 10 integers \n");

   for (i=0;i<10;i++)

      scanf("%d",&a[i]);

    printf("input x\n");

    scanf("%d",&x);

serach(a,x);

}

24. 从键盘输入某班20个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找出他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。

#include <stdio.h>

#include <string.h>

typedef struct

{ char no[10];

  int score;

}studtype;

void search(studtype a[],char xno[])

{   int i;

for (i=0;i<20;i++)

      if(strcmp(a[i].no,xno)==0)    

         { printf("%d\n",a[i].score);

       return ;

     }

 printf("Not found!\n");

}

void main()

{  studtype stu[20];

   char xno[10];

   int i;

   printf("input 20 no,score\n");

   for (i=0;i<20;i++)

     scanf("%s%d",stu[i].no,&stu[i].score);

printf("input xno\n");

scanf("%s",xno);

search(stu,xno);

}

25. 编程实现:从键盘任意输入某班20个学生的姓名和成绩,输出最高分及不及格学生的人数。要求分别用两个自定义函数求最高分和不及格人数。

#define N  20

#include<stdio.h>

typedef struct

{ char name[10];               /*姓名*/            

int score;                     /*成绩*/

}datatype;

int max(datatype stu[]);         /*最高分函数声明*/

int num(datatype stu[]);          /*不及格人数函数声明*/

void main()

{   datatype stu[N];

int i,max_score,n;      

printf("请输入 %d 名职工姓名  成绩:\n", N);

for(i=0;i<N;i++)

   scanf("%s%d",stu[i].name,&stu[i].score);

max_score=max(stu);

n=num(stu);

    printf("最高分:%d;不及格人数%d",max_score,n);

}

int max(datatype stu[])         /*最高分函数定义*/

{   int m,i;

m=0;

    for(i=1;i<N;i++)

   if(stu[i].score>stu[m].score)   m=i;

return    stu[m].score;

}

int num(datatype stu[])          /*不及格人数函数定义*/

{ int i,n=0;

    for(i=0;i<N;i++)

    if(stu[i].score<60)   n++;

return n;

}

26. 编程实现:输入2个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要求每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。

#define M  4

#define N  5

#include<stdio.h>

void merge(int a[],int b[],int c[]);

void main()

{ int i,a[M],b[N],c[M+N];      

printf("请输入 %d 个降序排列的整数:\n", M);

for(i=0;i<M;i++)

    scanf("%d",&a[i]);

printf("请输入 %d 个降序排列的整数:\n", N);

for(i=0;i<N;i++)

     scanf("%d",&b[i]);

merge(a,b,c);

for(i=0;i<M+N;i++)

     printf("%5d",c[i]);

}

void merge(int a[],int b[],int c[])

{  int i,j,k;

   i=0;j=0;k=0;    

   while(i<M && j<N)

   if(a[i]>b[j])   c[k++]=a[i++];

   else         c[k++]=b[j++];

while(i<M)

     c[k++]=a[i++];

while(j<N)

     c[k++]=b[j++];

}

27. 编程实现:输入N名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工信息。要求:职工信息的输入和输出分别通过自定义函数来实现。

#define N 10

#include<stdio.h>

//#include<stdlib.h>

typedef struct

{ char name[10];               /*姓名*/            

float score;                  /*成绩*/

}datatype;

void input(datatype work[]);          /*input函数声明*/

void print(datatype work[]);         /*print函数声明*/

void main()

{ datatype work[N];

input(work);

print(work);

}

void input(datatype work[])         /*input函数定义*/

{ int i;      

printf("请输入 %d 名 学生的姓名  成绩:\n", N);

for(i=0;i<N;i++)

  scanf("%s%f",work[i].name,&work[i].score);

}

void print(datatype work[])          /*print函数定义*/

{ int i;

for(i=0;i<N;i++)

    if(work[i].score>60)printf("%10s\n",work[i].name);

}

28. 编程实现:从键盘输入10名学生的信息,包括学号、姓名、成绩,用一个排序函数sort完成学生成绩降序排列,并输出学生排序后的结果。

#define N  10

#include<stdio.h>

//#include<stdlib.h>

typedef

{ char num[20];               /*学号*/

char name[20];               /*姓名*/

float score;                     /*成绩*/

}stutype;

void input(stutype stu[]);          /*input函数声明*/

void sort(stutype stu[]);          /*sort函数声明*/

void print(stutype stu[]);         /*print函数声明*/

int main()

{ stutype stu[N];

input(stu);

sort(stu);

print(stu);

return 0;

}

void input(stutype stu[])         /*input函数定义*/

{ int i;      

printf("请输入 %d 名学生信息(学号  姓名  成绩):\n", N);

for(i=0;i<N;i++)

  scanf("%s%s%f",stu[i].num,stu[i].name,&stu[i].score);

}

void  sort(stutype stu[])          /*sort函数定义*/

{ int i,k,j;

stutype t;

for(i=0;i<N-1;i++)

{  k=i;

  for(j=i+1;j<N;j++)

    if(stu[k].score<stu[j].score)        k=j;

  if(k!=i)

  {   t=stu[i];

  stu[i]=stu[k];

  stu[k]=t;

}

 }

}

void print(stutype stu[])          /*print函数定义*/

{ int i;

printf("****名次  学号   姓名   成绩****\n");

for(i=0;i<N;i++)

   printf("%6d%8s%8s%8.2f\n",i+1,stu[i].num,stu[i].name, stu[i].score);

}

29. 编程实现:任意输入一组不多于20个的升序排列的若干个整数,任意输入不多于10个的整数(-1作为输入结束标志),将其插入到该序列中,使其依然有序。要求:通过自定义函数实现将一个整数插入到一个有序序列中,使其依然有序。

#include <stdio.h>

void ins(int a[],int*n,int x);

void main()

{   int a[30],x,m,i;

 m=-1;   

     printf("输入一组不多于20个的升序排列的若干个整数,-1作为输入结束标志\n");

 scanf("%d",&x);

 while(x!=-1)   

     {   m++;

 a[m]=x;

 scanf("%d",&x);

  }

 printf("输入一组不多于10个的升序排列的若干个整数,-1作为输入结束标志\n");

 scanf("%d",&x);

 while(x!=-1)   

     {  ins(a,&m,x);

scanf("%d",&x);

  }

  for(i=0;i<=m;i++)

   printf("%5d",a[i]);

}

void ins(int a[],int*n,int x)

{   int i=*n;

while(a[i]>x&&i>=0)   

    {  a[i+1]=a[i];

   i--;

 }

 a[i+1]=x;

 (*n)++;

}

30. 一个班级有30个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。

要求编程实现以下功能:

1) 从键盘上输入30个学生的信息,平均成绩通过公式:平均成绩=(数学+语文+计算机)/3计算得出。

2) 输出所有平均成绩大于等于85的学生姓名(要求用自定义函数实现该功能)。

#include <stdio.h>

#define n 30

typedef struct

{  char no[11], name[9];

  int math,chiness,comp;

  float ave;

}studtype;

void out(studtype a[])

{ int i;

for (i=0;i<n;i++)

      if(a[i].ave>=85)printf("%10s\n",a[i].name);

}

void main()

{  studtype stu[n];

   int i;

   printf("input no,name,math,chiness,computer\n");

   for (i=0;i<n;i++)

{   scanf("%s%s%d%d%d",stu[i].no,stu[i].name,&stu[i].math,&stu[i].chiness,&stu[i].comp);

stu[i].ave=(stu[i].math+stu[i].chiness+stu[i].comp)/3.0;

    }

out(stu);

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值