整理的c语言学习题目+代码



-----------------------------------------------------------------------------------
1、输入一个字符,判断该字符是何种字符(大写字母、小写字母、数字还是其它字符)。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
  char x;
  printf("输入需要判断的字符:  ");
  scanf("%c",&x);
  if(x>=48&&x<=57)
 printf("这是一个数字字符。\n");
  else if(x>=65&&x<=90)
 printf("这是大写字母。\n");
  else if(x>=97&&x<=122)
 printf("这是小写字母。\n");
  else 
 printf("这是其他字符。\n");
}
-----------------------------------------------------------------------------------
2、用户输入一个百分制的整数成绩,输出其对应的成绩等级(优、良、中、及格、不及格)。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
  int x;
  printf("请输入分数:");
  scanf("%d",&x);
  if(x>=90&&x<=100)
 printf("优\n");
  else if(x>=80&&x<90)
 printf("良\n");
  else if(x>60&&x<80)
 printf("中\n");
  else if(x==60)
 printf("及格\n");
  else if(x>=0&&x<60)
 printf("不及格\n");
  else
 printf("出错\n");
}
-----------------------------------------------------------------------------------
3、输出九九乘法口诀表。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
  int i,j,s;
  for(i=1;i<=9;i++)
  {
 for(j=1;j<=i;j++)
 {
 s=i*j;
 printf("%d*%d=%-3d",j,i,s);
 }
 printf("\n");
  }


}
-----------------------------------------------------------------------------------
4、求1+2!+3!+4!+……+10!。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
  int _jc(int n);
  int _sum(int x);
  printf("1+2!+3!+4!+……+10!=%ld\n",_sum(10));  //输出和////


}
int _jc(int n)    //求阶乘////
{
   int i,s=1;
   for(i=1;i<=n;i++)
  s=s*i;
   return s;
}
int _sum(int x)   //求和////
{
  int i,sum=0;
  for(i=1;i<=x;i++)
 sum=sum+_jc(i);
  return sum;
}
-----------------------------------------------------------------------------------
5、从键盘输入10个整数中,找出第一个能被12整除的数。若找到,输出此数后退出循环;若未找到,输出“not exist!”。(要求用数组来实现)
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
   int i,a[10];
   printf("请输入整数:\n");
   for(i=0;i<10;i++)
  scanf("%d",&a[i]);  //输入10个整数
   for(i=0;i<10;i++)
  printf("%-3d",a[i]); //输入的10个整数为
   printf("\n");
   for(i=0;i<10;i++)
   {
  if(12%a[i]==0)
  break;
   }
   if(i<9)
  printf("能被12整除的数:%d\n",a[i]); //筛选的结果
   else 
  printf("not exist!\n");
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
6、编写程序,要求打印出1000以内的所有的“水仙花数”。所谓“水仙花数”是指这样的数:各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33。
------------------------------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
int main() 
{
int i,j,k,n; 
printf("'water flower'number is:"); 
for(n=100;n<1000;n++) 

i=n/100;/*分解出百位*/ 
j=n/10%10;/*分解出十位*/ 
k=n%10;/*分解出个位*/ 
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 
printf("%-5d",n); 
}
return 0;
}
---------------------------------------------------------------
7、利用冒泡排序法对5、99、3、-1、76、33进行由大到小的顺序排序。
---------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[6] = { 5,99,3,-1,76,33 }, i, j, ds;
for (j = 0; j<6; j++)
{
for (i = 0; i<6 - j; i++)
{
if (a[i]<a[i + 1])
{
ds = a[i];
a[i] = a[i + 1];
a[i + 1] = ds;
}
}
}
printf("交换后的数为:\n");
for (i = 0; i<6; i++)
{
printf("a[%d]=%d\t", i,a[i]);
}
return 0;
}
 --------------------------------------------------------------------------------------------------------------------
