一维数组和二维数组
第1关 排序问题
#include<stdio.h>
int main()
{
/*********Begin*********/
int a[10];
int i,j,t;
printf("\n");
for (i=0;i<10;i++) scanf("%d",&a[i]);
printf("\n");
for (j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
printf("\n");
for(i=9;i>=0;i--) printf("%d ",a[i]);
printf("\n");
return 0;
}
第2关 查找整数
#include<stdio.h>
int a[1009];
int main()
{
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i ++)
scanf("%d", &a[i]);
int pre;
scanf("%d", &pre);
for(int i = 1; i <= n; i ++)
{
if(a[i] == pre)
{
printf("%d", i);
return 0;
}
}
printf("-1");
return 0;
}
第3关 计算数组中元素的最大值及其所在的行列下标值
#include<stdio.h>
int a[1000][1000];
int main()
{
printf("Input m, n:");
int n, m;
scanf("%d,%d", &n, &m);
printf("Input %d*%d array:\n", n , m);
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
scanf("%d", &a[i][j]);
int MAX = -999999;
int r, c;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
if(a[i][j] > MAX)
{
MAX = a[i][j];
r = i;
c = j;
}
printf("max=%d, row=%d, col=%d", MAX, r, c);
return 0;
}
第4关 删除最大值
#include<stdio.h>
int main()
{
int a[10];
int MAX = -1;
for(int i = 0; i < 10; i ++)
scanf("%d", &a[i]);
for(int i = 0; i < 10; i ++)
{
if(a[i] > MAX) MAX = a[i];
}
for(int i = 0; i < 10; i ++)
{
if(a[i] == MAX) continue;
printf("%d ", a[i]);
}
return 0;
}
第5关 杨辉三角
#include<stdio.h>
int a[10][10];
int main()
{
int num = 1;
for(int i = 0; i < 10; i ++) a[i][0] = 1;
for(int i = 1; i < 10; i ++)
{
for(int j = 1; j < 10; j ++)
{
if(j == num)
{
num ++;
a[i][j] = 1;
break;
}
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
num = 1;
for(int i = 0; i < 10; i ++)
{
for(int j = 0; j < 10; j ++)
{
if(j == num)
{
num ++;
break;
}
if(j == num - 1) printf("%d", a[i][j]);
else printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
三种循环语句的使用
第1关 分数序列和
#include <stdio.h>
int main( )
{
int a, b, c, k, n = 5;
double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ )
{
/*****以下一行有错误*****/
s = s + (double)a / (double)b;
/*****以下一行有错误*****/
c=a;a=b+c;b=c;
}
printf( "s%d = %lf\n", n, s);
return 0;
}
第2关 公式计算(1)
#include<stdio.h>
int main()
{
int n,a=0;
double s;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
a=a+i;
s=s+1/(double)a;
}
printf("s = %lf",s);
return 0;
}
第3关 公式计算(2)
/********** Begin **********/
#include<stdio.h>
#include<math.h>
int main()
{
int m;
scanf("%d",&m);
double log(double x);
double s=0;
for(double i=1;i<=m;i++)
{
s=s+log(i);
}
s=sqrt(s);
printf("s = %lf",s);
return 0;
}
第4关 求同时被7或11整除的整数
/********** Begin **********/
#include<stdio.h>
int main()
{
int x;
for(int i=1;i<=1000;i++)
{
if (i%7==0||i%11==0)
{
if(i%7==0&&i%11==0)
{
}
else
{
x++;
printf("%-5d",i);
}
}
if(x==8)
{
printf("\n");
x=0;
}
}
return 0;
}
第5关 公式计算(3)
/********** Begin **********/
#include<stdio.h>
int main()
{
int n;
double s=1,sum=1;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
sum=sum*i;
s=s+1/sum;
}
printf("s = %.6lf",s);
return 0;
}
循环结构程序设计1
第1关 小球自由落体运动
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********Begin*********/
float M,N,sum,high,x;
scanf("%f",&M);
scanf("%f",&N);
int i;
sum=M;
for (i=1;i<N;i++)
{
high=pow(0.5,i)*M;
x=pow(0.5,i)*M;
sum=sum+high+x;
}
high=pow(0.5,N)*M;
sum=sum;
printf("%.2f %.2f",high,sum);
/*********End**********/
return 0;
}
第2关 求解出n以内所有能被5整除的正整数的乘积
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int N ,i,sum=1;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
if(i%5==0)
{
sum=sum*i;
}
}
printf("%d",sum);
/*********End**********/
return 0;
}
第3关 最大公约数和最小公倍数
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int a,b,c,m,t;
scanf("%d%d",&a,&b);
if(a,b)
{
t=a;a=b;
b=t;
}
m=a*b;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("最大公约数是:%d\n",b);
printf("最小公倍数是:%d",m/b);
/*********End**********/
return 0;
}
第4关 字符串中各类字符数的统计
#include<stdio.h>
int main(void)
{
/*********Begin*********/
char m;
int a=1;
int k=0,s=0,e=0,n=0;
while(a)
{
m=getchar();
if(m==' ')
k+=1;
else if((m>='a'&& m<='z')||(m>='A'&&m<='Z'))
s+=1;
else if(m>='0'&&m<='9')
n+=1;
else
e+=1;
if(m=='\n')
a=0;
}
printf("%d %d %d %d",s,n,k,e-1);
/*********End**********/
return 0;
}
顺序结构程序设计-进阶
第1关 数字分离
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n, a, b, c;
scanf("%d",&n);
a=n%10;//这个数的个位
n/=10;
b=n%10;//这个数的十位
n/=10;
c=n;//这个数的百位
printf("%d %d %d",c,b,a);
/*********End**********/
return 0;
}
第2关 求三角形的面积
#include<stdio.h>
#include<math.h>//这里很重要,要添加数学知识的头文件,因为调用了开平方函数
int main(void)
{
/*********Begin*********/
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
double area;
double s=(a+b+c)/2;
area = s*(s-a)*(s-b)*(s-c);
area = sqrt(area);//注意这里使用了开平方函数sqrt
printf("%.3f",area);
/*********End**********/
return 0;
}
第3关 计算两个正整数的最大公约数
#include<stdio.h>
int MaxCommonFactor( int a, int b)
{
int c;
if(a<=0||b<=0)
return -1;
while(b!=0)
{
c=a%b;
a=b;
b=c;
}
return a;
}
int main(void)
{
/*********Begin*********/
int a,b;
scanf("%d,%d",&a,&b);
int c=MaxCommonFactor(a,b);
printf("%d\n",c);
/*********End**********/
return 0;
}
顺序结构程序设计-基础
第1关 加法运算
#include<stdio.h>
int main(void)
{
int a,b,c;
//Please input a,b:
/*********Begin*********/
scanf("%d,%d",&a,&b);
c=a+b;
printf("%d+%d=%d\n",a,b,c);
/*********End**********/
return 0;
}
第2关 不使用第3个变量,实现两个数的对调
#include<stdio.h>
int main(void)
{
int a,b;
//Enter a and b:
scanf("%d%d",&a,&b);
printf("a=%d b=%d\n",a,b);
/*********Begin*********/
a=a^b;
b=a^b;
a=a^b;
/*********End**********/
printf("a=%d b=%d\n",a,b);
return 0;
}
第3关 用宏定义常量
#include<stdio.h>
int main(void)
{
/*********Begin*********/
const int N=30;//定义常量用const,即定义题中价格为30.
int x;
scanf("%d",&x);
printf("%d",x*N);
/*********End**********/
return 0;
第4关 计算总成绩和平均成绩
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int a,b,c,d,e;
scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
int s=a+b+c+d+e;//s代表总成绩
double p=s*1.0/5;//double 用于定义浮点数(小数),p代表平均成绩
printf("%d %.2f",s,p);//%.nf代表输出n位小数
/*********End**********/
return 0;
}
第5关 立体几何计算题
#include<stdio.h>
int main(void)
{
/*********Begin*********/
const double PI=3.14;//定义常量pi
double r, h, c, s, v;
scanf("%lf,%lf",&r,&h);//注意输入之间有逗号
c=2*PI*r;
s=4*PI*r*r;
v=PI*r*r*h;
printf("C1=%.2f\n",c);//保留两位小数
printf("Sb=%.2f\n",s);
printf("Vb=%.2f\n",v);
/*********End**********/
return 0;
}
字符数组及其字符串应用
1目标删除
#include "stdio.h"
#include "string.h"
int main()
{
char s[80];
int i,j;
scanf("%s",s);
printf("The original string: \n");
puts(s);
/***** 以下一行有错误 *****/
for(i=j=0;s[i]!='\0';i++)
{
if(s[i]!= 'c')
/***** 以下一行有错误 *****/
s[j++]=s[i];
}
/***** 以下一行有错误 *****/
s[j]='\0';
printf("The string after deleted: \n");
puts(s);
return 0;
}
第2关:去除空格符
#include<stdio.h>
int main(){
int i=0,j=0,k;
char str[30];
scanf("%[^\n]",str);
for(k=0;k<29;k++)//循环最大空格数
{
j=0;
for(i=0;i<30;i++)// 最大单词数
{
if((str[i]==32&&str[i+1]!=32)||(str[i]==32&&str[i+1]==32))//判断空格
{
j=1;
}
if(j==1)//将后续字符往前挪
{
str[i] = str[i+1];
}
}
}
printf("%s \n",str);
return 0;
}
第3关:字符串操作
#include <stdio.h>
int main() {
int i = 0, j = 0;
char s[20], t[20];
scanf("%s", s);
for (i = 0; i <= 20; i++) {
if (i % 2 != 0 || s[i] % 2 == 0)//奇数位置的字符或ASCII码为偶数的字符
t[j++] = s[i];
}
printf("%s", t);
return 0;
}
第4关:找最长字符串
/********** Begin **********/
#include <stdio.h>
#include <string.h>
int main()
{
int N;
char s[100][100];
int i;
int max_i, max_len = 0;
scanf("%d",&N);
for(i = 0; i < N; i ++)
{
scanf("%s",s[i]);//输入
}
for(i = 0; i < N; i ++)
{
int l = strlen(s[i]);
if(max_len <l)
{
max_len = l;
max_i = i;
}
}
printf("%s\n", s[max_i]);//输出最长字符串
return 0;
}
第5关:单词排序
#include <stdio.h>
#include <string.h>
int main()
{
//she its can ibm1 bbc NBA nhk2 BOY jxf
//c python java c++ android caffe keras pytorch php
int N,i,k;
char j,s[100][100],a[100][100];
printf("排序前的字符串:\n");
for(i=0;i<10;i++)
{
scanf("%s",s[i]);//输入
printf("%s",s[i]);
if(i<9)
printf("\n");
fflush(stdout);
}
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if(strcmp(s[k],s[j])>0)
k=j;
}
if(k!=i)
{
char temp[100];
strcpy(temp, s[k]);
strcpy(s[k], s[i]);
strcpy(s[i], temp);
}
}
printf("排序后的字符串:");
for(i=0;i<10;i++)
{
printf("%s\n",s[i]);
}
return 0;
}
选择结构程序设计
第1关 排序
#include<stdio.h>
int main(void)
{
int a,b,c,temp1,temp2,temp3;
/*********Begin*********/
printf("请输入三个整数:");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
temp1=a;
a=b;
b=temp1;
}
if (a>c)
{
temp2=a;
a=c;
c=temp2;
}
if (b>c)
{
temp3=b;
b=c;
c=temp3;
}
printf("从小到大排列为:%d,%d,%d",a,b,c);
/*********End**********/
return 0;
}
第2关 选择结构-闰年判断
#include<stdio.h>
int main(void)
{
int a;
/*********Begin*********/
scanf("%d",&a);
if (a%4!=0)
printf("%d 不是闰年!",a);
else if (a%100==0&&a%400!=0)
printf("%d 不是闰年!",a);
else
printf("%d 是闰年!",a);
/*********End**********/
return 0;
}
第3关 选择结构-分段函数问题
#include<stdio.h>
int main(void)
{
/*********Begin*********/
float x;
float a;
scanf("%f",&x);
if (x<0&&x!=-3)
{
a=x*x+x-6;
printf("%.3f",a);
}
else if (x>=0&&x<10&&x!=2&&x!=3)
{
a=x*x-5*x+6;
printf("%.3f",a);
}
else
{
a=x*x-x-1;
printf("%.3f",a);
}
/*********End**********/
return 0;
}
第4关 学生成绩等级换算
#include<stdio.h>
int main(void)
{
float x;
/*********Begin*********/
scanf("%f",&x);
if (x>=90&&x<=100)
{
printf("A");
}
if (x<90&&x>=80)
{
printf("B");
}
if (x>=70&&x<79)
{
printf("C");
}
if (x>=60&&x<69)
{
printf("D");
}
if (x<60&&x>=0)
{
printf("E");
}
if (x<0||x>100)
{
printf("Score is error!");
}
/*********End**********/
return 0;
}
循环结构程序设计2
第1关 C循环-求平均成绩
#include<stdio.h>
int main()
{
int s;
float x,sum,average;
sum=0;
scanf("%d",&s);
if(s>0)
{
for(int i=0;i<s;i++)
{
scanf("%f",&x);
sum=sum+x;
}
average=sum/s;
printf("the number of students:the scores:average=%.2f",average);
}
else
printf("the number of students:the scores:average=0.00");
return 0;
}
第2关 C循环-求各位数字之积
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int num=0,sum=1;
scanf("%d",&num);
while(num!=0)
{
sum*=num%10;
num/=10;
}
printf("%d",sum);
/*********End**********/
return 0;
}
第3关 C循环-求阶乘之和
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n=0,sum=0;
int m=1;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for (int j=1;j<=i;j++)
{
m=m*j;
}
sum+=m;
m=1;
}
printf("%d",sum);
/*********End**********/
return 0;
第4关 C循环-水仙花数
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********Begin*********/
int a=0,b=0,c=0,m=0,t=0;
scanf("%d",&t);
for(int i=100;i<=999;i++)
{
a=i/100;
b=(i-100*a)/10;
c=i-100*a-10*b;
m=pow(a,3)+pow(b,3)+pow(c,3);
if (m==i)
printf("%d ",i);
}
return 0;
}
第5关 C循环-寻找完数
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n=0;
scanf("%d",&n);
int i,j,sum;
for (i=1;i<=n;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
printf("%d\n",i);
}
/*********End**********/
return 0;
}
第6关 分数求和
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********Begin*********/
double a=1,b=-1;
double sum=0;
for(int i=1;i<=100;i++)
{
sum+=(a/i)*pow(b,i+1);
}
printf("%.3lf",sum);
/*********End**********/
return 0;
}
C语言基本语法入门练习题
第1关 求绝对值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
scanf("%d",&a);
if (a<0)
b=-a;
else b=a;
printf("%d\n",b);
return 0;
}
第2关 求m以内的奇数之和
#include <stdio.h>
int main()
{
int n,m, sum;
scanf("%d",&m);
n=1;
sum=0;
while(n<=m)
{
sum=sum+n;
n+=2;
}
printf("%d\n",sum);
return 0;
}
第3关 排除此数还是输出此数
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
int x;
scanf("%d",&x);
if(x%3==0||x/100==3)
{
printf("%d",x);
}
else
printf("排除此数");
return 0;
/********** End **********/
}
第4关 医院收费.
#include <stdio.h>
int main()
{
float a,b,c,d,e,f;
scanf("%f %f %f %f",&a,&b,&c,&e);
d = a + b*c;
f = e - d;
printf("请输入药品费、床位费/天、住院天数:应付款:%.2f\n实付款:应找零:%.2f",d,f);
return 0;
}
第5关 相反次序重新组合
//注意
//1:该程序每次运行的时间必须小于200毫秒,否则会超时,程序超时将不会测试剩余的测试集
//2:该程序每次运行使用的内存不能超过1M,否则会返回错误
//3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示
#include <stdio.h>
int main()
{
int a,b,c,d,e,f,g,h;
scanf("%4d",&a);
b = a/1%10;
c = a/10%10;
d = a/100%10;
e = a/1000%10;
f = a/10000%10;
g = a/100000%10;
h = a/1000000%10;
if(a>=1)
{
printf("请输入一个4位整数:重新组合后:%d%d%d%d",b,c,d,e);
}
return 0;
}
C语言程序设计编辑与调试环境
第1关 打印输出 Hello World
#include<stdio.h>
int main()
{
/********* Begin *********/
printf("Hello World");
/********* End *********/
return 0;
}
第2关 打印输出图形
#include<stdio.h>
int main(void)
{
/********* Begin *********/
printf(" *\n");
printf(" ***\n");
printf(" OK\n");
printf(" Hello!\n");
printf("*********\n");
return 0;
}
第3关 求3个数的最大值
#include<stdio.h>
int main()
{
/********* Begin *********/
int max(int x,int y,int z);
int a,b,c,f;
scanf("%d,%d,%d",&a,&b,&c);
f=max(a,b,c);
printf("max=%d",f);
/********* End *********/
return 0;
}
int max(int x,int y,int z)
{
int e;
if(x>y)e=x;
else e=y;
if(e>z)e=e;
else e=z;
return e;
}
第4关 熟悉C语言调试过程
#include<stdio.h>
int main(void)
{int x;
int y=2,z=3;
scanf("%d",&x);
if(x==y+z)
printf("*****");
else
printf("#####" );
return 0;
}
函数的应用
第1关:求平方根
#include <stdio.h>
#include <math.h>
/***** 以下一行有错误 *****/
double fun(double a, double x0)
{
double x1, y;
x1=(x0+a/x0)/2.0;
/***** 以下一行有错误 *****/
if(fabs(x1-x0)>=0.00001)
y=fun(a,x1);
else
y=x1;
return y;
}
int main()
{
double x;
scanf("%lf",&x);
printf("The square root of %lf is %lf\n",x,fun(x,1.0));
return 0;
}
第2关:判断素数
求最大公约数和公倍数
函数处理组