C语言经典题集合

1. 三个数由小到大排序

输入任意3个整数,编程实现对这3个整数进行由小到大排序井将排序后的结果显示在屏幕上

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
    int a, b, c, t;
    printf("请任意输入三个数(空格分隔):\n");
    scanf("%d %d %d", &a, &b, &c);
    if (a < b) 
    {
    
     t = a;
     a = b;
     b = t;
    }    
    else if (a < c) 
    {
    
     t = a;
    a = c;
    c = t; 
    }    
    else if (b < c)
    {
    
     t = b; 
    b = c;
    c = t;
    }   
    printf("从大到小排列为:%d %d %d\n", a, b, c);
    system("pause");
    return 0;
}

2. a²+b²

要求输入整数a和 b, 若a²+b²的结果大与100, 则输出a²+b²的值,否则输出 a+b 的结果

#include <stdio.h>
void main()
{
    
    
    int a,b;
    printf("请输入两个整数:\n");
    scanf("%d,%d,",&a,&b);
    if(a*a+b*b>100)
{
    
    
        printf("(a*a+b*b)/100=%d",(a*a+b*b)/100);
    }
    else
{
    
    
        printf("a+b=%d",a+b);
    }
    return 0;
}

3. 判断闰年

判断任意年份是否为闰年,需要满足以下条件中的任意一个:
该年份能被 4 整除同时不能被 100 整除;
该年份能被400整除

    #include <stdio.h>
    int main()
    {
    
    
        int year,a;
        printf("请输人年份:\n");
        scanf("%d",&year);
        if(year%400==0)
            a=1;
        else
        {
    
    
            if(year%4==0&&year%100!=0)
                a=1;
            else
                a=0;
        }
        if(a==1)
        {
    
    
            printf("%d 此年是闰年\n",year);
        }
        else
        {
    
    
            printf("%d 此年非闰年\n",year);
        }
        return 0;
    }

4. 编程判断输入的数是否既是5又是7的整倍数,如果是输出yes, 否则输出no

int main(){
    
    
int n;
 scanf("%d",&n);
 if(n%5==0&&n%7==0)
{
    
    
 printf("yes");
   }
 else{
    
    
 printf("no");
   }
 printf("\n");
 return 0;
}

5. 成绩排名,编程对输入的分数给出相应的等级,分数大于等于90为"A",80-89为"B",70-79 为"C",60-69为"D",60分以下为"E"。

#include<stdio.h>
int main()
{
    
    
    int a;
    printf("请输入成绩:");
        scanf("%d",&a);
    if(a>=90&&a<=100)
         printf("等级是A\n");
    else if(a>=80&&a<=89)
         printf("等级是B\n");
    else if(a>=70&&a<=79)
         printf("等级是C\n");
    else if(a>=60&&a<=69)
         printf("等级是D\n");
    else if(a>=0&&a<=59)
         printf("等级是E\n");
    else if(a<0)
         printf("输入错误,请输入1~100的成¦绩");
      getchar();
        return 0;
}

6. 打印乘法口诀表


#include<stdio.h> 
 
int main(){
    
      
    //外层循环变量,控制行  
    int i = 0;  
    //内层循环变量,控制列   
    int j = 0;   
    for(i=1;i<=9;i++){
    
      
        for(j=1;j<=i;j++){
    
      
            printf("%dx%d=%d\t",j,i,i*j);  
        }  
        //每行输出完后换行   
        printf("\n");     
    }  
}

7.打印三角形

#include <stdio.h>
int main() {
    
    
  int i, j;
  int line;
  printf("请输入行数:");
  scanf("%d", &line);
  for (i = 0; i <= line; i++) {
    
    
    for (j = line - i + 1; j <= line; j++) {
    
    
      printf("* ");
    }
    printf("\n");
  }
  return 0;
}

8.序列求和

用while循环做一个简单的计算s=1 + 1/2+ 1/3+ … + 1/n。

#include <stdio.h>

int main()

{
    
    

    int i=1;

    double sum=0;

    while(i<=100){
    
    

        sum += 1.0/i;

        i++;

    } 

    printf("sum=%0.2lf",sum);
return;
}

(如果不是题目限制while,这里也可以用for循环,应该也更加直观)

9.整数加减法练习

练习者自己选择是进行加法还是减法运算,之后输入进行多少以内的加法或减法运算,具体数值会由计算机随机产生,输入答案,计算机会根据输人的数据判断结果是否正确

#include<stdio.h>
#include<stdlib.h>        //srand()
#include<time.h>          //time()
int main()
{
    
    
    int sign,a,b,c;
    char sign1;
    int max;            //最大范围
    scanf("%d", &sign);
    scanf("%d", &max);
    srand((unsigned long)time(0));
    a = rand() % max;
    b = rand() % max;
    while (sign==1&&a<b)    //如果为减,a又比b小重新生成随机数
    {
    
    
        a = rand() % max;
        b = rand() % max;
    }
    sign1 = (sign == 1 ?'-':'+');
    printf("%d%c%d=", a, sign1, b);
    scanf("%d", &c);
    if ((sign == 1) && (a - b == c) || (sign != 1) && (a + b == c))
        printf("right");
    else
        printf("error");
    return 0;
}

10.猴子吃桃问题

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

include<stdio.h>
int main()
{
    
    
int day,x1,x2;
day=9;
x2=1;
while(day>0)
 {
    
    x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
 x2=x1;
 day--;
 }
printf("the total is %d\n",x1);
return 0;
}

11.数组逆序排序

#include<stdio.h>
int main()
{
    
    
    int a[10], i, temp;
    printf("请输入一串要逆序输出的数字:"); //输入一串数字
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    putchar('\n');
    for (i = 0; i < 10 / 2; i++)        //将数字逆序输出
    {
    
    
        temp = a[i];
        a[i] = a[10 - i - 1];
        a[10 - i - 1] = temp;
    }
    printf("逆序输出后的结果为:");
    for (i = 0; i < 10; i++)
        printf("%3d", a[i]);

    return 0;
}

12.不用strcat 连接两个字符串

思路:先了解下strcat的特性,先看一个网上找的demo:

#include <stdio.h>
#include <string.h>
 
int main ()
{
    
    
   char src[50], dest[50];
 
   strcpy(src,  "This is source");
   strcpy(dest, "This is destination");
 
   strcat(dest, src);
 
   printf("最终的目标字符串: |%s|", dest);
   
   return(0);
}

输出结果:
|This is destinationThis is source|

因此明白是把两个段落链接起来的

#include <stdio.h>
main()
{
    
    
    char a[100],b[100];
    int i=0,j=0;
    printf("Please input 2 strings:\n");
    gets(a);     //输入字符串啊,a,b
    gets(b);
    while(a[i]!='\0')
        i++;       //  i 表示字符串a的'\0'所在的位置
    while(b[j]!='\0')   //将b中字符一个个赋值给'\0'以及其后面的位置,i++,j++控制一一对应
        a[i++]=b[j++];
    a[i]='\0'     //给一个结束标志
    puts(a);    //输出
    return 0;
}

猜你喜欢

转载自blog.csdn.net/C214574728/article/details/127109368
今日推荐