8、编写程序,输入三角型的三条边长,判定是何种三角型,并求其面积。注意,对于不合理的边长输入,要输出数据错误的提示信息。
----------------------------------------------------------------------------------------------------------------------
#include<math.h>
#include<stdio.h>
void main()
{
   int a,b,c;  //定义三边
   int p=0,x=0;  
   int s=0;   s为 面积
   scanf("%d %d %d",&a,&b,&c);
   if(a+b>c&&a+c>b)
   {
      if(a*a+b*b==c*c)
 {
    printf("这是直角三角形\n");
p=(a+b+c)/2;
x=p*(p-a)*(p-b)*(p-c);
s=sqrt(x);
printf("s=%d\n",s);
 }
 else if(a*a+b*b<c*c)
 {
   printf("这是钝角三角形\n");
p=(a+b+c)/2;
x=p*(p-a)*(p-b)*(p-c);
s=sqrt(x);
printf("s=%d\n",s);
 }
 else
 {
    
 printf("这是锐角三角形\n");
p=(a+b+c)/2;
x=p*(p-a)*(p-b)*(p-c);
s=sqrt(x);
printf("s=%d\n",s);
 }
   
   }
   else   printf("输入的边长不能构成三角形\n");
}
-----------------------------------------------------------------------------------
9、一个学习小组有5个人,每个人有3门功课的考试成绩。求全组分科的平均成绩和各科总评成绩。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
   int i,j,a[5][3];
   int sum=0,avg=0;
   for(i=0;i<5;i++)
  for(j=0;j<3;j++)
  {
  scanf("%d",&a[i][j]);
  }
   for(i=0;i<5;i++)
  for(j=0;j<3;j++)
  {
  printf("%-3d",a[i][j]);
  sum=sum+a[i][j];
  }
  printf("各科总和为:%ld\n",sum);
  avg=sum/15;
  printf("avg= %d\n",avg);
}
----------------------------------
10、打印输出杨辉三角(要求10行)。
-----------------------------------
#include<stdio.h>
void main()
{
  int i,j,a[10][10];
  for(i=0;i<10;i++) //确定每一行的值为1
 a[i][0]=1;
  for(i=0;i<10;i++) //确定每一行最后一个的值为1
 a[i][i]=1;
  for(i=2;i<10;i++)
 for(j=1;j<i;j++)
 a[i][j]=a[i-1][j-1]+a[i-1][j]; //计算中间的数
 for(i=0;i<10;i++)
 {
 for(j=0;j<=i;j++)
 {
 printf("%-3d",a[i][j]);
 
 } 
 printf("\n");
 }
}
-----------------------------------------------------------------------------------
11、输入数组,将最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出交换后的数组。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
 
