1.输出学生成绩
#include<stdio.h>
int main(){
int n;
scanf("%d\n",&n);
int i;
double a[n],max,min,s=0,ave;
for(i=0;i<n;i++){
scanf("%lf",&a[i]);
s+=a[i];
if(i==0){
max=a[i];
min=a[i];
}
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
ave=1.0*s/n;
printf("average = %.2f\n",ave);
printf("max = %.2f\n",max);
printf("min = %.2f",min);
return 0;
}
2.求幂之和
#include<stdio.h>
#include<math.h>
int main()
{int n,sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{sum+=pow(2,i);
}
printf("result = %d",sum);
return 0;
}
3.近似求PI
#include <stdio.h>
int main()
{
double eps;
scanf("%le", &eps);
double sum=1;
double temp=1;
for(int i=1;temp>eps;i++)
{
temp = temp*i/(2*i+1);
sum += temp;
}
printf("PI = %.5f\n", 2*sum);
return 0;
}
4. 本题要求计算并输出不超过n的最大的k个素数以及它们的和。
#include <stdio.h>
int main()
{
int n,k,i,j,q=0,sum=0;
scanf("%d%d",&n,&k);
i=n;
for(i;i>=2;i--)
{
int isprime =1;
for(j=2;j<i-1;j++)
{
if(i%j==0){isprime=0;break;}
}
if(isprime==1)
{
sum+=i;
if(q==0)printf("%d",i);
else printf("+%d",i);
q++;
}
if(q>=k||i==2)
{
printf("=%d",sum);
break;
}
}
return 0;
}
5.出生年
#include <stdio.h>
#include<string.h>
int flag(int year , int n)
{
int cnt=0 , i=3 , j;
int flg=0;
int a[4] = {0};//使不足四位的补0
int b[10]={0};
for(i=3;i>=0;i--){
a[i] = year%10;//将年份的各个数字存到数组中去
year/=10;
b[a[i]]++;//计算年份中该数字出现的次数
}
for(i=0 ; i<10 ; i++){
if(b[i]!=0){
cnt++;//计算有几位数字相同
}
}
if(cnt==n){
flg=1;
}
return flg;
}
int main()
{
int year , n , num = 0;
scanf("%d%d" , &year , &n);
while(flag(year , n)!=1)
{
year++;
num++;
}
printf("%d %04d\n" , num , year);
return 0;
}
1.判断奇偶性
int even( int n )
{
if(n%2==0) //n为偶数
{
return 1;
}
return 0;//n为奇数
}
2.使用函数计算两点间的距离
double dist( double x1, double y1, double x2, double y2 ){
double sum,Sum;
sum=pow(x1-x2,2)+pow(y1-y2,2);
Sum=sqrt(sum);
return Sum;
}
3. 使用函数输出一个整数的逆序数
int reverse( int number )
{
int sum=0;//用来将number的每一个数字倒着加起来
for(;number!=0;number/=10)//这里也可以用while语句
sum=sum*10+number%10;//sum*10是为了将原本的数字往左推
return sum;
}
4. 统计各位数字之和是5的数
int is( int number )
{
int gw=0,sw=0,bw=0,qw=0;
int fi=0;
gw=number%10;
sw=number%100/10;
bw=number/100%10;
qw=number/1000;
int num=gw+sw+bw+qw;
if(num==5)
fi=1;
return fi;
}
void count_sum( int a, int b )
{
int i=a;
int count=0,sum=0;
for(;i>=a&&i<=b;i++)
{
if(is(i))
{
count++;
sum+=i;
}
}
printf("count = %d, sum = %d",count,sum);
}
5. 使用递归函数计算1到n之和
int sum( int n )
{
if (n <= 0)
return 0;
if (n == 1)
return 1;
else
return n + sum(n - 1);
}
6. 使用函数的选择法排序
//选择排序
void sort( int a[], int n )
{
int *p;
p=a;
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if( *(p+i)>*(p+j) )
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
}
}
//冒泡排序
void sort( int a[], int n )
{
int *p;
p=a;
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if( *(p+j)>*(p+j+1) )
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
}
7. 递归计算P函数
double P( int n, double x ){
if(n<=0){
return 1;
}else if(n==1){
return x;
}else{
return ((2*n-1)*P(n-1,x)-(n-1)*P(n-2,x))/n;
}
}
8.比较大小
#include<stdio.h>
int main()
{
int x,y,z,min;
scanf("%d %d %d",&x,&y,&z);
//将x位置存放xy中最小的那个
if(x>y)
{
min = x;
x = y;
y = min;
}
//将x位置存放xz中最小的那个
if(x>z)
{
min = x;
x = z;
z = min;
}
//经过以上两步,x位置已经是三个数中最小的了,现在仅需将yz中小的那个放到y位置即可
if(y>z)
{
min = y;
y = z;
z = min;
}
printf("%d->%d->%d",x,y,z);
return 0;
}
//如果第一个if判断不成立,则直接进行下面x与z的比较
//如果二个if判断仍不成立,则直接进行下面y与z的比较
//如果三个if判断仍不成立,则直接输出
9.近似求PI
#include<stdio.h>
int main(){
int i=1,j;
double eps,pi=1,item=1.0;
scanf("%le", &eps);
while(item>=eps){
item=1.0;
for(j=1;j<=i;j++)
item=item*j/(2*j+1);
pi=pi+item;
i++;
}
printf("PI = %.5lf",2*pi);
return 0;
}
10. 最大公约数和最小公倍数
#include <stdio.h>
int main(void) //如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])
{
int m,n,
min,max;
scanf("%d %d",&m,&n); // &
if(m<n){
min=m;
max=n;
}else{
min=n;
max=m;
}
if(min<=0){
return 0;
}
//求最大公约数
int i;
for(i=min;i>0;i--){
if(m%i==0&&n%i==0){
break;
}
}
//求最小公倍数
int j;
for(j=max;;j++){
if(j%m==0&&j%n==0){
break;
}
}
printf("%d %d",i,j); // \n
return 0;
}
11.统计字符
#include<stdio.h>
int main(void)
{
char ch; //要判断字符所以定义char函数
int n,letter,blank,digit,other;
letter=blank=digit=other=0;
n=0;
for(n=1;n<=10;n++) //总共输入十个字符所以循环十次
{
ch=getchar();
if((ch>='A' && ch<='Z') || (ch>='a' && ch<='z')) //当ch是字母时
{
letter=letter+1;
}
else if(ch==' ' || ch=='\n') //当ch是回车或者空格时
{
blank=blank+1;
}
else if(ch>='0' && ch<='9') //当ch是数字时
{
digit=digit+1;
}
else //当ch是其余字符时
{
other=other+1;
}
}
printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
return 0;
}
12.统计学生成绩
#include<stdio.h>
int main()
{
int n;
int score;
int A, B, C, D, E;
A = B = C = D = E = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &score);
if (score >= 90) { A++;}
else if (score < 90 && score >= 80) { B++; }
else if (score<80&& score>=70) { C++; }
else if (score<70&& score>=60) { D++; }
else if (score<60) { E++; }
}
printf("%d %d %d %d %d", A, B, C, D, E);
return 0;
}
13.猴子吃桃问题
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,s=1;
for(i=2;i<=n;i++)
{
s=(s+1)*2;
}
printf("%d",s);
return 0;;
}
14. 求最大值及其下标
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[10];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int max=a[0],index=0;
for(int j=0;j<n;j++){
if(max<a[j]){
max=a[j];
index=j;
}
}
printf("%d %d",max,index);
return 0;
}
15. 将数组中的数逆序存放
#include <stdio.h>
int main(){
int n,a[10];
scanf("%d",&n);
for(int i=n-1;i>=0;i--)
scanf("%d",&a[i]);
for(int j=0;j<n;j++){
printf("%d",a[j]);
if(j<n-1)
printf(" ");
}
return 0;
}
16. 字符串逆序
#include <stdio.h>
int main(){
char str[100];
gets(str);
int i;
for(i=strlen(str)-1;i>=0;i--)
printf("%c",str[i]);
return 0;
}
17. 查找指定字符
#include <stdio.h>
int main(){
char ch;
scanf("%c",&ch);
getchar();
char str[100];
gets(str);
int index,isFound=0;
for(int i=0;i<strlen(str)-1;i++){
if(str[i]==ch){
isFound=1;
index=i;
}
}
if(isFound==0){
printf("Not Found");
}else{
printf("index = %d",index);
}
return 0;
}
18. 交换最小值和最大值
#include <stdio.h>
int main()
{
int n,i,min,max,mi,ma,a[10];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
min=a[0];
max=a[0];
for(i=0;i<n;i++){
if(a[i]>max){
max=a[i];
}
if(a[i]<min){
min=a[i];
}
}
int temp;
for(i=0;i<n;i++){
if(a[i]==max){
temp=a[n-1];
a[n-1]=max;
a[i]=temp;
}
}
for(i=0;i<n;i++){
if(min==a[i]){
temp=a[0];
a[0]=min;
a[i]=temp;
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
19. 统计一行文本的单词个数
#include <stdio.h>
int main(){
int count=0;
char ch;
ch=getchar();
while(ch!='\n'){
if(ch!=' '){
ch=getchar();
if(ch==' '||ch=='\n')
count++;
continue;
}
else if(ch==' ')
ch=getchar();
}
printf("%d",count);
return 0;
}
20. 选择法排序
#include <stdio.h>
int main(){
int n,a[10],i,j,t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(a[j]>a[i]){
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0;i<n;i++){
printf("%d",a[i]);
if(i<n-1)
printf(" ");
}
return 0;
}
21. 冒泡法排序
#include <stdio.h>
int main(){
int N,K,t;
int i,j;
int a[100];
scanf("%d %d",&N,&K);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<K;i++){
for(j=0;j<N-i-1;j++){
if(a[j]>a[j+1]){
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
for(i=0;i<N-1;i++)
printf("%d ",a[i]);
printf("%d",a[N-1]);
return 0;
}
22. 字符串字母大小写转换
#include <stdio.h>
int main(){
char s[100];
int i;
gets(s);
for(i=0;s[i]!='#';i++){
if(s[i]>='A'&&s[i]<='Z')
s[i]+=32;
else if(s[i]>='a'&&s[i]<='z')
s[i]-=32;
}
for(i=0;s[i]!='#';i++)
printf("%c",s[i]);
return 0;
}
23. 字符串替换
#include<stdio.h>
int main(){
char ch,a[81];
int i,j=0;
ch=getchar();
while(ch!='\n'){
if(ch>='A'&&ch<='Z')
ch='A'+'Z'-ch;
a[j++]=ch;
ch=getchar();
}
for(int k=0;k<j;k++)
printf("%c",a[k]);
return 0;
}
24.求矩阵各行元素之和
#include <stdio.h>
int main(){
int m,n,i,j,sum;
scanf("%d %d",&m,&n);
int a[m][n];
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<m;i++){
sum=0;
for(j=0;j<n;j++){
sum+=a[i][j];
}
printf("%d\n",&a[i][j]);
}
return 0;
}
25.求矩阵的局部最大值
#include<stdio.h>
int main(){
int m,n,i,j,c=0;
scanf("%d %d",&m,&n);
int a[m][n];
//输入
for(i=0;i<m;i++){
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
//比较
for(i=1;i<m-1;i++){
for(j=1;j<n-1;j++)
if(a[i][j]>a[i-1][j]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i][j+1])
{c++;printf("%d %d %d\n",a[i][j],i+1,j+1);} //输出
}
if(c==0) printf("None %d %d",m,n);
return 0;
}
26.打印杨辉三角
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,k;
scanf("%d",&n);
int str[n][n];
for(i=0;i<n;i++)//先对最左列和对角线的元素赋值 1
{
str[i][0]=str[i][i]=1;
}
for(i=2;i<n;i++) //从第二列递推其他元素
{
for(j=1;j<i;j++)
{
str[i][j]=str[i-1][j-1]+str[i-1][j];
}
}
for(i=0;i<n;i++)
{
for(k=1;k<n-i;k++)
{
printf(" ");//按正三角形形式,打印空格
}
for(j=0;j<=i;j++)
{
printf("%4d",str[i][j]);
}
printf("\n");
}
return 0;
}