【c语言总结】总结大一新生学c的题目

总结一下之前学过的小程序,之后会用到

判断素数

int sum,m,n,i,count,flag;
	count=0;
	sum=0;
	scanf("%d%d",&m,&n);
	while(m<=n)
	{
		flag=0;
		for(i=2;i<=m;i++)
		{
			if(m%i==0)
			flag=1;
			break;
		}
	    if(flag==0)
	    {
	    	count++;
	    	sum=sum+m;
		}
		m++;
	}
	printf("%d %d",count,sum);

找到字符串中的十六进制数字并转换成十进制

	int i,i1,j,j1,sum;
	char a[MAXN],b[MAXN],n;
	
	i=0;
	sum=0;
	j=0;
	
	while((n=getchar())!='#'){
		a[i]=(char)n;
		i++;
	}
	a[i]='\0';
	i1=i;
	for(i=0;i<i1;i++){
		if(a[i]=='-'){
			b[0]='-';
			i=i+1;
			break;
		}		
		else if(a[i]>='0'&&a[i]<='9'||a[i]>='a'&&a[i]<='f'||a[i]>='A'&&a[i]<='F'){
			b[0]='+';
			break;
		}
	}
	j=1;
	for(;i<=i1;i++){
		if((a[i]>='0'&&a[i]<='9')||(a[i]>='a'&&a[i]<='f')||(a[i]>='A'&&a[i]<='F')){
			b[j]=a[i];
			j++;
			}
	}
    j1=j-1;
    j=0;
		if(b[0]=='-'){
			putchar(b[j]);
		}
		for(j=0;j<=j1;j++){
			if(b[j]>='0'&&b[j]<='9')
				sum=sum*16+(b[j]-'0');
			else if(b[j]>='a'&&b[j]<='f')
			  sum=sum*16+10+(b[j]-'a');
			else if(b[j]>='A'&&b[j]<='F')
			  sum=sum*16+10+(b[j]-'A');
		}
		printf("%d\n",sum);
		return 0;	
	}

找鞍点

	int i,i1,j,c,c1,andian,flag;
	int a[5][5];
	
	flag=0;
	for(i=0;i<4;i++){
	  for(c=0;c<4;c++){
		  scanf("%d",&a[i][c]);
	  }
	}
	
	
	for(i=0;i<4;i++){
		andian=a[i][0];
		for(c=0;c<4;c++){
			if(andian<=a[i][c]){
			  andian=a[i][c];
			  i1=i;
			  c1=c;
			}
		}
		for(j=0;j<4;j++){
			if(andian<=a[j][c1]){
				flag++;
			}
		}
		if(flag==4){
	    printf("[%d][%d] %d",i1,c1,andian);
	    break;
	  }
	  flag=0;
	}
	if(flag==0)
	printf("NO");
	return 0;
	

找出不是两个数组共有的元素

	int a[10],b[10];
	int i,j,n,m,flag;
	
	flag=0;
	scanf("%d",&n);            //数组1 
  printf("\n");
	for(i=0;i<n;i++)
	  scanf("%d",&a[i]);
	printf("\n");
	
	scanf("%d",&m);           //数组2 
	printf("\n");
	for(j=0;j<m;j++){
		flag=0;
	  scanf("%d",&b[j]);
	} 
	for(i=0;i<n;i++){
		flag=0;
		for(j=0;j<m;j++){
			if(b[j]==a[i])
			flag=1;
		}
		if(flag==0)
		printf("*%d",a[i]);
		
		
	}
	for(j=0;j<m;j++){
		flag=0;  
	  for(i=0;i<n;i++){
	    if(b[j]==a[i])
	    flag=1; 		
	 }
		if(flag==0)
		  printf("*%d",b[j]);
  }
  printf("*"); 
	  
	return 0;

选择排序法

	int a[10]={'\0'};
	int n,i,j,j1,t;
	
	printf("Enter n:");
	scanf("%d",&n);
	printf("Enter %d integers:",n);
	for(i=0;i<n;i++)
	  scanf("%d",&a[i]);
	
	for(i=0;i<n-1;i++){
		t=a[i];
		for(j=i+1;a[j]!='\0';j++){
			if(a[j]>t){
				t=a[j];
				j1=j;
				a[j1]=a[i];
		    a[i]=t;
			}
		}
	}  
	for(i=0;a[i]!='\0';i++)
	  printf("%d ",a[i]);
	return 0;  