{
  int _max(int b[10]);
  int _min(int c[10]);
  int i,a[10];
  int t=0,T=0,max,min;
  for(i=0;i<10;i++)
 scanf("%d",&a[i]);
  max=_max(a);
  min= _min(a);


  t=max;
  max=a[0];
  a[0]=t;


  T=min;
  min=a[9];
  a[9]=T;
  for(i=0;i<10;i++)
 printf("%-3d",a[i]); 
  printf("\n");


}
int _max(int b[10])
{
   int i,max=b[0];
   for(i=0;i<10;i++)
  if(max<b[i])
  max=b[i];
  return max;
}
int _min(int c[10])
{
   int i,min=c[0];
   for(i=0;i<10;i++)
  if(min>c[i])
  min=c[i];
  return min;
}
-----------------------------------------------------------------
12、编写程序,利用自定义函数,实现交换两个整型变量x和y值的功能。
----------------------------------------------------------------
#include<stdio.h>
void main()
{
  int _jh(int *p,int *q);         
  int x,y;
  int *p,*q;
  scanf("%d %d",&x,&y);
  p=&x;q=&y;
   _jh(p,q) ;
  printf("%d,%d\n",x,y);
}
int _jh(int *p,int *q)
{
  int t;
  t=*p;
  *p=*q;
  *q=t;
}
------------------------------------------------------------------
13、编写程序,利用自定义函数,实现求两个整型变量相除的余数的功能。
------------------------------------------------------------------
#include<stdio.h>
void main()
{
  int _yshu(int a,int b); 
  int x,y;
  printf("请输入两个整型变量:");
  scanf("%d %d",&x,&y);
  printf("余数= %d\n",_yshu(x,y)); 
}
int _yshu(int a,int b)
{
  int y;
  y=a%b;
  return y;
}
------------------------------------------------------------
14、编写程序,统计字符串中字母、数字、空格和其他字符的个数。
------------------------------------------------------------
#include<stdio.h>
#include<string.h>
void main()
{
   int s=0,dz=0,xz=0,k=0,qt=0,m=0;    //定义数字   大写字母  小写字母  空格字符  其他字符  m储存字符长度
   int i;
   char c[100];
   gets(c);
   m=strlen(c);
   for(i=0;c[i]!='\0';i++)
   {
     if(c[i]>=48&&c[i]<=57)
s=s+1;
if(c[i]>=65&&c[i]<=90)
dz=dz+1;
if(c[i]>=97&&c[i]<=122)
xz=xz+1;
if(c[i]==32)
k=k+1;
   }
   
   qt=m-s-dz-xz-k;
   printf("数字字符= %d,字母字符= %d,空格字符= %d,其他字符= %d\n",s,dz+xz,k,qt);
}
-----------------------------------------------
15、定义一个5X5方阵,求对角线上所有数字之和。
-----------------------------------------------
#include<stdio.h>
void main()
{
  int a[5][5],i,j;
  int s1=0,s2=0; // 定义对两条角线s1   s2
  for(i=0;i<5;i++)
 for(j=0;j<5;j++)
 scanf("%d",&a[i][j]);
 for(i=0;i<5;i++)
 s1=s1+a[i][i];
 for(i=0;i<5;i++)
 for(j=4;j>=0;j--)
 s2=s2+a[i][j];
  printf("对角线1= %d,对角线2= %d",s1,s2);
  printf("\n");


}
------------------------------------------
16、编写程序,实现将输入的字符串反序输出。
-----------------------------------------
#include<stdio.h>
#include<string.h>
int main()
{
char a[30],i,cd;
printf("输入字符串:\n");
gets(a);
cd=strlen(a);
for(i=cd-1;i>=0;i--)
printf("%c",a[i]);
return 0;
}
---------------------------------------
1用选择法对10个整数排序(由大到小)
---------------------------------------
#include<stdio.h>
void main()
{
   int a[10],i,j;
   int t;
   for(i=0;i<10;i++)
  scanf("%d",&a[i]);
   for(i=0;i<10-1;i++)
  for(j=i+1;j<10;j++)
  if(a[i]<a[j])
  {
     t=a[i];
 a[i]=a[j];
 a[j]=t;
  }
  for(i=0;i<10;i++)
  printf("%-3d",a[i]);
}
-------------------------------------------------------------------------------------------------
2 从键盘输入一个字符串。要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其它字符的个数
-----------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
int main()
{
    char n[30],i;
    int cd,dzm=0,xzm=0,sz=0,kg=0,qt=0;//依次代表字符串长度、大写字母、小写字母、数字、空格、其他;
    printf("\n输入一串字符:\n");
    gets(n); cd=strlen(n);
    printf("\n字符串的长度为 %d:\n",cd);
   for(i=0;i<cd;i++)
   {
       if(n[i]>='A'&&n[i]<='Z')
        dzm+=1;
       else if(n[i]>='a'&&n[i]<='z')
        xzm+=1;
       else if(n[i]>='0'&&n[i]<='9')
        sz+=1;
       else if(n[i]==' ')
        kg+=1;
       else qt+=1;
   }
   printf("\n大写字母有:%d个\n小写字母有 :%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",dzm,xzm,sz,kg,qt);
   return 0;
}
-----------------------------------------------------------------------------------
3 编写一函数,将字符串中的小写字母转换为大写字母,主函数输入字符串并输出结果。
-----------------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
void main()
{
  char a[100],i;
  gets(a);
  for(i=0;a[i]!='\0';i++)
 if(a[i]>=97&&a[i]<=122)
 {


a[i]=a[i]-32;


 }
printf("%s\n",a);
}
-----------------------------------------------------------------------------------
4输入10个数,编写一个函数,按降序对其排序,统计其中大于平均值的数的个数。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
   int i,j,a[10];
   int t,sum=0,avg=0;
   for(i=0;i<10;i++)
  scanf("%d",&a[i]);
   for(i=0;i<10-1;i++)
  for(j=i+1;j<10;j++)
  if(a[i]<a[j])
  {
     t=a[i];
 a[i]=a[j];
 a[j]=t;
  }
  for(i=0;i<=9;i++)
  printf("%-3d",a[i]);
  printf("\n");
  for(i=0;i<=9;i++)
  sum=sum+a[i];
      avg=sum/10;
  printf("平均值=%d\n",avg);
  for(i=0;i<10;i++)
  if(a[i]>avg)
  printf("%-3d",a[i]);
  printf("\n");
}
-----------------------------------------------------------------------------------
5写程序,通过函数求6 –300以内的素数的和。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int n, i = 2,sum=0;
printf("6至300的素数和为:");
for(n=6;n<=300;n++)
    {
        i=2;
   while(n>1&&i<=n)
{
if (i == n&&n%i==0)
{
sum=sum+n;
printf("%d是素数\t",n);break;
}
else if (n%i==0) break;
        i++;
}


}
printf("%d",sum);
return 0;
}
-----------------------------------------------------------------------------------
1、编写程序,输出100~200之间所有的素数。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int n, i = 2,sum=0;
printf("100至200的素数为:");
for(n=100;n<=200;n++)
    {
        i=2;
   while(n>1&&i<=n)
{
if (i == n&&n%i==0)
{
printf("%d是素数\t",n);break;
}
else if (n%i==0) break;
        i++;
}


}
return 0;
}
-----------------------------------------------------------------------------------
2、根据输入的百分制成绩,输入对应的分数段(用A~E表示)。
-----------------------------------------------------------------------------------
#include<stdio.h>
void main()
{
  int x;
  scanf("%d",&x);
  if(x>=90&&x<=100)
 printf("A\n");
  else if(x>=80&&x<90)
 printf("B\n");
  else if(x>=70&&x<80)
 printf("C\n");
  else if(x>=60&&x<70)
 printf("D\n");
  else if(x>=0&&x<60)
 printf("E\n");
  else 
 printf("出错");
}
-----------------------------------------------------------------------------------------------------------------------------------
3、编写程序,从键盘上连续输入若干个字符,直到输入回车符为止。统计并输出所输入的空格、大写字母、小写字母、数字字符及其它字符的个数。
------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
int main()
{
    char n[30],i;
    int cd,dzm=0,xzm=0,sz=0,kg=0,qt=0;//依次代表字符串长度、大写字母、小写字母、数字、空格、其他;
    printf("\n输入一串字符:\n");
    gets(n); cd=strlen(n);
    printf("\n字符串的长度为 %d:\n",cd);
   for(i=0;i<cd;i++)
   {
       if(n[i]>='A'&&n[i]<='Z')
        dzm+=1;
       else if(n[i]>='a'&&n[i]<='z')
        xzm+=1;
       else if(n[i]>='0'&&n[i]<='9')
        sz+=1;
       else if(n[i]==' ')
        kg+=1;
       else qt+=1;
   }
   printf("\n大写字母有:%d个\n小写字母有 :%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",dzm,xzm,sz,kg,qt);
   return 0;
}
------------------------------------------------------------------------------------------------------------------------------------
4、求如下一个3*3矩阵对角线元素之和。


