首页 > 其他分享 >C语言!!!!

C语言!!!!

时间:2023-12-12 21:25:30浏览次数:23  
标签:include int sum C语言 printf main scanf

//已有一个已正序排好!!!的9个元素的数组
//今输入一个数要求按原来排序的规律将它插入数组中。
//样例输入
//1 7 8 17 23 24 59 62 101
//50
#include<stdio.h>
int main()
{
    int a[10],i,m,t;//因为要插入一个数 所以共有十个数 下标为10
    for(i=0;i<9;i++)
    {
    scanf("%d",&a[i]);
    }
    a[9]=0;//a[9]可以被赋给任何值
    //因为下面会把一个数的值赋给a[9]
    scanf("%d",&m);
    if(m<=a[0])
        t=0;
    if(m>=a[8])
        t=9;
    for(i=0;i<9;i++)
    {
        if(m>=a[i]&&m<=a[i+1])
        {
            t=i+1;
            break;//遇见一次就停止
        }
    }
    for(i=9;i>t;i--)
    {
        a[i]=a[i-1];
    }
    a[t]=m;
    for(i=0;i<10;i++)
    {
        printf("%d",a[i]);
        printf("\n");
    }
    return 0;
}
//选择法排序
#include<stdio.h>
void getnum(int b[],int n);
void sort (int b[],int n);
void print(int b[],int n);
int main(void)
{
    int a[100];
    int n;
    printf("请输入数组元素:");
    scanf("%d",&n);
    getnum(a,n);
    sort(a,n);
    return 0;
}
void getnum(int b[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&b[i]);
    }
}
void sort(int b[],int n)
{
    int i,k,j,a;
    for(i=0;i<n-1;i++)
    {
        k=i;//原因是下边有一个要判断是否和i原来的值相等
        //所以i的值不可以变 但是i的值还是要在需要判断和i值是否相等的地方之前用到
        //所以要把的初始值赋给另一个变量
        for(j=i+1;j<n;j++)
        {
            if(b[j]>b[k])
            {
                k=j;
            }

        }
        if(k!=i)
        {
            a = b[k];
            b[k] = b[i];
            b[i] = a;
        }
        print(b,n);
        putchar('\n');//一次换行
    }
    //print(b,n);放在这里只会出现最终结果
}
void print(int b[],int n)
{
    int i;
    for(i=0;i<5;i++)
    {
        
        printf("%d\t",b[i]);//\t是为了让数字之间有空隙
    }
}
//写程序:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。

//思路:观察这组数据,设第一项的分子为a,分母为b,则第一项为a/b,第二项为(a+b)/a,
//第三项为((a+b)+a)/(a+b),第四项为(((a+b)+a))+(a+b))/((a+b)+a)......
//总而言之,后一项的分子为前一项分子分母的和,后一项的分母为前一项的分子


#include<stdio.h>
int main(){
    double Sn=0,an=0,n,i,t,a=2.0,b=1.0;//a为分子!!!b为分母!!!!!an为单项和值,Sn为总和
    scanf("%lf",&n);
    Sn=Sn+a/b;//第一项不在规律中,在循环前先加入
    for(i=1;i<n;i++){
        t=a;//因为a和b的值需要用到没有改变的所以要调用第三个参数 细品!!!
        a=a+b;//将前一项的分子加分母给后一项的分子
        b=t;//将前一项的分子给后一项的分母
        an=a/b;
        Sn=an;
    }
    printf("%0.2lf",Sn);
    return 0;


    //因为数列是分数形式,所以sum和分子分母数都要定义为浮点型
    //且因为是赋值为浮点型,赋值的数一定要是小数
}
//求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。
//例如,n=5时=2+22+222+2222+22222,n由键盘输入
//注意解题思路!!!!!


//①首先回顾本题
//求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。 例如,n=5时=2+22+222+2222+22222,n由键盘输入。
//首先我们第一反应必然是循环,那么如何通过循环求解就是一个比较重要的问题了。
//第一步,列好C语言的基本格式:

#include<stdio.h>
int main(){
    return 0;
} 
//②第二步,确认变量,首先需要一个输入值,我们将其设置为n,
//需要一个输出值,我们设置为sum,再加上最后控制循环的变量i。三个变量就找到了,于是我们可以写出

