//已有一个已正序排好!!!的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