0 1 2
3 4 5
6 7 8
-------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>


int main ()


{


    int a[3][3]={{0,1,2},{3,4,5},{6,7,8}};


    int i,j,sum=0;


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


        sum=a[i][i]+sum;


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


    {


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


        {


            if(i+j==2)


       sum=a[j][i]+sum;
 
        }


    }


printf("和为:%d\n",sum);


    return 0;


}  
-------------------------------------------------------------------------------------------------------------------------------------
5、编程利用递归和函数调用方法计算小学生的年龄,已知第1位学生年龄最小,为6岁,其余学生一个比一个大一岁,求第8位学生的年龄。递归公式如下:


                    6         (n=1)
      age(n)=


age(n-1)+1  (n>1)
--------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
int age(int n);
int main()
{
int n;
printf("求第几位学生的年龄?:");
scanf("%d",&n);
printf("\n第%d位学生的年龄为:%d\n",n,age(n));
}
int age(int n)
{
if(n==1)
return 6;
else if(n>1)
return (age(n-1)+1);
}
---------------------------------------------------------------------------------------------------------------------------------------
1输入三个整数x,y,z,请把这三个数由小到大输出
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[3], i, t;
printf("请输入三个整数:");
for(i=0;i<3;i++)
scanf("%d", &a[i]);
for(i=0;i<3;i++)
printf("%d", a[i]);
printf("\n");
t = a[0];
for (i = 1; i < 3; i++)
{
if (a[i] < a[i-1]) {
t=a[i-1];
a[i - 1] = a[i];
a[i] = t;
}
}
for (i = 0; i < 3; i++)
printf("%d", a[i]);
return 0;
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
2打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
int main() 
{
int i,j,k,n; 
printf("'water flower'number is:"); 
for(n=100;n<1000;n++) 

i=n/100;/*分解出百位*/ 
j=n/10%10;/*分解出十位*/ 
k=n%10;/*分解出个位*/ 
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 
printf("%-5d",n); 
}
return 0;
}
-----------------------------------------------------------------------------------
3输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
-----------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
int main()
{
    char n[30],i;
    int cd,dzm=0,xzm=0,sz=0,kg=0,qt=0;//依次代表字符串长度、大写字母、小写字母、数字、空格、其他;
    printf("\n输入一串字符:\n");
    gets(n); cd=strlen(n);
    printf("\n字符串的长度为 %d:\n",cd);
   for(i=0;i<cd;i++)
   {
       if(n[i]>='A'&&n[i]<='Z')
        dzm+=1;
       else if(n[i]>='a'&&n[i]<='z')
        xzm+=1;
       else if(n[i]>='0'&&n[i]<='9')
        sz+=1;
       else if(n[i]==' ')
        kg+=1;
       else qt+=1;
   }
   printf("\n大写字母有:%d个\n小写字母有 :%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",dzm,xzm,sz,kg,qt);
   return 0;
}
-----------------------------------------------------------------------------------
4有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int i,cs[20],bcs[20];//最后两个值,太大导致为负数(未解决……)
cs[0]= 1;
cs[1]= 2;
for (i = 2; i < 20; i++)
{
cs[i] = cs[i - 1] + cs[i - 2];
}
bcs[0]=2;
bcs[1]=3;
for (i = 2; i < 20; i++)
{
bcs[i] = bcs[i - 1] + bcs[i - 2];
}
for(i=0;i<20;i++)
printf("\na[%d]=%d/%d\n", i,bcs[i],cs[i]);
return 0;
}
-----------------------------------------------------------------------------------
5求1+2!+3!+...+20!的和
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int i, n = 20, sum = 1, he = 0;
for (i = 1; i <= n; i++)
{
sum = sum*i;
he = he + sum;
}
printf("%d", he);
return 0;
}
--------------------------------------------------------
题目1:输入三个整数x,y,z,请把这三个数由小到大输出。
------------------------------------------------------
#include<stdio.h>
int main()
{
int a[3], i, t;
printf("请输入三个整数:");
for(i=0;i<3;i++)
scanf("%d", &a[i]);
for(i=0;i<3;i++)
printf("%d", a[i]);
printf("\n");
t = a[0];
for (i = 1; i < 3; i++)
{
if (a[i] < a[i-1]) {
t=a[i-1];
a[i - 1] = a[i];
a[i] = t;
}
}
for (i = 0; i < 3; i++)
printf("%d", a[i]);
return 0;
}
-----------------------------------------------------
题目2:求1+2!+3!+...+20!的和
---------------------------------------------------
#include<stdio.h>
int main()
{
int i, n = 20, sum = 1, he = 0;
for (i = 1; i <= n; i++)
{
sum = sum*i;
he = he + sum;
}
printf("%d", he);
return 0;
}
------------------------------------------------------
题目3:输入n值,输出如下图所示高为n的图形。