#include<stdio.h>
int main(){
    int n, i, sum = 0;
    scanf("%d", &n);
    for(i = 0; i < n; i++){
    }
    return 0;
} 
//③相比有的同学很好奇为什么只用一个循环,而不是通过循环先求出单个的2, 22,222,2222,22222。
//然后再通过循环累加。这是因为其中存在着规律~
//从规律中,我们可以看到,个位的2出现过n次,而十位的出现过n-1次以此类推!
//这意味着其中有规律,有规律就意味着可以简化!
//于是我们思考一下,是否可以从最高为开始,比如说最高位只有一个2,然后两个,三个……
//是的,我们可以用公式来归纳!
//于是我们从最高为开始,依次补足!

#include<stdio.h>
int main(){
    int n, i, sum = 0;
    scanf("%d", &n);
    for(i = 0; i < n; i++){
        sum *= 10;
        sum += 2 * (i+1);
    }
    printf("%d", sum);
    return 0;
} 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main ()
{
    int magic;
    int guess;
    int counter = 0;
    int ret;
    char reply;
    /*unsigned int seed;
    printf("please enter seed:");
    scanf("%u",&seed);
    srand(seed);*/
    srand(time(null));
    //相当于对magic的赋值 控制随机数的范围
    do
    {
        counter = 0;
        magic = rand()%100+1;
    do{
        printf("please guess a magic number:");
        ret = scanf("%d",&guess);
    while (ret!=1)
    {
        while (getchar() !='\n');
        //fflush(stdin);
        printf("please guess a magic number:");
        ret = scanf("%d",&guess);
    }
    counter++;
    if(guess>magic)
    {
        printf("wrong!too big!\n");
    }
    else if(guess<magic)
    {
        printf("wrong!too small!\n");
    }
    else
    {
        printf("right!\n");
    }
    }while(guess!=magic&&counter<10);//不符合这个条件,程序会退出
    printf("counter=%d\n",counter);
    printf("do you want to continue (y/n or y/n)?");
    scanf(" %c",&reply);
    }while (reply == 'y'||reply == 'y');

    return 0;
    

}
//#include <stdio.h>
////1.输出100-999的所有水仙花数
////水仙花数:个位数的三次方+十位数的三次方+百位数的三次方=本身
////int main(void)
////{
////    
////    int i,a,b,c;
////    for(i=100;i<=999;i++){
////        a=i/100;//百位数
////        b=(i-a*100)/10;//十位数
////        c=i%10;//个位数
////        if(a*a*a+b*b*b+c*c*c==i){
////            printf("%d\n",i);
////        }
////    }
////    return 0;
////}
//
//
////2.输入10个数 输出最大值
////int main(void)
////{
////    int i;
////    float x,max;
////    printf("请输入第一个数:");
////    scanf("%f",&x);
////    max=x;
////    for(i=1;i<=9;i++){ //i<=9的原因是前边已有一个数现在只需要一个到9就可以了
////        printf("请输入第%d个数:",i+1);//i+1的原因是前边必须要有一个
////        scanf("%f",&x);
////        if(x>max)
////            max=x;
////        }
////    printf("10个数的最大值是:%.0f",max);
////    return 0;
////
////
////}
//
//
////3.由键盘输入一个正整数判断该数是否为完数
////完数:数本身=因子之和 因子不算本身
////int main(void)
////{
////    int number,sum,i;
////    printf("请输入一个正整数:");
////    scanf("%d",&number);
////    sum=0;
////    for(i=1;i<=number-1;i++){
////        if(number%i==0){
////            sum=sum+i;
////    }
////    if(number==sum){
////        printf("%d是完数\n",number);
////    }
////    else{
////        printf("%d不是完数\n",number);
////    }
////
////}
//
//
////4.分别判断从键盘上输入的字符 数字 大写字母 小写字母 然后输出他们的个数
////规定:从键盘上输入的个数是用户随意决定的
//int main(void)
//{
//    int s1,s2,s3,s4;
//    s1 = s2 = s3 = s4 = 0;
//    char ch;
//
//    for(ch=getchar();ch!='\n';ch=getchar()){//这句话可以改成for(;(ch=getcar())!='\n';)
//                                            //中间的这句话是程序结束的条件
//        if(ch>='A' && ch<='Z'){
//            s1++;
//        }
//        else if(ch>='a' && ch<='z'){
//            s2++;
//        }
//        else if(ch>'0' && ch<'9') {
//            s3++;
//        }
//        else { 
//            s4++;
//        }
//    }
//    printf("大写字母个数是%d\n小写字母个数是%d\n数字个数是%d\n其他数字个数是%d\n",s1,s2,s3,s4);
//    return 0;
//}
//
////5.由键盘输入三个数,将其组合成一个整形数输出
////int main(void)
////{
////    int n=0,i;
////    char ch;
////    printf("输入3个数字:");
////    for(i=1;i<=3;i++){
////        scanf(" %c",&ch);//空格
////        n=n*10+ch-'0';
////        //先输入的数字*10+后输入的数字 依此类推
////        //一个字符型和一个字符型做运算会转换成整型值
////        //ch-'0'也可以换成ch-48 这两个都相当于他们对应的ASCII运算 结果是整形值是数字
////        //如果ch定义为int类型则也对和上边的区别是
////        //1.scanf(%d)%d前边不需要空格
////        //2.int如果连续输入123中间没有空格是会把123当作一个数字
////        //而char类型默认只可以读取一个数 123 中间没有空格也会当作3个数
////    }
////    printf("%d\n",n);
////        return 0;
////}
////6.由键盘输入一个正整数,判断其是否为素数
////素数:除了1和它本身没有其他的约数
////int main(void)
////{
////    int i,flag,number;
////    printf("请输入一个正整数:");
////    scanf("%d",&number);
////    flag = 1;
////    for(i=2;i<=number-1 && flag;i++)//i的初始值还有取值范围都取决于素数的定义
////    {
////        if(number%i==0)
////        {
////            flag=0;
////        }
////        if(flag)
////        {
////            printf("%d是素数\n",number);
////        }
////        else
////        {
////            printf("%d不是素数\n",number);
////        }
////    }
////    return 0;
////}
//    //上边程序可以写成
//    //while((i<=number-1) && (flag))
//    //{
//    //    if(number%i!=0)
//    //    {
//    //        i++;//意思是循环直至不符合
//    //    }
//    //    else
//    //    {
//    //        flag = 0;
//    //    }
//
//    //}
//    //if (flag)
//    //{
//    //    printf("%number是素数\n",number);
//    //}
//    //else
//    //{
//    //    printf("%number不是素数\n",number);
//    //}
//    //return 0;
//
//
////7.求两个自然数的最大公约数和最小公倍数
////int main(void)
////{
////    int a,b,r,n,m;
////    printf("请输入两个整数:");
////    scanf("%d%d",&a,&b);
////    m=a,n=b;//把a b分别赋值给m n,是因为后边求最小公倍数会用到 a b原来的值
//             //但求最大公约数的时候会改变ab的值 所以要先赋值
////    do
////    {
////        r=a%b;
////        a=b;//b第一次是自己本身后续都是这一次的余数
////        b=r;//a第一次是自己第二次是b的值以后的每一次都是上一次的余数
////    }while(r!=0);
////    printf("%d和%d的最大公约数是:%d\n",a);
////    printf("最小公倍数是:%d\n",m*n/a);
////    return 0;
////
////
////
//////8.输入一个整数,统计该数的位数
////int main (void)
////{
////
////    long n,m;
////    int count = 0;
////    printf("请输入一个整数:");
////    scanf("%ld",&n);
////    m=n;
////    if(n<0)n=-n;
////    do
////    {
////        n=n/10;//注意方法!!!!
////        count++;
////
////    }while(n!=0);
////    printf("整数%ld有%d位数\n",m,count);
////}
//
////不理解为什么把n赋值给m ???
////将 n 的值赋给 m,是因为在后续的代码执行中,
////n 的值会被更改,如果我们需要输出原始的输入值,就需要一个备份,这时候 m 就起到了备份的作用。
////也就是说,m 保存的是原始的输入整数 n 的值,n 在后面的操作中可能会被修改
////但是 m 没有被修改。所以这时候输出 m,就能够输出最初的输入值了。
//
//
////9.求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。 
////例如,n=5时=2+22+222+2222+22222,n由键盘输入。
////①首先回顾本题
////求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。 例如,n=5时=2+22+222+2222+22222,n由键盘输入。
////首先我们第一反应必然是循环,那么如何通过循环求解就是一个比较重要的问题了。
////第一步,列好C语言的基本格式:
//
////#include<stdio.h>
////int main(){
////    return 0;
////} 
////②第二步,确认变量,首先需要一个输入值,我们将其设置为n,
////需要一个输出值,我们设置为sum,再加上最后控制循环的变量i。三个变量就找到了,于是我们可以写出
//
////#include<stdio.h>
//////int main(){
////    int n, i, sum = 0;
////    scanf("%d", &n);
////    for(i = 0; i < n; i++){
////    }
////    return 0;
////} 
////相比有的同学很好奇为什么只用一个循环,而不是通过循环先求出单个的2, 22,222,2222,22222。
////然后再通过循环累加。这是因为其中存在着规律~
////从规律中,我们可以看到,个位的2出现过n次,而十位的出现过n-1次以此类推!
////这意味着其中有规律,有规律就意味着可以简化!
////于是我们思考一下,是否可以从最高为开始,比如说最高位只有一个2,然后两个,三个……
////是的,我们可以用公式来归纳!
////于是我们从最高为开始,依次补足!
//
////#include<stdio.h>
//////int main(){
////    int n, i, sum = 0;
////    scanf("%d", &n);
////    for(i = 0; i < n; i++){
////        sum *= 10;
////        sum += 2 * (i+1);
////    }
////    printf("%d", sum);
////    return 0;
////} 
//
//
//
//
//
//写程序:一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。
//它在第N次落地时反弹多高?共经过多少米? 保留两位小数 要求保留 double类型
#include<stdio.h>
int main()
{
    double m, h, ans;
    int n;
    scanf("%lf%d",&m,&n);
    h = m / (1 << n);
    ans = m + (m - h * 2) * 2;
    printf("%.2lf %.2lf", h, ans);
    return 0;
}

 

