一、
输入输出
#include<stdio.h>
int main(void)
{
printf("I\n \nL\no\nv\ne\n \nH\nU\nT\n");
return 0;
}
助学贷款额度计算
#include <stdio.h>
int main()
{
int fee;
float lifefee;
scanf("%d%f",&fee,&lifefee);
float total=fee*17+lifefee*5;
printf("%.2f\n",total*0.6);
return 0;
}
学费计算
#include <stdio.h>
int main()
{
int xuefen = 3+4+4+2+2+2; // 总学分
int x,xuefei;
scanf("%d", &x); // 输入每学分学费
xuefei = xuefen * x; // 总学费
printf("xuefen=%d,xuefei=%d\n", xuefen,xuefei);
return 0;
}
说句心里话
#include<stdio.h>
int main(){
char a[20];
char b[50];
gets(a);
gets(b);
printf("%s,I want to say,%s\n",a,b);
return 0;
}
二、
面试资格确认
#include <stdio.h>
#include <string.h>
int main()
{
int age;
char major[50], university;
scanf("%d%s %c", &age, major, &university);
if ((strcmp(major, "EIE") == 0 && (age >= 25 || university == 'A'))
|| (strcmp(major, "CS") == 0 && age <= 28)) {
printf("YES");
}
else {
printf("NO");
}
return 0;
}
电话费用比较
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
float sum1=0,sum2=0;
sum1=a*0.6;
sum2=50+a*0.4;
if(sum1==sum2){
printf("equal");
}else if(sum1>sum2){
printf("GSM");
}else{
printf("Easyown");
}
return 0;
}
阶梯电价计算
#include<stdio.h>
int main()
{
double electricity, fee;
scanf("%lf", &electricity);
if(electricity <= 220) {
fee = electricity * 0.49;
} else if(electricity <= 400) {
fee = 220 * 0.49+ (electricity - 220)*0.54;
} else {
fee = 220*0.49 + 180*0.54 + (electricity - 400)*0.79;
}
printf("%.2lf", fee);
return 0;
}
空气质量判定
#include <stdio.h>
int main() {
int level;
scanf("%d", &level);
char grade;
if (level <= 50) {
grade = 'A';
} else if (level <= 100) {
grade = 'B';
} else if (level <= 150) {
grade = 'C';
} else if (level <= 200) {
grade = 'D';
} else if (level <= 250) {
grade = 'E';
} else if (level <= 300) {
grade = 'F';
} else {
grade = 'G';
}
printf("%c\n", grade);
return 0;
}
个税计算器
#include <stdio.h>
int main()
{
double salary, tax, after_tax;
scanf("%lf", &salary);
if(salary < 0)
{
printf("error");
}
else
{
double taxable_pay = salary - 5000;
if(taxable_pay <= 0) // 不需要缴税
{
tax = 0;
after_tax = salary;
}
else if(taxable_pay <= 3000) // 税率3%
{
tax = taxable_pay * 0.03;
after_tax = salary - tax;
}
else if(taxable_pay <= 12000) // 税率10%
{
tax = taxable_pay * 0.1 - 210;
after_tax = salary - tax;
}
else if(taxable_pay <= 25000) // 税率20%
{
tax = taxable_pay * 0.2 - 1410;
after_tax = salary - tax;
}
else if(taxable_pay <= 35000) // 税率25%
{
tax = taxable_pay * 0.25 - 2660;
after_tax = salary - tax;
}
else if(taxable_pay <= 55000) // 税率30%
{
tax = taxable_pay * 0.3 - 4410;
after_tax = salary - tax;
}
else if(taxable_pay <= 80000) // 税率35%
{
tax = taxable_pay * 0.35 - 7160;
after_tax = salary - tax;
}
else // 税率45%
{
tax = taxable_pay * 0.45 - 15160;
after_tax = salary - tax;
}
printf("tax:%.2lf,pay:%.2lf", tax, after_tax);
}
return 0;
}
分段计算水费
#include<stdio.h>
int main()
{
double x,y;
scanf("%lf",&x);
if (x<=15) {
y = 4*x/3;
}
else{
y = 2.5*x-10.5;
}
printf("%.2f",y);
return 0;
}
身份证信息识别
#include <stdio.h>
#include <string.h>
int main()
{
char id[19];
int year, month, day;
char gender;
scanf("%s", id);
sscanf(id+6, "%4d%2d%2d", &year, &month, &day);
gender = (id[16] % 2 == 0) ? 'F' : 'M'; // 奇数代表男,偶数代表女
printf("birth:%.4d.%02d.%02d\nsex:%c", year, month, day, gender);
return 0;
}
三、
水仙花的个数
#include <stdio.h>
#include <math.h>
int main()
{
int a, b;
int count = 0;
scanf("%d,%d", &a, &b);
for (int i = a; i <= b; i++) {
int temp = i;
int sum = 0;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
if (sum == i) {
count++;
}
}
printf("%d", count);
return 0;
}
计算SN
#include <stdio.h>
int main()
{
// 定义变量
int n, i, x = 1;
long long sum = 1; // 注意使用长整型
scanf("%d", &n);
// 计算Sn的值
for (i = 2; i <= n; i++) {
x = -x; // 反转符号
sum += x * i;
}
// 输出结果
printf("%lld\n", sum);
return 0;
}
环—求满足条件的数之和
#include "stdio.h"
int fun(int n)
{
int sum=0,i;
/***********begin***********/
for (int i = 1; i <= n; i++) {
if (i % 3 != 0) { // 如果i不能被3整除,则累加到sum中
sum += i;
}
}
return sum;
/***********end***********/
}
int main( )
{
int n;
scanf("%d",&n);
printf("s=%d\n",fun(n));
return 0;
}
循环—求和
#include "stdio.h"
int main()
{
int s=0;
int i;
int n;
scanf("%d", &n);
/***********begin***********/
for (int i = 1; i <= n; i++) {
if (i % 7 != 0 && i % 5 != 0) { // 如果i既不能被7整除也不能被5整除,则累加到s中
s += i;
}
}
/************end************/
printf("s=%d\n",s);
return 0;
}
求sn=a+aa+aaa+aaaa+......的值
#include <stdio.h>
int main(void)
{
int a, n, i;
int sum = 0, num = 0;
scanf("%d %d", &a, &n);
// 每次循环时计算要加的数值 num,然后将其加到 sum 变量中
for (i = 1; i <= n; i++) {
num = num * 10 + a; // 计算每项的值
sum += num; // 累加到总和中
}
printf("%d\n", sum);
return 0;
}
求n个数的平均值
#include "stdio.h"
#define N 10
float fun(int a[N],int n)
{
/***********begin***********/
int i,sum = 0;
// 计算所有整数之和
for (i = 0; i < n; i++) {
sum += a[i];
}
// 返回平均值
return sum*1.0/n;
/***********end***********/
}
int main()
{
int a[N],i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
float average;
average=fun(a,N);
printf("%.4f\n",average);
return 0;
}
求满足条件的数之和
#include "stdio.h"
int fun(int m,int n)
{ int sum=0,i;
/***********begin***********/
for(int i=m ; i<=n; i++){
if (i%3!=0) {
sum+=i;
}
}
return sum;
/***********end***********/
}
int main( )
{
int m,n;
scanf("%d,%d",&m,&n);
printf("s=%d\n",fun(m,n));
return 0;
}
一周的日最高气温
#include <stdio.h>
int main()
{
int temps[7];
int max = 0;
for (int i = 0; i < 7; i++) {
scanf("%d", &temps[i]);
// 判断输入气温是否合法
if (temps[i] < 20 || temps[i] > 84) {
printf("Temperature input error.\n");
return 0;
}
// 更新最高气温
if (temps[i] > max) {
max = temps[i];
}
}
printf("max=%d\n", max);
return 0;
}
存款买房
#include <stdio.h>
#include <math.h>
int main()
{
// 定义变量并读入
float total_cost,annual_salary,portion_saved;
scanf("%f%f%f", &total_cost,&annual_salary,&portion_saved);
//计算首付款
float down_payment=total_cost*0.3;
// 输出结果
printf("%.2f,",down_payment);
//计算月存款
float current_savings = annual_salary/12*(0.01*portion_saved);
// 输出结果
printf("%.2f,",current_savings);
// 计算所需月份数
int required_month;
scanf("%d",required_month);
required_month = ceil (down_payment / current_savings);
// 输出结果
printf("%d\n", required_month);
return 0;
}
电报换字符
#include <stdio.h>
int main()
{
// 定义字符串并读入
char str[100];
fgets(str, 100, stdin);
// 遍历字符串,并将字母转换为其下一字母
int i;
for (i = 0; str[i] != '\0'; i++) {
if ((str[i] >= 'A' && str[i] < 'Z') || (str[i] >= 'a' && str[i] < 'z')) {
str[i]++;
} else if (str[i] == 'Z') {
str[i] = 'A';
} else if (str[i] == 'z') {
str[i] = 'a';
}
}
// 输出结果
printf("%s\n", str);
return 0;
}
体操比赛打分
#include <stdio.h>
int main()
{
// 定义变量
double score[10];
double max, min, sum = 0;
int i;
// 输入10名裁判的打分
for (i = 0; i < 10; i++) {
scanf("%lf", &score[i]);
sum += score[i]; // 求和
}
// 找出最高分和最低分并求和
max = min = score[0];
for (i = 1; i < 10; i++) {
if (score[i] > max) {
max = score[i];
}
if (score[i] < min) {
min = score[i];
}
}
sum -= (max + min);
// 计算平均分并输出结果
printf("%.3f %.3f %.3f\n", max, min, sum / 8);
return 0;
}
求最大公约数和最小公倍数
#include<stdio.h>
//编写最大公约数GCD函数
/*********Begin*********/
long long int GCD(long long int m, long long int n) {
int r;
r = m % n;
while (r != 0) {
m = n;
n = r;
r = m % n;
}
return n;
}
/*********End**********/
//编写最小公倍数函数
/*********Begin*********/
long long int LCD(long long int m, long long int n) {
long long int L;
L = m * n / GCD(m, n);
return L;
}
/*********End**********/
int main(void) {
long long int m, n, gc, lc;
scanf("%lld %lld", &m, &n);
if (m < 0 || n < 0) {
printf("Input Error");
return 0;
}
gc = GCD(m, n);
lc = LCD(m, n);
printf("%lld %lld", gc,lc);
return 0;
}
不及格成绩统计
#include <stdio.h>
int main()
{
// 定义变量
int scores[40], num, i, count = 0;
// 输入学生数
printf("Enter the number:\n");
scanf("%d", &num);
// 输入每个学生的成绩
for (i = 0; i < num; i++) {
scanf("%d", &scores[i]);
if (scores[i] < 60) {
count++;
}
}
// 输出不及格人数
printf("count=%d\n", count);
return 0;
}
四、
输出若干学生的最高成绩
#include <stdio.h>
int main(void)
{
int score,max;
scanf("%d",&score);
max= score;
while (score>=0)
{
if(max< score)
max=score;
scanf("%d",&score);
}
printf("%d",max);
return 0;
}
输出低于平均分的学生成绩
#include <stdio.h>
int main(void)
{
float x[100],sum=0,ave,a;
int n=0,i;
scanf("%f", &a);
while(a>=0.0 && n<100)
{
sum+=a;
x[n]=a;
n++;
scanf("%f", &a);
}
ave=sum/n;
printf("ave = %.2f\n",ave);
printf("-----------OUTPUT---------------\n");
for(i=0; i<n; i++)
if(x[i]<ave)
printf("%.1f\n",x[i]);
return 0;
}
将字符串中的数字放入另一数组
#include "stdio.h"
#include "string.h"
int main(void)
{
char s[80],d[80];
int i,j;
scanf("%s",s);
for(i=j=0;s[i]!='\0';i++)
if(isdigit(s[i]))
{
d[j]=s[i];
j++;
}
d[j] = '\0';
puts(d);
return 0;
}
查找n在数组中最后一次出现的位置
#include <stdio.h>
int main(void)
{
int a[5];
int i,k,n,f=0;
for(i=0;i<=4;i++) scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<10;i++)
/************found************/
if(a[i+1] == n)
{
f=1;
/************found************/
k = i + 1;
}
if(f)
printf("%d is No. %d\n", n,k);
else
printf(" %d not found !\n",n);
return 0;
}
求回文数的和
#include <stdio.h>
int hws(long n)
{
long x=n,t=0,k;
while(x>0)
{
k=x%10;
t = t*10 + k;
x=x/10;
}
if(t==n) return 1;
else return 0;
}
int main(void)
{
long k,s=0;
for(k=200; k<=2000;k++)
if(hws(k)!=0)
s=s+k;
printf("%ld ",s);
return 0;
}
用递归法把整数逆序输出
#include <stdio.h>
int main(void)
{
int n;
void r(int m);
scanf("%d",&n);
r(n);
return 0;
}
void r(int m)
{
printf ("%d",m%10);
if (m/10>0) {
m=m/10;
r(m);
};
}
求最高分
#include <stdio.h>
int main(void)
{
int score,max;
scanf("%d",&score);
max= score;
while (score>=0)
{
if(max< score)
max=score;
scanf("%d",&score);
}
printf("%d",max);
return 0;
}
数组元素最小值
#include <stdio.h>
#define M 11
int main()
{
int a[M],i;
for(i=0;i<M-1;i++)
scanf("%d",&a[i]);
a[M-1]=a[0];
/************found************/
for(i=1;i<M;i++)
/************found************/
if(a[i]<a[0])
a[M-1]=a[i];
printf("Min is %d\n",a[M-1]);
return 0;
}
五、
二维数组求最大值
#include <stdio.h>
int main(void)
{
int max,i,j,r,c;
int a[3][4];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
scanf("%d",&a[i][j]);
/***********found***********/
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
/***********found***********/
if(a[i][j]>max)
{
max= a[i][j];
r=i;
c=j;
}
printf("max=%d,row =%d,colum=%d \n",max,r,c);
return 0;
}
字符串连接
#include <stdio.h>
#include <string.h>
int main(void)
{
char s1[80],s2[40];
int i = 0,j = 0;
scanf("%s",s1);
scanf("%s",s2);
while(s1[i]!= '\0' )
i++;
while(s2[j]!= '\0' )
/***********found***********/
s1[i++]=s2[j++];
/***********found***********/
s1[i]='\0';
printf("%s",s1);
return 0;
}
一维数组元素求平均值
#include <stdio.h>
int main()
{
int a[10],i;
/************found************/
float aver,s;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
/************found************/
s = a[0];
for ( i=1; i<10; i++)
s += a[i];
aver = s / i;
printf("The aver is:%.2f\n", aver);
}
在数组中查找一个给定的数第一次出现的下标位置
#include <stdio.h>
int main(void)
{ int i, flag, x;
int a[5];
for(i = 0; i < 5; i++)
scanf("%d", &a[i]);
scanf("%d", &x);
flag = 0;
/*************found**************/
for(i = 0; i < 5; i++)
if(a[i] == x)
{
printf("Index is %d\n", i);
flag = 1;
break;
}
/*************found**************/
if(flag==0) printf("Not Found\n");
return 0;
}
删除数组元素
#include <stdio.h>
int main(void)
{
int a[10],i,num;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&num); /*输入要删除的元素序号*/
for(i=num;i<10;i++)
/***********found***********/
a[i-1]= a[i];
a[9]=0;
/***********found***********/
for(i=0;i<9;i++)
printf("%d ", a[i]);
return 0;
}
数组运算
#include <stdio.h>
int main()
{ int a[10]={},i,min,pos;
for(i=0;i<10;i++) scanf("%d",&a[i]);
/************found************/
min = a[0];
pos = 0;
for ( i=1; i<10; i++)
if (min > a[i])
{
min = a[i];
/************found************/
pos = i;
}
printf("The min is:%d ,pos is:%d\n", min , pos);
}
求一维数组中的最小值及其下标
#include <stdio.h>
int main()
{ int a[10],i,min,pos;
for(i=0;i<10;i++) scanf("%d",&a[i]);
/************found************/
min = a[0];
pos = 0;
for ( i=1; i<10; i++)
if (min > a[i])
{
min = a[i];
/************found************/
pos = i;
}
printf("The min is:%d ,pos is:%d\n", min , pos);
}
打印出五级记分成绩
#include <stdio.h>
int main()
{
int score,t;
do{
scanf("%d",&score);
} while(score<0||score>100);
/*************found**************/
t=score/10;
switch(t)
{ case 10:
case 9:printf("优秀!\n");break;
case 8:printf("良好!\n");break;
case 7:printf("中等!\n");break;
case 6:printf("及格!\n");break;
/*************found**************/
default :printf("不及格!\n");
}
}
数组元素中偶数之和
#include <stdio.h>
int main()
{ int a[10],i,s;
for(i=0;i<10;i++) scanf("%d",&a[i]);
s = 0;
for ( i=0; i<10; i++)
/************found************/
if (a[i] % 2 ==0)
/************found************/
s = s + a[i];
printf("The result is:%d\n", s);
}
求和
#include <stdio.h>
double fun(int m)
{ double fac, t=0.0;
int i=1, j;
for(i=1;i<=m;i++)
{ fac=1.0;
/************found************/
for(j=1; j<=i; j++)
fac=fac*j;
/************found************/
t+=1/fac;
}
return t;
}
int main(void)
{ int m;
scanf("%d", &m);
printf("%12.10lf \n",fun(m));
return 0;
}