*
***
*****
*******
*********
----------------------------------------------
#include<stdio.h>
int main()
{
int n, i, j=0;
printf("输入n值:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 0; j<(1+2*(i-1)); j++) 
{
printf("*");
if (i ==1)

break;printf("错误");
}
}
printf("\n");
}
return 0;
}
---------------------------------------------------
题目4:将一个数组逆序存放并输出。
-----------------------------------------------------------
#include<stdio.h>
int  main()
{
int a[10],i,j;
printf("输入一个10个元素的数组:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for (i = 0; i < 5; i++)
{
j = a[i];
a[i] = a[9-i];
a[9-i] = j;
}
for (i = 0; i < 10; i++)
printf("%d  ", a[i]);
return 0;
}
-----------------------------------------------------------------------------------
题目5:从键盘输入一个字符串,将小写字母全部转换成大写字母并输出。
-----------------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
int main()
{
char ch[20], i, cd;
printf("输入字符串:");
gets(ch);
cd = strlen(ch);
for (i = 0; i<cd; i++)
{
if (ch[i] >= 'a'&&ch[i] <= 'z')
ch[i] = ch[i] - 32;
}
ch[cd] = '\0';
printf("%s", ch);
return 0;
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.某航空公司规定:根据月份和订票张数决定机票价格的优惠率,在旅游的旺季7—9月份,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季1—5月份,10月份,11月份,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。请编写程序实现。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int month,n;
printf("请输入月份:");
scanf("%d", &month);
printf("请输入票数:");
scanf("%d", &n);
if (month >= 7 && month <= 9)
{
if (n > 20)
printf("优惠15%%");
else
printf("优惠5%%");
}
else if (month >= 1 && month <= 5 || month == 10 || month == 11)
{
if (n > 20)
printf("优惠30%%");
else
printf("优惠20%%");
}
else printf("优惠10%%");
return 0;
}
-----------------------------------------------------------------------------------
2.假设一个班上有20个学生,输入某一门课程的考试成绩,然后统计出该班不及格的学生人数,平均成绩。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[20], i, n=0, avge=0;
printf("输入成绩:");
for(i=0;i<20;i++)
scanf("%d", &a[i]);
for (i = 0; i < 20; i++)
{
if (a[i] < 60)
n += 1;
avge = avge + a[i];
}
printf("该科平均成绩为%d\t不及格人数为%d", avge / 20, n);
return 0;
}
---------------------------------------------------------------------------------------------------------
3.输入一个正整数,判断其是否是素数。要点:素数是大于1的整数,除了能被自身和1整除外,不能被其他正整数整除。
---------------------------------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int n, i = 2;
printf("请输入一个数:");
scanf("%d", &n);
while(n>1&&i<=n)
{
if (i == n&&n%i==0)
{
printf("该数为素数\n"); break;
}
else if (n%i==0)
{
printf("该数不是素数\n"); break;
}
else i++;
}
return 0;
}
-----------------------------------------------------------------------------------
4.从键盘上输入10个整数存放在数组a中,并以倒序存放在数组a中并输出。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[10], i,t;
printf("请输入10个整数:");
for (i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
for (i = 0; i < 10; i++)
printf("a[%d]=%d ", i, a[i]);
printf("\n");
for(i=0;i<5;i++)
{
t = a[i];
a[i] = a[9 - i];
a[9 - i] = t;
}
for (i = 0; i < 10; i++)
printf("a[%d]=%d ", i, a[i]);
}
-----------------------------------------------------------------------------------
5.编写一个swap(int x,int y)函数,实现将x和y进行交换,并完成main函数的代码。
-----------------------------------------------------------------------------------
#include<stdio.h>
int swap(int *x, int *y);
int main()
{
int x, y;
printf("请输入两个字符:");
scanf("%d%d", &x, &y);
swap(&x, &y);
printf("%d\t%d", x, y);
return 0;
}
int swap(int *x,int *y)
{
int t;
t = *x;
*x = *y;
*y = t;
return 0;
}
-----------------------------------------------------------------------------------
题目一:
请将小写字母e,f,g转换为大写字母E,F,G输出。
-----------------------------------------------------------------------------------
#include<stdio.h>
char main()
{
char e, f, g;
printf("将小写字母e,f,g转化为大写字母后:\n");
e = 'e' - 32;
f = 'f' - 32;
g = 'g' - 32;
printf("%c,%c,%c", e, f, g);
return 0;
}
-----------------------------------------------------------------------------------
题目二:
编写程序判断输入的字符是否为f,若是输出Yes,否则输出No.
-----------------------------------------------------------------------------------
#include<stdio.h>
char main()
{
char ch;
printf("输入一个字符:");
scanf("%c",&ch);
if (ch == 'f')
printf("Yes");
else printf("No");
return 0;
}
-----------------------------------------------------------------------------------
题目三:
编写程序求1+2+3+...+200的和。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int num = 0, i;
for (i = 1; i <= 200; i++)
{
num = num + i;
}
printf("1-200的和为:%d",num);
return 0;
}
-----------------------------------------------------------------------------------
题目四:
通过键盘输入6名学生C语言课程的成绩,并求出6个学生的平均成绩和最高分。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int i,grade=0,avge=0,x,a[6];
printf("输入成绩:");
for (i = 0; i < 6; i++)
scanf("%d", &a[i]);
for (i = 0; i < 6; i++)
avge=a[i]+avge;
avge = avge / 6;
for (i = 0; i < 6; i++)
{
if (a[i] > grade)
{
grade = a[i];
x = i;
}
}
printf("平均成绩为:%d\n成绩最高为a[%d]=%d", avge, i, grade);
return 0;
}
-----------------------------------------------------------------------------------
题目五:
一个小组有3个人,每人有2门课的考试成绩,键盘输入3个人的所有成绩,并求全组每一门课的平均成绩以及各科的总平均成绩。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[3][2], i, j;
int avge1 = 0, avge2 = 0, avge = 0;//1为第一科,以此类推,avge为总成绩的平均;
printf("输入成绩:");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)
scanf("%d", &a[i][j]);
}
for (i = 0; i < 3; i++)
{
avge1 = (avge1+a[i][0])/3;
avge2 = (avge2+a[i][1])/3;
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)
avge = a[i][j] + avge;
}
avge = avge / 6;
printf("第一科成绩的平均成绩为:%d\n第二科成绩的平均成绩为:%d\n总成绩的平均成绩为:%d\n", avge1,avge2, avge);
return 0;
}
-----------------------------------------------------------------------------------
1.求100-99-98-97-96-...3-2-1,并输出结果。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[101],i=1,num=100;
for (i; i <= 100; i++)
num = num - i;
printf("%d", num);
return 0;
}
-----------------------------------------------------------------------------------
2.编写程序要求输入整数x,y和z,若x+y+z大于1000,则输出x+y+z千位以上的数字,否则输出三个位上数字之和。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int x, y, z,num;
printf("请输入三个整数:\n");
scanf("%d %d %d", &x, &y, &z);
if ((x + y + z) > 1000)
printf("x+y+z=%d", x + y + z);
else 
num = x + y + z;
x = num / 100;
y = (num - 100 * x) / 10;
z = num - x*100 - y*10;
printf("%d", x+y+z );
return 0;
}
-----------------------------------------------------------------------------------
3.输入n值,输出如下图所示高为n的等腰三角形。
             *
            ***
           *****
          ******* 
         *********
        ***********