标签:include,int,sum,C语言,printf,main,scanf
From: https://www.cnblogs.com/123456HHH/p/17897837.html

相关文章

  • C语言-文件操作
    在接触文件操作之前,我们写的程序都是在内存中存储着,一旦程序结束内存中存储的数据都会被擦除,所以如果想要程序结束数据仍然要保留,那就需要将其持久化,就需要用文件操作,将需要保留的数据存储在硬盘中。下次使用时再打开即可。那么关于文件主要介绍以下几个部分:什么是文件磁盘上的文件......
  • 实验6 c语言结构体、枚举应用编程
    实验任务4程序源码1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8doublesales_price;//售价9intsales_......
  • 实验6 C语言结构体、枚举应用编程
    一、实验目的二、实验准备三、实验内容四、实验结果1.实验任务4源代码:1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8......
  • C语言中小数转字符串
    小数转字符串写之前,先来看看标准C?1小数转字符串--标准C2小数转字符串--非标准C写之前,先来看看标准C?其实,很多时候我们都会混淆一个概念:标准C?这里简要分享下,标准C其实就是ANSIC标准,里面收纳了绝大部分函数,但是人们发现有些经常使用的API没有被收纳,比如今天的主题–小数转字符串,所......
  • 实验6 C语言结构体,枚举应用编程(附实验5 C语言指针应用编程)
    实验6一,实验目的二,实验准备三,实验内容1,实验任务1task1.c1#include<stdio.h>2#include<string.h>3#defineN3//运行程序输入测试时,可以把这个数组改小一些输入测试45typedefstructstudent{6intid;//学号7......
  • 实验6 C语言结构体、枚举应用编程
    四、实验结论4.实验任务4task4.c1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8doublesales_price;//售价9......
  • 实验六 C语言结构体、枚举应用编程
    实验四源代码#include<stdio.h>#include<string.h>#defineN10typedefstruct{charisbn[20];//isbn号charname[80];//书名charauthor[80];//作者doublesales_price;//售价intsales_count;......
  • 实验六 C语言结构体、枚举应用
    4.任务41#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];6charname[80];7charauthor[80];8doublesales_price;9intsales_count;10}Book;1112void......
  • (C语言)关于printf的新发现: 可以用字符串变量替代第一个字符串参数
    chara[]="hello%d\n%dworld";printf(a,2,3);//输出://hello2//2world事情的起因是使用printf("\033[0;47;30m");改变命令行字体背景和颜色的时候,室友提起能否让用户改变字体颜色。因为那需要改变printf("");里双引号中的内容,我就下意识觉得不行,但又转念一想,想到了这种......
  • 实验6_c语言结构体、枚举应用编程
    task4#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#defineN10typedefstruct{charisbn[20];charname[80];charauthor[80];doublesales_price;intsales_count;}Book;voidoutput(Bookx[],intn);voidsort(Bookx[],......