打印杨辉三角

	int i,j,n,k;
	int a[10][10];
	
	printf("Enter n: ");
	scanf("%d",&n);
	for(i=0;i<n;i++){
		a[i][0]=a[i][i]=1;
		for(j=1;j<i;j++){
			a[i][j]=a[i-1][j-1]+a[i-1][j];
		}
	}
	for(i=0;i<n;i++){
		for(k=0;k<n-i;k++)
			  printf("  ");
		for(j=0;j<=i;j++){
			
			printf("%5d",a[i][j]);
		}
		printf("\n");
	} 
	return 0;

字符分类

	int n,i;
	char a[100];
	
	i=0;
	while((a[i]=getchar())!='\n')
	  i++;
	  
	  a[i]='\0';
	  num(a,i);
	  return 0;
	  
 } 
 
 void num(char a[100],int i){
 	int a1,b,c,d;
 	a1=0;
 	b=0;
 	c=0;
 	d=0;
 	int j;
 	for(j=0;j<i;j++){
 		if((a[j]>='a'&&a[j]<='z')||(a[j]>='A'&&a[j]<='Z')){
 		  a1++;
 	  }
 		else if(a[j]==' '){
 		  b++;
 		}
 	  else if(a[j]>='1'&&a[j]<='9'){
 	    c++;
 	  }
 	  else{
 	    d++;
 	  }
	 }
	 printf("letter=%d,blank=%d,digit=%d,other=%d",a1,b,c,d);

水仙花数

	int m,n,t,sxhs;
	
	printf("Input m: ");
	scanf("%d",&m);
	printf("Input n: ");
	scanf("%d",&n);
	if(m>n){
		m=t;
		m=n;
		n=t;
	}
	
	for(;m<=n;m++){
		sxhs=sxh(m);
		if(sxhs!=0){
		  printf("%d\n",sxhs);
	  }
	}
	return 0;
}