-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int n, i, j=0,k;
printf("输入n值:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for(k=0;k<n-i;k++)
printf(" ");
for (j = 0; j<(1+2*(i-1)); j++)
{


printf("*");
if (i ==1)
{
break;printf("错误");
}
}
printf("\n");
}
return 0;
}
-----------------------------------------------------------------------------------
4.输入一个数组,将该数组的元素逆序输出。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[10],i=0,t;
printf("输入一个数组:");
for (i; i < 10; i++)
{
scanf_s("%d", &a[i]);
}
for (i=9; i >=0; i--)
{
printf("%d  ", a[i]);
}
return 0;
}
-----------------------------------------------------------------------------------
5.用递归法计算n!,可用以下公式:


当n=0,0时    n!=1
当n>1时      n!=n*(n-1)!
-----------------------------------------------------------------------------------
#include<stdio.h>
int jc(int n);
int main()
{
int n;
printf("输入___的阶乘:");
scanf("%d", &n);
n=jc(n);
printf("%d", n);
return 0;
}
int jc(int n)
{
int i = 0;
if (n >1) 
n = n*jc(n - 1);
else if(n==0)
n=1;
return n;
}
-----------------------------------------------------------------------------------
1.输入两个学生的成绩,输出其中高的成绩。
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
float studenta,studentb;
printf("please input studenta grade:");
scanf("%f", &studenta);
printf("please input studentb grade:");
scanf("%f", &studentb);
if (studenta > studentb)
printf("best grade is studenta=%.1f",studenta);
else 
printf("best grade is studentb=%.1f", studentb);
return 0;
}
-----------------------------------------------------------------------------------
2.编一个程序,当x输入任意的正数时,y都输出1;当x输入任意的负数时,y都输出-1,当给x输入0时,y输出0;
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int x, y;
printf("please input a number:");
scanf("%d", &x);
if (x > 0)
printf("%d", y = 1);
else if (x < 0)
printf("%d", y = -1);
else if (x = 0)
printf("%d", y = 0);
return 0;
}
-----------------------------------------------------------------------------------
3.求Fibonacci数列:1,1,2,3,5,8,……的前40个数
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int  a[40], i;//最后两个值,太大导致为负数(未解决……)
a[0] = 1;
a[1] = 1;
for (i = 2; i < 38; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
for(i=0;i<40;i++)
printf("a[%d]=%d\n", i, a[i]);
return 0;
}
-----------------------------------------------------------------------------------
4.利用for循环打印如下由*组成的倒三角形。
*
**
***
****
*****
******
*******
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int i,j;
for (i = 0; i < 7; i++)
{
for (j = 7; j >=(7-i); j--)
{
printf("*");
}
printf("\n");
}
return 0;
}
-----------------------------------------------------------------------------------
5.将数组中的数按颠倒顺序重新排放。操作时,只能借助一个临时存储的单元,不得另外开辟数组。

