纸上得来终觉浅
绝知此事要躬行
1.
输入10个整数,分别统计输出正数、负数的个数。
输入描述:
输入10个整数(范围-231~231-1),用空格分隔。
输出描述:
两行,第一行正数个数,第二行负数个数
#include <stdio.h> int main() { int arr[10] = { 0 }; int i = 0; int n = 0; int m = 0; for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); if (arr[i] > 0) n++; if (arr[i] < 0) m++; } printf("positive:%d\n", n); printf("negative:%d\n", m); return 0; }2.
如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求最终所花的钱数。
示例1
输入:1000.0 11 11 1
输出:650.00
示例2
输入:999.8 12 12 0
输出:799.84
示例3
输入:66.6 11 11 1
输出:0.00
#include <stdio.h> int main() { float price = 0; int a = 0; int m=11; int n = 0; scanf("%f %d %d %d", &price,&m, &a, &n); float sum = 0; //统一计算折扣 if (a == 11) sum = price * 0.7; else if (a == 12) sum = price * 0.8; else { printf("无效类型"); return 1; } //统一处理n=1的优惠 if (n == 1) sum = (sum > 50) ? (sum - 50) :0; //最终价格不能小于0 printf("%.2f", sum); return 0; }3.
在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,总共要支付多少快递费
输入描述:
第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,'y' 表示加急 ,'n' 表示不加急。
#include <stdio.h> #include<math.h> int main() { double a=0; char ch=0; double sum=0; scanf("%lf %c",&a,&ch); if(a<=1) sum=20.0; else sum=20+ceil(a-1)*1; //ceil用来向上取整 if(ch=='y') printf("%.0lf",sum+5); if(ch=='n') printf("%.0lf",sum); return 0; }4.
在一行上输出一个字符串,表示三角形的类型,具体地:
∙ ∙如果三角形是等边三角形,则输出 Equilateral triangle!Equilateral triangle!;
∙ ∙如果三角形是等腰三角形,则输出 Isosceles triangle!Isosceles triangle!;
∙ ∙如果三角形是普通三角形,则输出 Ordinary triangle!Ordinary triangle!;
∙ ∙如果不能构成非退化三角形,则输出 Not a triangle!Not a triangle!。
#include <stdio.h> int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { if(a==b&&a==c&&b==c) printf("Equilateral triangle!"); else if(a==b||b==c||a==c) printf("Isosceles triangle!"); else printf("Ordinary triangle!"); } else { printf("Not a triangle!"); } return 0; }5.
从键盘输入a, b, c的值,编程计算并输出一元二次方程ax2 + bx + c = 0的根,当a = 0时,输出“Not quadratic equation”,当a ≠ 0时,根据△ = b2 - 4*a*c的三种情况计算并输出方程的根。
输入描述:
多组输入,一行,包含三个浮点数a, b, c,以一个空格分隔,表示一元二次方程ax2 + bx + c = 0的系数。
输出描述:
针对每组输入,输出一行,输出一元二次方程ax2 + bx +c = 0的根的情况。
如果a = 0,输出“Not quadratic equation”;
如果a ≠ 0,分三种情况:
△ = 0,则两个实根相等,输出形式为:x1=x2=...。
△ > 0,则两个实根不等,输出形式为:x1=...;x2=...,其中x1 <= x2。
△ < 0,则有两个虚根,则输出:x1=实部-虚部i;x2=实部+虚部i,即x1的虚部系数小于等于x2的虚部系数,实部为0时不可省略。实部= -b / (2*a),虚部= sqrt(-△ ) / (2*a)
所有实数部分要求精确到小数点后2位,数字、符号之间没有空格。
#include<stdio.h> #include<math.h> int main() { float a,b,c; while(scanf("%f %f %f",&a,&b,&c)!=EOF) { if(a==0) printf("Not quadratic equation"); else { float s=b*b-4*a*c; if(s==0&&(-b)/2*a!=-0.00) printf("x1=x2=%.2f\n",(-b)/(2*a)); else if((-b)/2*a==-0.00) printf("x1=x2=0.00\n"); if(s>0) printf("x1=%.2f;x2=%.2f\n",((-b)-sqrt(s))/(2*a),((-b)+sqrt(s))/(2*a)); if(s<0) printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",(-b)/(2*a),(sqrt(-s)/(2*a)),(-b)/(2*a),(sqrt(-s)/(2*a))); } } return 0; }6.
输入年份和月份,计算这一年这个月有多少天。
输入描述:
多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
输出描述:
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
#include <stdio.h> int main() { int y,m; while(scanf("%d %d",&y,&m)!=EOF) { if(y%4==0&&y%100!=0||y%400==0) { int arr[12]={31,29,31,30,31,30,31,31,30,31,30,31}; printf("%d\n",arr[m-1]); } else { int aee[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("%d\n",aee[m-1]); } } return 0; }7.
计算如下数列的前 n 项和:
H(n)=1+1/2+1/3----1/n
#include <stdio.h> int main() { int n=0; scanf("%d",&n); float sum=0; int i=0; for(i=1;i<=n;i++) { float j=1.0/i; sum+=j; } printf("%f",sum); return 0; }8.
输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...+2n-1)的值
#include<stdio.h> int main() { int i,s=1; int temp=0; double sum=0; int n=0; scanf("%d",&n); for(i=1;i<=n;i++) { temp+=s*(2*i-1); sum+=1.0/temp; s=-s; } printf("%.3lf",sum); return 0; }9.
输入一个整数n,计算 1+(1+2)+(1+2+3)+⋯+(1+2+3+⋯+n)1+(1+2)+(1+2+3)+⋯+(1+2+3+⋯+n).
#include <stdio.h> int main() { int n=0; scanf("%d",&n); int i=0; int sum1=0; int sum2=0; for(i=1;i<=n;i++) { sum1+=i; sum2+=sum1; } printf("%d",sum2); return 0; }10.
给定一个整数 ,请计算其所有数位之和。若 n 为负数,请先取其绝对值。
#include <stdio.h> int main() { long long n = 0; scanf("%lld", &n); int i=0; int sum = 0; if (n < 0) n = -n; for (; n!=0;) { i = n % 10; n /= 10; sum += i; } printf("%d", sum); return 0; }11.
有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1,不断重复这样的运算,经过有限步之后,一定可以得到1
#include<stdio.h> int main() { int n=0; scanf("%d",&n); int count=0; while(n!=1) { if(n%2==0) n/=2; else n=n*3+1; count++; } printf("%d",count); return 0; }12.
写一个关机程序
1,程序运行起来后在1分钟内关机
2,但是只要输入:lrh很帅,就可以停止关机
注意:
#include<stdio.h> #include<string.h> #include<windows.h> int main() { char arr[10] = { 0 }; //关机 system("shutdown -s -t 60"); again: printf("你的电脑将在1分钟内关机,如果输入:lrh真帅,就取消关机\n"); scanf("%s", arr); //判断 if (strcmp(arr, "lrh真帅") == 0) { system("shutdown -a"); printf("关机已取消\n"); } else { goto again; } return 0; }13.
都个字符从两段移动,向中间移动。
#include<stdio.h> #include<string.h> #include<windows.h> int main() { char arr1[] = { "Welcome to NanChang !!!" }; char arr2[] = { "#######################" }; int left = 0; int right = strlen(arr1 )- 1; while (left <= right) { arr2[right] = arr1[right]; arr2[left] = arr1[left]; printf("%s\n", arr2); //睡眠2秒钟 Sleep(2000); //单位是毫秒 system("cls"); left++; right--; } return 0; }14.
判断某年某月有多少天
#include<stdio.h> #include<stdbool.h> bool is_leap_year(int y) { if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) //判断是否为闰年 return true; else return false; } int get_day_of_month(int y, int m) { int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; // 如果是闰年 int d = days[m]; if (is_leap_year(y) && m == 2) { d += 1; } return d; } int main() { int year = 0; int month = 0; scanf("%d %d", &year, &month); int d = get_day_of_month(year, month); printf("%d", d); return 0; }15.
今年是2025年,想知道1~2025中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。
#include<stdio.h> int main() { int i=0; int count =0; for(i=1;i<=2025;i++) { int tmep=i; //用临时变量操作,避免修改循环变量 i int has_nine=0; //判断是否包含 9 while(tmep!=0) { int d=tmep%10; if(d==9) { has_nine=1; break; //直接跳出循环,后面不需要判断 } tmep/=10; } if(has_nine) { count++; } } printf("%d",count); return 0; }