int sxh(int m)
{
	int sxhs=0;
	int a,b,c;
	a=m/100;
	b=m/10%10;
	c=m%10;
	if(m==a*a*a+b*b*b+c*c*c)
	  sxhs=m;
	return sxhs;

完数

	int m,n,t,y;
	printf("Input m: ");
	scanf("%d",&m);
	printf("Input n: ");
	scanf("%d",&n);
	 if(m>n){
	 	m=t;
	 	m=n;
	 	n=t;
	 }
	 for(;m<=n;m++){
	 	if(m==1)
	 	  printf("%5d",m);
	 	y=wanshu(m);
	 	if(y!=0)
	 	  printf("%5d",y);
	 }
	 return 0;

斐波那契

#define MAXN 50
int fib(int a[MAXN],int m,int n);
int main()
{
	int m,n,i,j;
	int a[MAXN];
	
	printf("Input m: ");
	scanf("%d",&m);
	printf("Input n: ");
	scanf("%d",&n);
	
	a[0]=1;
	a[1]=1;
	for(i=2;i<20;i++){
		a[i]=a[i-1]+a[i-2];
	}
	
	for(;m<=n;m++){
		j=fib(a,m,n);
		if(j!=0)
		  printf("%d ",j);
		  
	}
	return 0;
}

int fib(int a[MAXN],int m,int n){
	int i;
	for(i=0;a[i]<=n;i++){
		if(a[i]==m)
		 return a[i];

哥德巴赫猜想


int prime(int m);
int main()
 {
 	int m,i,j,z,flag,k;
 	int a,b;
  a=6;
	b=100;
 	k=0;
 	
  for(i=a;i<=b;i++){
  	if(k==5){
	    k=0; 
	    printf("\n");
    }	
 		if(i%2==0){
 		  for(j=2;j<i;j++){
 		  	flag=prime(j);
 		  	if(flag==1){
 			  	flag=0;
 			  	z=i-j;
 			  	flag=prime(z);
 			  	if(flag==1){
 				    printf("%4d=%2d+%2d",i,j,z);
            k++;
            break;
				  }
		    }
	  	}
	  } 
	}
}
	
  int prime(int m){
	
  	int i;
  	int flag;

  	flag=1;
	  for(i=2;i<sqrt(m)+1;i++){
	    if(m%i==0){
		 		flag=0;
		 		return 0;
	  	}
  	}
	 	if(flag==1)
	 		return flag;
  }

a+aa+aaa

#include<stdio.h>
int aaa(int a,int n);
int main(){
	int a,n,sum;
	printf("Input a, n: ");
	scanf("%d %d",&a,&n);
	sum=aaa(a,n);
	printf("s=%d",sum);
} 

int aaa(int a,int n){
	int i,m,s;
	s=0;
	m=0;
	for(i=1;i<=n;i++){
		m=m*10+a;
		s=s+m;
	}
	return s;
}

字符串删除

#include<stdio.h>
#include<string.h>
int main()
{
	char a[20],str[200];//a为要查找的字符,b为替换后的 
	gets(a),gets(str);
	int num1 = strlen(a);//统计字符串的长度 
	int num2 = strlen(str);
	int i, j, flag=1;
	for (i = 0; i < num2; i++)
	{
		if ((str[i] != a[0])&&(str[i] != a[0]+32)&&(str[i] !=a[0]-32))//字符串的大小写无关查找  
			printf("%c", str[i]);//若不是,按照原来的输出 
		else{	
			flag=1; 
			for (j = 0; j < num1; j++)//对比a与str中的一段是否完全相同 
			{
				if ((str[i+j] != a[j])&&(str[i+j] != a[j]+32)&&(str[i+j] != a[j]-32))
				{
					flag = 0;
					break;
				}
			}
			if (flag)//如果相同,则输出b,完成替换 
			{
				
				i = i + num1;
				i--;
			}
			else//如果不相同,按照原来的输出 
				printf("%c", str[i]);
		}
	}
	return 0;
}

指针,交换顺序

#include<stdio.h>
void  f(char  *p){
  int i,j,k=0;
  char t;
  while(*(p+k)!='\0') 
    k++;
    for(i=0;i<k;i++){
     for(j=0;j<k-i-1;j++){
         t=*(p+j);
        *(p+j)=*(p+j+1);
        *(p+j+1)=t;
       }
     }
      
   }

int  main(){
        char  st[20];
        scanf("%s",st);
        f(st);
        printf("%s",st);        
}

找最长字符串

#include <stdio.h>
#include <string.h>
int main()
{
    char s[5][100];
    int i;
    char *sp;
    
    for (i=0; i<5; i++) {
        scanf("%s",&s[i][100]);
        }
    sp=&s[0][100];
    for (i=1; i<5; i++) {
        if (strlen(&s[i][100])>strlen(sp)) {
            sp=&s[i][100];
        }
    }
    printf("%s",sp);
}

时分秒

#include<stdio.h>
struct time{
	int h;
	int m;
	int s; 
};
int main(){
	int n;
	struct time front,after;
	scanf("%d:%d:%d",&front.h,&front.m,&front.s);
	scanf("%d",&n);
	after.s=front.s+n;
	while(after.s>=60){
			after.s=after.s-60;
			front.m++;
	}
	while(front.m>=60){
		front.m=front.m-60;
		front.h++;
	}
	if(front.h>=24)
		front.h=front.h-24;
	
	after.m=front.m;
  after.h=front.h;
  printf("%d:%d:%d",after.h,after.m,after.s);
	return 0;
}

文件,字符输入

#include<stdio.h>
#include<stdlib.h>
int main(){
	FILE *fp;
  char ch[20]={'\0'};
  int i=0;
	if((fp=fopen("f3.txt","w"))==NULL){
		printf("File open error!\n");
		exit(0);
	}
	while(1){
	  scanf("%c",&ch[i]);
		if(ch[i]=='\n')
		  break;
		i++;
	} 
	fputs(ch,fp);
	if(fclose(fp)){
		printf("can not close the file!\n");
		exit(0);
	}
	return 0;
}

打印爱心~~~

#include<stdio.h>
int main()
{
   printf("      ****         ****\n");//打印第一行
   printf("   *********     *********\n");//打印第二行
   printf(" ************* *************\n");//打印第三行
   int i,j;//定义变量
   for(i=0;i<3;i++)//打印4-6行,一共3行,因此i小于3
   {
     for(j=0;j<29;j++)//限制每行输出*的个数
     {
      printf("*");//这三行只打印*号,无空格输出
    }
     printf("\n");//打印完一行需要进行换行
  }
  for(i=0;i<7;i++) //打印7-13行,一共7行,因此i小于7
   {
     for(j=0;j<2*(i+1)-1;j++)//这个for循环和下面的for是并列的
     {
      printf(" ");//打印空格
    }
     for(j=0;j<27-i*4;j++)//读者可以带入几个数找出条件
     {
      printf("*");//打印*
    }
     printf("\n");
    }
  for(i=0;i<14;i++)//打印最后一行的*
  {
    printf(" ");//打印空格
  }
   printf("*\n") ;//打印*
 return 0;
}

#感谢收看。😃
这些都是大一老师布置的题目,有的太简单就没放上来。
现在开始学java了,朋友问我c的题目,发现不同老师教的写法都不一样。
就写了这个文章。希望能帮助到更多听不太懂老师讲解的学生拿去作参考。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值