10 20 30 40 50 60 70
a[0] a[1] a[2] a[3] a[4] a[5] a[6]
改变为:
70 60 50 40 30 20 10
a[0] a[1] a[2] a[3] a[4] a[5] a[6]
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int a[7] = { 10,20,30,40,50,60,70 };
int i,t;
printf("原数组为:\n");
for (i = 0; i < 7; i++)
printf("a[%d]=%d", i, a[i]);
for (i = 0; i < 3; i++)
{
t = a[i];
a[i] = a[6 - i];
a[6 - i] = t;
}
printf("现数组为:\n");
for (i = 0; i < 7; i++)
printf("a[%d]=%d", i,a[i]);
}
-----------------------------------------------------------------------------------
写出下列题目要求的完整程序:
1,用改进的冒泡排序法对N个数排序;
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int  n,a[n], i, j, t;
printf("输入n的个数:");
scanf("%d", &n);
printf("输入10个元素的数组:");
for (i = 0; i<n; i++)
scanf("%d", &a[i]);
for (i = 0; i<n; i++)
{
for (j = 1; j<n - i; j++)
if (a[j] >= a[j - 1])
{
t = a[j - 1];
a[j - 1] = a[j];
a[j] = t;
}
}
for (i = 0; i<n; i++)
printf("%d\t", a[i]);
return 0;
}
-----------------------------------------------------------------------------------
2,输出九九乘法表;
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int i, j;
for (i = 1; i < 10; i++)
{
for (j = 1; j <= i; j++)
{
printf("%dx%d=%d\t", j, i, i*j);
}
printf("\n");
}
return 0;
}
-----------------------------------------------------------------------------------
3,移动含有N个盘子的汉诺塔;
-----------------------------------------------------------------------------------
#include<stdio.h>
int move(int n, int x, int y, int z);
int main()
{
int h;
printf("\ninput number:\n");
scanf("%d", &h);
printf("the step to ,moving %2d diskes:\n", h);
move(h, 'a', 'b', 'c');
}
int move(int n, int x, int y, int z)
{
if (n == 1)
printf("%c-->%c\n", x, z);
else {
move(n - 1, x, z, y);
printf("%c-->%c\n", x, z);
move(n - 1, y, x, z);
}
return 0;
}
-----------------------------------------------------------------------------------
4,求至少6项斐波那契级数;
-----------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
int  a[40], i,xs;//最后两个值,太大导致为负数(未解决……)
a[0] = 1;
a[1] = 1;
printf("输入项数:");
scanf("%d",&xs);
for (i = 2; i < xs-2; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
for(i=0;i<xs;i++)
printf("a[%d]=%d\n", i, a[i]);
return 0;
}
-----------------------------------------------------------------------------------
5,统计不少60个字符的字符串中单词的数目.
-----------------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
int main ()
{
char a[60],i,n=1;
printf("请输入单词:");
gets(a);
for(i=1;i<61;i++)
{
if(a[i]==' '&&i+1<=60)
{
if(a[i-1]>='a'&&a[i-1]<='z'||a[i-1]>='A'&&a[i-1]<='Z')
{
if(a[i+1]>='a'&&a[i+1]<='z'||a[i+1]>='A'&&a[i+1]<='Z')
n+=1;
}
}
if(a[i]=='\0') break;
}
printf("有%d个单词\n",n);
return 0;
}
-----------------------------------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/weixin_41883580/article/details/80502164